Diaporama de notions

Caches

Acte 5 · La cache qui absorbe tout : Varnish s'installe en avant du web et absorbe les demandes répétées avant qu'elles ne coûtent quoi que ce soit.

420-5A4-MT · Module 2 · Varnish
Notion 6 · Panorama

La carte avant la route

Cache Il vit où ? Il garde quoi ? Il brille quand...
Varnish Devant le serveur web (sa machine ou la même) Des réponses HTTP complètes ...la même page est demandée par tout le monde.
mod_cache Dans Apache Des réponses HTTP ...on veut un cache HTTP sans machine de plus.
OPcache Dans PHP Le bytecode compilé des scripts ...toujours : chaque page PHP en profite.
APCu Dans PHP (local à la machine) Des objets et variables ...une seule machine web génère des pages personnalisées.
Memcached Service en RAM (même ordinateur ou machine dédiée) Objets, sessions, résultats de requêtes ...plusieurs serveurs web partagent le même cache.

Le cache HTTP court-circuite l'exécution; le cache d'exécution la rend moins chère. Un site occupé veut les deux.

Où en est l'histoire

Pourquoi recuisiner le même plat ?

L'encyclopédie et les fiches de règles deviennent virales : des centaines de milliers de lectures des mêmes pages fixes. À chaque visite, WordPress recalcule la même page - PHP s'exécute, MySQL répond, Apache assemble - pour servir un résultat identique à celui d'il y a deux secondes. Cent mille lectures, cent mille cuissons du même plat. L'entreprise engage un serveur dont le seul métier est de garder les plats chauds : une cache.

Notion 1

Le cache HTTP

Une cache garde en mémoire les réponses déjà servies, pour les redonner instantanément sans refaire le travail.

Hit

La page demandée est déjà dans la cache : réponse immédiate, zéro travail pour le web et la base. C'est le but.

Miss

La page n'y est pas (ou est périmée) : la cache la demande au serveur web, la sert, et la garde pour les suivants.

Durée de vie

Chaque entrée expire après un délai (TTL) : l'équilibre entre fraîcheur du contenu et travail épargné.

Notion 2

Varnish, l'accélérateur HTTP

Varnish est une cache HTTP professionnelle qui se place EN AVANT du serveur web. Les visiteurs parlent à Varnish; Varnish ne parle à Apache que lorsqu'il le faut.

# l'architecture change de sens :
visiteur ──► varnish30 (port 80) ──► http20 (backend) ──► mysql10
Notion 3

Les deux fichiers qui font tout

# 1. le service : sur quelle adresse Varnish ecoute
sudo systemctl edit varnish.service
ExecStart=/usr/sbin/varnishd ... -a ADRESSE_DE_VARNISH:80 ... -f /etc/varnish/default.vcl
# 2. le backend : a qui Varnish demande les pages
sudo nano /etc/varnish/default.vcl
backend default { .host = "ADRESSE_DE_HTTP20"; .port = "80"; }

Et de son côté, Apache cesse d'écouter sur toutes les adresses : il se replie sur la sienne (ports.conf et VirtualHost). Chaque serveur sa porte, chaque porte son rôle.

Notion 4

Observer sa cache

sudo varnishstat
# cache_hit contre cache_miss : le rendement de votre cache
sudo varnishtop
# le palmares des URL les plus demandees
sudo systemctl restart varnish.service
# la purge totale : cache vide, tout redevient un miss

Le rapport hits sur miss est le bulletin de santé de la cache : un site vitrine bien mis en cache dépasse facilement 90 % de hits.

Notion 5 · Le piège

Tout ne se met pas en cache

À retenir

Avant de passer au laboratoire

Au laboratoire : varnish30 s'installe en avant de http20, WordPress apprend sa nouvelle adresse, et le test de charge de la partie 3 devrait faire fondre le temps moyen de réponse. Les chiffres le diront.

Version de départ · ce diaporama va s'enrichir