Principe
Le 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.
![Logo](../../I/OOjs_UI_icon_alert-warning.svg.png.webp)
Configuration du serveur
La 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
Cô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.