Nous avons une application React traditionnelle, vaste et complexe, que nous construisons depuis deux ans. Elle charge un index.html, injecte du javascript et obtient des données d'une API comme d'habitude. Malheureusement, les temps de chargement à froid sont assez mauvais (5 à 7 secondes en moyenne). Une fois que tout est chargé, c'est rapide comme d'habitude, mais les temps de chargement à froid nous tuent dans certaines pages "critiques". Il s'agit de nos pages utilisateurs publiques, au format : https://mywebsite/userId
Nous cherchons un moyen d'accélérer considérablement les temps de chargement pour ces itinéraires, avec des méthodes qui vont au-delà de la division du code ou de l'optimisation des ressources. Nous le faisons déjà, et nous servons notre application à partir d'un CDN.
Nous avons envisagé de créer des "instantanés" statiques de ces pages utilisateur, que nous devons charger très rapidement en utilisant quelque chose comme react-static, et de les servir en tant que versions statiques pour les hydrater plus tard. Réécrire notre projet en utilisant quelque chose comme next.js ou gatsby n'est pas une option car cela impliquerait trop de travail. SSR n'est pas non plus une option car tout notre backend est codé en Django plutôt qu'en Node.js.
Sommes-nous sur la bonne voie ? Est-il possible / utile d'utiliser react-static (ou un outil similaire) pour faire cela ? Il y a beaucoup de documentation sur la façon de créer des projets react-static à partir de zéro, mais rien sur la façon de convertir un projet existant, même s'il s'agit juste d'un petit sous-ensemble de routes comme nous en avons besoin.
De même, lorsque les données changent sur nos pages utilisateur, comment déclencher une "reconstruction" de l'instantané approprié ? Les utilisateurs ne mettent pas leurs données à jour très souvent, environ 3 ou 4 fois par mois, mais nous avons 3 000 utilisateurs, ce qui fait une moyenne de 15 mises à jour par heure. Pouvons-nous déclencher uniquement une reconstruction des itinéraires qui ont réellement changé ?