Aller au contenu

Apache/Cache

Un livre de Wikilivres.

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

Ne pas utiliser de cache pour une préproduction sous peine de ne pas voir immédiatement ses modifications.

Configuration du serveur

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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.