Bonjour,
Aujourd’hui, je vais parler de la gestion de cache pour les sites web.
Tout d’abord, je vais donner mon point de vue. Je suis contre l’application de mémoire cache à tout va. C’est devenue la solution de simplicité pour tout un chacun qui ne comprend pas ce qui se passe et veut faire croire que c’est la solution magique qui va accélérer le traitement de 30 à 70 pourcent d’après des études dont il a entendu parler.
C’est très faux, déjà, l’étude en question est surement un rapport fait par des chercheurs chez intel ou amd sur la gestion de mémoire cache interne au microprocesseur. Donc ça ne s’applique pas à un cas de plus haut niveau où mémoire cache signifie fichier pré-rendu.
Il faut bien comprendre que la gestion de cache doit être faite pour un besoin précis, en général de performances faibles et doit être mesurée, comme tout ce que l’on fait, avec des variants et des invariants lors de différentes implémentations du cache.
De nos jours, ce qui est le plus cher, c’est le temps de calcul, et ce qui est le moins cher, c’est l’espace de stockage. Pour faire un bon cache, il faut donc utiliser l’espace disque pour alléger le CPU.
Dans un site web, comment faire pour charger le disque et alléger le microprocesseur ?
Il faut transformer les pages dynamiques en pages statiques. C’est à dire faire l’inverse de ce qui est fait dans un CRM comme wordpress.
Et que font les CRM ? Et bien ils stockent toutes les pages incluant leur structure et leur contenu, dans la base de données. Bien souvent, ces pages sont des pages qui n’ont aucune interaction avec le client.
Alors, si ces pages ne changent jamais, on peut en faire une version pré-rendue et l’envoyer au client quand il la demande. C’est le principe d’un cache. Il faut prendre des mesures pour prouver que ce principe marche bien. On charge donc plusieurs fois la page sans cache, on fait la même chose, on simule avec un cache qui peut être recalculé à des intervalles réguliers. On a donc prouvé que ce cache est utile et répond à nos besoins.
Et ben non ! Et si on mesure la version avec cache contre une version du site pas stockée en base de données. C’est à dire, on fait des pages statiques qui n’ont pas besoin d’êtres mises en cache. Là on mesure la perte engendrée par le CRM et son cache.
Si la page est vraiment dynamique avec une phrase du genre « Bonjour M. DUPONT ». Dans ce cas, il faut enregistrer plusieurs versions du même fichier en cache et surement faire des accès disques pour aller chercher l’information qui distinguera le destinataire de chacune des varantes. Il faut mesurer, une mémoire cache pour ça ne sert à rien car les calculs ne sont pas assez importants pour les échanger contre de l’espace disque.
En conclusion, je dirais qu’il ne faut pas systématiser l’utilisation de cache. Il faut, au contraire se dire que si il y a du cache et peu de calculs à la base, c’est peut-être le mécanisme de gestion qui engendre des calculs et demande une solution gourmande en espace disque pour palier à cette fuite de puissance.