Mise en cache

Optimisation du cache navigateur

Nativement, les navigateurs plus ou moins récents mettent les fichiers en cache, afin d'économiser de la bande passante. Par contre, à chaque chargement, il vérifie si le fichier a changé. En indiquant combien de temps le fichier dois rester en cache, on économise un aller-retour serveur-navigateur et la réponse 304 : fichier non changé.

Nous allons donc utiliser les header Expires et Cache-control afin de gérer les dates d'expiration des fichiers.

De cette manière, le navigateur ne demandera plus au serveur si il y a lieu de rafraichir les fichiers pendant un temps défini. Quelque soit votre site, il y a une flopée de fichiers qui ne changent quasiment jamais (thème, images...).

Pour le coup, on met souvent un date d'expiration très lointaine, 1 an ou 2. C'est ce qu'on appelle une Far Future Expire Headers.

Le gain n'est pas négligeable puisque le navigateur obtient ses fichiers plus rapidement et le serveur est moins sollicité.

Mise en place du cache (Apache)

Le plus simple est d'utiliser le mod_expires d'Apache via le .htaccess.

<ifmodule mod_expires.c="">
ExpiresActive on

# exemples par type mime
ExpiresByType image/jpg "access plus 2 years"
ExpiresByType text/css "modification plus 2 years"

# exemples par extension
<FilesMatch ".(jpg|jpeg|png|gif|swf|js|css|png)$">
Header set Cache-Control "max-age=604800, public"


# 1 semaine max-age=604800
# 1 an max-age=29030400
</ifmodule>

 

Précaution avant de mettre en cache

Versionnez vos fichiers (exemple theme20100101.css). Ainsi, lorsque vous le modifierez et que vous changerez de version, le cache sera rafraichi. Cela implique la mise à jour du code, mais fonctionne parfaitement.

Sources / Pour aller plus loin

Ressource Mise en cache

A propos de l'auteur

Jacques Terrier

Jacques Terrier AKA Cobolian : Premier site en 98, puis quelques belles références à son palmarès. Fort de son background technique et marketing, Jacques est consultant e-commerce.