.

Fasterize est une sorte de super proxy qui est capable d’optimiser à la volée le contenu des pages web. Notre solution fonctionne à la fois pour des pages statiques et dynamiques.

Nous allons voir dans cette article comment nous avons optimisé notre moteur pour ces pages dynamiques.

Des pages dynamiques pas si dynamiques

Notre constat de départ : une partie des pages dynamiques non cachables sont en fait identiques et sont donc réoptimisées inutilement.

Par exemple, la page d’une boutique e-commerce est identique d’une navigation à l’autre tant que le client n’a pas rempli son panier. Ainsi, la page peut être à 90% du temps la même et à 10% du temps personnalisée selon la session utilisateur.

Première étape : mesurer l’impact du phénomène

La première action que nous avons mise en place est de mesurer l’importance du phénomène en calculant un hash du contenu de chaque réponse du serveur. Nous avons alors constaté que 30% des réponses aux pages dynamiques étaient identiques ! Et que donc nous pouvions économiser 30% des optimisations sur le moteur !

Nous avons ensuite cherché à savoir le temps de rétention nécessaire et réaliste pour conserver une version optimisée de la page.

Garder une page optimisée une minute semble être suffisant pour plus de 99% des pages.

68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f35303032342f3635343038332f35323466376164362d643465662d313165322d383464372d3366336531383965336332632e706e67

Deuxième étape : implémenter l’algorithme

A la fin de l’optimisation d’une page, le moteur garde donc une copie pendant une minute et cette copie est associée au hash de la réponse d’origine. Ainsi avant de faire une optimisation, le moteur vérifie qu’il n’a pas déjà optimisé la page dans la minute précédente. Si c’est le cas, le moteur sert la version déjà optimisée et évite une nouvelle optimisation. Cela reduit d’environ 60ms de temps d’optimisation sur la page et soulage le moteur.

Une limite que nous avons pu observer est que certaines pages sont artificiellement dynamiques.
En effet, il arrive que le contenu de la page diffère car un commentaire contenant la date et heure de génération de la page ou encore un paramètre aléatoire est ajouté aux URL des resources statiques (ce qui au passage casse aussi le méchanisme de cache HTTP).

Le Dynamic Cache permet donc à notre moteur d’optimisation de réduire l’overhead qu’il peut ajouter lors de l’optimisation d’une page. Il faut bien noter que cet overhead impacte surtout le TTFB (Time To First Byte) de la page et que les optimisations appliquées sur celle-ci permettent de gagner en temps de chargement global bien plus que quelques dizaines de millisecondes.