Expires
et
Cache-Control
en fonction de critères spécifiés par
l'utilisateurCe module permet de contrôler la définition de l'en-tête HTTP
Expires
et la directive max-age
de
l'en-tête HTTP Cache-Control
dans les réponses du
serveur. La date d'expiration peut être définie soit par rapport à
la date de dernière modification du fichier source, soit
par rapport à l'heure d'accès du client.
Ces en-têtes HTTP permettent d'informer le client quant à la validité et à la persistence du document. S'il est présent dans le cache, et tant qu'il n'est pas arrivé à expiration, le document sera servi à partir de ce dernier, plutôt qu'à partir du document source. Après expiration, la copie du document dans le cache sera considérée comme "expirée" et donc invalide, et une nouvelle copie devra être obtenue à partir du document source.
Pour modifier les directives de contrôle du cache autres
que max-age
(voir la RFC
2616 section 14.9), vous pouvez utiliser la directive
Lorsque l'en-tête Expires
est déjà présent dans la
réponse générée par le serveur, par exemple s'il a été créé par un
script CGI ou un serveur original via un serveur mandataire, ce
module n'ajoute aucun en-tête Expires
ou
Cache-Control
.
Pour une syntaxe plus lisible, on peut aussi utiliser les
directives
où base peut être :
access
now
(équivalent à
'access
')modification
Le mot-clé plus
est optionnel. num doit
correspondre à une valeur entière [compatible avec
atoi()
], et type peut être choisi parmi :
years
months
weeks
days
hours
minutes
seconds
Par exemple, pour faire expirer par défaut les documents 1 mois après leur accès, on peut utiliser une des directives suivantes :
La date d'expiration peut être définie plus précisément en ajoutant plusieurs clauses 'num type' :
Notez que si vous utilisez une configuration basée sur la date de modification, l'en-tête Expires ne sera pas ajouté à un contenu qui ne provient pas directement d'un fichier sur disque ; et ceci tout simplement parce que ce type de contenu ne possède pas de date de modification.
Expires
Cette directive permet d'activer ou de désactiver la génération
des en-têtes Expires
et Cache-Control
pour
les documents concernés ; en d'autres termes, si cette directive se
trouve dans un fichier .htaccess
, par exemple, elle ne
s'applique qu'aux documents générés à partir du répertoire
considéré. Si elle est définie à Off
, les en-têtes ne
seront générés pour aucun document du domaine considéré (sauf
surcharge de la configuration à un niveau inférieur, comme un
fichier .htaccess
qui l'emporterait sur le fichier de
configuration du serveur). Si elle est définie à On
,
les en-têtes seront ajoutés aux documents servis en fonction des
critères définis par les directives
Notez que cette directive ne permet pas de garantir qu'un en-tête
Expires
ou Cache-Control
sera généré. Si
les critères ne sont pas respectés, aucun en-tête ne sera généré, et
la directive produira le même effet que si elle n'avait pas été
définie.
Expires
en fonction du type MIMECette directive permet de définir la valeur de l'en-tête
Expires
et de la directive max-age
de
l'en-tête Cache-Control
générés pour les documents du
type MIME spécifié (par exemple, text/html
). Le second
argument définit le nombre de secondes qui seront ajoutées à un
temps de base pour calculer la date d'expiration.
Cache-Control: max-age
se calcule en soustrayant la
date de la requête de la date d'expiration et s'exprime en
secondes.
Le champ <code>
permet de spécifier
quel temps doit être utilisé comme temps de base; M
signifie que c'est la date
de dernière modification du fichier qui doit être utilisée comme
temps de base, alors que A
signifie que c'est le moment
où le client a accédé au document qui doit être utilisé comme temps
de base.
La différence d'effet est subtile. Si on utilise M
,
toutes les copies existantes du document dans tous les caches
expireront au même moment, ce qui peut convenir par exemple pour une
notice hebdomadaire qui correspond toujours à la même URL. Si on
utilise A
, la date d'expiration sera différente pour
chaque client, ce qui peut convenir pour des fichiers d'images qui
ne changent pas très souvent, et en particulier pour un ensemble de
documents en relation qui se réfèrent tous aux mêmes images (ces
images sont alors accédées de manière répétitive dans un intervalle
de temps assez court).
Notez que cette directive ne produit d'effet que si
ExpiresActive On
a été spécifié. Elle l'emporte, mais
seulement pour le type MIME spécifié, sur toute date
d'expiration définie par la directive
Vous pouvez aussi définir le mode de calcul de la date d'expiration en utilisant une syntaxe alternative, comme décrit plus haut dans ce document.
Cette directive permet de définir le mode de calcul par défaut de
la date d'expiration pour tous les documents du domaine considéré.
Elle peut être annulée pour certains types de documents par la
directive