Réponses:
html5boilerplate.com inclut un fichier .htaccess bien commenté qui a de nombreux paramètres standard que vous devriez considérer. Parmi eux, des paramètres raisonnables pour expirer le contenu (Expire, E-tags, ...).
Voici la documentation sur mod_expires .
Notez que les Last-Modified
en - têtes sont des en-têtes de cache faibles. La préférence actuelle est d'utiliser des en- Cache-Control
têtes.
Google a un bon article à ce sujet.
Expire et Cache-Control: max-age. Ceux-ci spécifient la «durée de vie d'actualisation» d'une ressource, c'est-à-dire la période pendant laquelle le navigateur peut utiliser la ressource mise en cache sans vérifier si une nouvelle version est disponible à partir du serveur Web. Ce sont des «en-têtes de mise en cache puissants» qui s'appliquent sans condition; c'est-à-dire, une fois qu'ils sont définis et que la ressource est téléchargée, le navigateur n'émettra aucune demande GET pour la ressource jusqu'à ce que la date d'expiration ou l'âge maximum soit atteint.
Dernière modification et ETag. Ceux-ci spécifient certaines caractéristiques de la ressource que le navigateur vérifie pour déterminer si les fichiers sont identiques. Dans l'en-tête Last-Modified, il s'agit toujours d'une date. Dans l'en-tête ETag, il peut s'agir de n'importe quelle valeur qui identifie de manière unique une ressource (les versions de fichier ou les hachages de contenu sont typiques). Last-Modified est un en-tête de mise en cache "faible" dans la mesure où le navigateur applique une heuristique pour déterminer s'il faut récupérer l'élément du cache ou non. (Les heuristiques diffèrent selon les différents navigateurs.) Cependant, ces en-têtes permettent au navigateur de mettre à jour efficacement ses ressources mises en cache en émettant des requêtes GET conditionnelles lorsque l'utilisateur recharge explicitement la page. Les GET conditionnels ne renvoient pas la réponse complète sauf si la ressource a changé sur le serveur, et ont donc une latence inférieure à celle des GET complets.
Je recommande d'utiliser l'un Cache-Control
ou les en- Expires
têtes selon les besoins, car ce sont des en-têtes de cache puissants. Certains systèmes ignoreront les dates de dernière modification.
Vous pouvez ensuite utiliser un outil comme curl
ou http://redbot.org pour vérifier les en-têtes.
Last-Modified
têtes en l'absence d'autres instructions de mise en cache laisse la période de cache au client HTTP. Si une ressource n'a pas été modifiée depuis la Last-Modified
date, la ressource doit être considérée comme fraîche. En revanche, lorsque vous utilisez un Expires
ou un en - Cache-Control
tête, l'origine peut définir une période de fraîcheur explicite.
Expires
est un en-tête totalement inapproprié pour les ressources qui n'expirent pas. Certaines ressources peuvent être modifiées, mais pas à une certaine date d'expiration. Le point de Google est qu'ilLast-Modified
nécessite un GET conditionnel, alors qu'ilExpires
permet au cache du navigateur d'ignorer complètement le GET.