Nous avons apporté deux améliorations significatives au SmartCache pour le rendre plus intelligent et pour réduire son empreinte sur les performances.
Rafraichissement automatique des pages en cache
Chaque récupération des zones dynamiques d’une page « smartcachée » consiste à récupérer l’ensemble de la page à l’origine puis à séparer la partie privée de la partie publique. La partie privée est alors envoyée au navigateur.
La partie publique était jusqu’à présent non exploitée ; elle est maintenant remise en cache.
Ce changement apporte une fonctionnalité très importante : un rafraichissement passif des pages mises en cache. Cela permet d’éviter les purges manuelles de cache à chaque mise à jour d’une page produit. En effet, au fil des visites d’une même page, la page est continuellement placée dans le cache.
Chargement des zones privées en JSONP
Ce changement est plus complexe techniquement. Accrochez-vous :).
Jusqu’à présent, la récupération de la zone privée d’une page se faisait en AJAX. Le navigateur pouvait alors télécharger le CSS, le JS et les images pendant qu’il attendait la récupération de la zone privée. Dès que les éléments privés étaient récupérés en AJAX et intégrés dans le DOM, la page était considérée comme cohérente et l’exécution du JS était alors déclenchée via le DeferJS.
Le preloader HTML
Depuis plusieurs années, les navigateurs ont un pre-loader qui permet de découvrir en amont l’ensemble des ressources statiques de la page en analysant les attributs des balises contenant des URLs. Avoir une connaissance de l’ensemble des ressources de la page leur permet d’appliquer des règles de priorisation au niveau de la file de téléchargement.

Voici un exemple sur un de nos clients. La requête du smartcache est la requête 22 qui est déclenchée environ 600ms après la récupération de l’HTML.




Evolutions futures
Nous avons encore beaucoup d’idées d’amélioration du SmartCache.
Lors des prochains développements, nous souhaitons donner la possibilité à l’origine de fournir directement le JSON des éléments privées pour ne pas télécharger l’ensemble de la page à l’origine pour réduire au maximum la charge à l’origine. Nous étudions aussi la possibilité de gérer les balises ESI pour les origines les supportant.
Un autre axe d’amélioration consistera à réécrire le moteur pour ne pas appliquer d’optimisations sur le code HTML avant l’extraction des zones dynamiques. Cela réduira le temps de traitement de Fasterize et améliorera la résilience du moteur. Aujourd’hui, les pages sont optimisées avant la récupération des zones dynamiques.
Enfin, nous étudions la possibilité de spécifier des zones dynamiques optionnelles lors de la définition du smartcache. Ce cas arrive souvent pour les bandeaux pour les utilisateurs admin ou pour les nouveaux utilisateurs sans cookie.
Restez informé.e, inscrivez-vous à notre Newsletter :