La mise en cache HTTP est l’un des leviers les plus efficaces pour accélérer un site. Elle évite au navigateur de télécharger plusieurs fois les mêmes ressources et permet aux CDN de servir des réponses sans solliciter l’origine à chaque requête.
Mais un mauvais en-tête de cache peut aussi créer des bugs très pénibles : page privée visible trop longtemps, panier WooCommerce figé, ancien CSS conservé, API qui renvoie des données périmées, ou fichier JavaScript jamais mis à jour. Bref, le cache est un accélérateur. Pas une baguette magique. Et il mord si on le configure mal.
Voici comment envoyer les bons en-têtes HTTP avec PHP, selon le type de contenu : fichiers statiques, HTML dynamique, API, pages privées, WordPress et WooCommerce.
Le rôle des en-têtes HTTP de cache
Quand un navigateur demande une ressource, le serveur peut indiquer comment cette réponse doit être conservée, réutilisée ou revalidée.
Les principaux en-têtes concernés sont :
| En-tête | Rôle |
|---|---|
Cache-Control | Définit les règles de cache modernes |
Expires | Ancien mécanisme basé sur une date d’expiration |
ETag | Identifiant de version permettant la revalidation |
Last-Modified | Date de dernière modification utilisée pour revalider |
Vary | Indique que la réponse varie selon certains en-têtes de requête |
Aujourd’hui, Cache-Control est le plus important. Expires peut rester utile pour compatibilité, mais il ne doit plus piloter toute votre stratégie.