73 votes

Contrôle du cache HTTP max-age, must-revalidate

J'ai un couple de requêtes liées à Cache-Control.

Si je précise Cache-Control max-age=3600, must-revalidate pour une charge statique en html/js/images/fichier css, avec la Dernière modification de l'en-Tête défini dans l'en-tête HTTP:

  1. Ne navigateur proxy/cache(comme Squid/Akamai) aller tout le chemin vers serveur d'origine à valider avant max-age expire? Ou vous servir du contenu de la mémoire cache jusqu'à max-age expire?
  2. Après max-age à l'expiration (c'est-à expiration de la mémoire cache), est-il un Si-Modified-since vérifier ou est le contenu re-téléchargé à partir du serveur d'origine w/o Si-Modified-since vérifier?

56voto

james.garriss Points 3647

a) Si le serveur comprend cet en-tête:

Cache-Control "max-age=3600, must-revalidate"

il est révélateur à la fois client caches et proxy caches qu'une fois que le contenu est obsolète (âgés de plus de 3600 secondes) ils doivent à revalider le serveur d'origine avant qu'ils peuvent servir le contenu. Ce devrait être le comportement par défaut des systèmes de mise en cache, mais l' must-revalidate directive rend cette exigence sans ambiguïté.

b) Le client doit revalider. Il pourrait revalider l'aide de l' If-Match ou If-None-Match - têtes avec un ETag, ou il peut utiliser l' If-Modified-Since ou If-Unmodified-Since - têtes avec une date.

4voto

Marcel Korpel Points 14633

un. Regardez les ‘Stats' onglet sur cette page et voir ce qui se passe.

b. Après l'expiration, le navigateur va vérifier sur le serveur si le fichier est mis à jour. Si pas, le serveur répond avec un 304 Not Modified - tête et rien n'est téléchargé.

Vous pouvez vérifier ce comportement vous-même en regardant le " Net " panneau Firebug ou d'outils similaires. Ré-entrez l'URL dans la barre d'adresse et de comparer le nombre de requêtes HTTP avec le nombre de demandes lors de votre cache est vide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X