Apache/Cache
Principe
modifierLe cache web enregistre des pages visitées sur un serveur[1] pour les ré-afficher plus rapidement ensuite. Il doit comporter une date d'expiration qui dépend de la fréquence de changement des pages.
Ne pas utiliser de cache pour une préproduction sous peine de ne pas voir immédiatement ses modifications.
Configuration du serveur
modifierLa mise en cache peut être configurée au moyen de plusieurs modules Apache :
a2encode expires
a2encode cache
a2encode file_cache
a2encode mem_cache
a2encode cache_disk # pour Apache version 2.4
a2encode disk_cache # pour Apache version 2.2
Puis ajouter à apache2.conf :
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
<filesMatch "\.(ico|jpg|jpeg|png|gif)$">
ExpiresDefault "access plus 1 year"
</filesMatch>
ExpiresByType image/x-icon "access plus 1 day"
ExpiresByType text/css "access plus 1 day"
ExpiresByType application/javascript "access plus 1 day"
</IfModule>
<IfModule mod_cache.c>
<IfModule mod_cache_disk.c>
CacheRoot "/var/cache/apache2/"
CacheEnable disk /
CacheDirLevels 2
CacheDirLength 1
</IfModule>
<IfModule mod_mem_cache.c>
CacheEnable mem /
MCacheSize 4096
MCacheMaxObjectCount 100
MCacheMinObjectSize 1
MCacheMaxObjectSize 2048
</IfModule>
<IfModule mod_file_cache.c>
mmapfile /var/cache/apache2/index.html # Liste de page à mettre en cache
</IfModule>
</IfModule>
Enfin, recharger Apache :
service apache2 reload
Configuration du site
modifierCôté HTML, on distingue trois balises méta.
Syntaxe sans cache (les unités sont en secondes[2]) :
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate, proxy-revalidate, max-age=0, s-maxage=0, post-check=0, pre-check=0" />
<meta http-equiv="Pragma" content="no-cache, no-store" />
<meta http-equiv="Expires" content="0" />
Syntaxe avec cache[3] :
<meta http-equiv="Cache-Control" content="Private" />
<meta http-equiv="Pragma" content="" />
<meta http-equiv="Expires" content="" />
Pour voir la configuration du cache d'un site, il faut regarder l'entête HTTP, par exemple avec :
curl -I http://example.org
La durée d'expiration de la mémoire cache doit dépendre de la fréquence de rafraichissement du contenu du site. Toutefois d'une manière générale, il est recommandé de la définir à une valeur comprise entre 48 h et un an.