Nous allons voir dans cet article une problématique (désagréable :)) que nous avons eue lorsque nous avons développé notre nouveau site web.
GatsbyJS est un formidable framework qui permet de développer des applications et des sites web très rapidement et qui est extrêmement performant en utilisant le framework React.
Lors de la 2e version de notre site web réalisée dans cette technologie, nous avons eu des problèmes de performance avec Google Page Speed. Nous avons mis un long moment à comprendre pourquoi notre CLS était moins beau que d'habitude.
Pour rappel, le CLS (Cumulative Layout Shift) mesure le temps pendant lequel des changements s’opèrent lors du rendu de votre page. En gros, l’idée est de minimiser l’effet du mouvement sur le site avant d'être stable.
Notre objectif : avoir toujours presque 100% sur Google Page Speed. Or, depuis quelques semaines ce temps était passé en territoire orange, c’est-à-dire pas terrible !
D’ailleurs petite remarque, on a l’impression de se battre contre un titan avec cet outil, car chaque mois, la barre à atteindre est plus haute !
A priori le fonctionnement de GatsbyJS est le suivant :
En regardant de plus près GatsbyJS utilisait le framework React pour aller chercher les données et construire la page côté navigateur. Ceci implique que la page mettait plus de temps à être calculée : le CLS était mécaniquement dégradé.
En regardant en détail dans le code et en recherchant de la documentation sur Internet, nous nous sommes aperçus que GatsbyJS, de manière transparente, déterminait sur chacune des pages s'il était possible de la générer en amont (SSR - server side rendering) ou s'il était nécessaire de la générer at runtime.
En nous penchant sur le sujet, nous avions utilisé les méthodes useEffect ou useState pour les générer des sommaires de l’article en se basant sur les h1 et h2 et h3… Et en effet, ces méthodes se basent sur la page Rendered côté navigateur…
C’est évident une fois qu’on l'a trouvé… Non ?
En supprimant l'utilisation de ces méthodes et en pré-calculant le sommaire côté serveur sans utiliser ces méthodes, nous avons constaté lors de la phase de build, que les pages étaient effectivement remplies du contenu précalculé par GatsbyJS. Nous avons relancé des analyses Google Page Speed et effectivement la performance CLS était bien meilleure.
C'est évident que GatsbyJS était obligé de faire ce qu'il faisait, mais ce n'était pas si évident que ça pour le développeur. En tout cas on s'est bien fait avoir. Il me paraîtrait très intéressant que lors de la compilation de GatsbyJS, on puisse avoir l'information de savoir si la page est entièrement calculée Server Side du côté navigateur.
En tout cas, ce qui est clair, c'est qu'il n'est pas pertinent d'utiliser ces méthodes si vous souhaitez avoir une performance maximale sur Google Page Speed. Nous avons néanmoins utilisé ces méthodes pour certaines pages du site lorsque nous avions des formulaires et où des filtres, là où nous avions réellement besoin de toute la puissance de ReactReact est un framework de développement JavaScript populaire..
En conclusion : faites bien attention si vous souhaitez utiliser useEffect ou useState lors de votre développement sur GatsbyJS.
Pour discuter de votre projet Gatsby, n'hésitez pas à nous contacter !
Pourquoi entre WordPress et les développeurs, ce n’est pas toujours le grand amour ? On vous donne quelques pistes pour comprendre le point de vue des développeurs sur la question :)
Tuto : JasperReports et JBoss 7 – package net.sf.jasperreports.engine does not exist
La convention WeAreDevelopers 2024 s'est déroulée ce juillet à Berlin. Comme d'habitude depuis plusieurs années maintenant, AXOPEN était présent à l'évènement ! C'était l'occasion de découvrir les technologies de demain et de discuter des avancées des différents acteurs de la scène informatique. Dans cet article, nous allons nous focaliser sur l'un des sujets abordés lors de la convention : le langage de programmation Java. Quelles sont ses nouveautés ? Est-il toujours pertinent d'utiliser Java en 2024 ? C'est ce que nous allons voir aujourd'hui !