J'ai quelques requêtes liées à Cache-Control.
Si je spécifie Cache-Control max-age=3600, must-revalidate
pour un fichier html/js/images/css statique avec l’en-tête Last Modified défini dans l’en-tête HTTP:
a) Si le serveur inclut cet en-tête:
Cache-Control "max-age=3600, must-revalidate"
il indique aux caches client et caches proxy qu’une fois le contenu obsolète (plus de 3 600 secondes), ils doivent revalider auprès du serveur Origin avant de pouvoir servir le contenu. Cela devrait être le comportement par défaut des systèmes de mise en cache, mais le must-revalidate
directive rend cette exigence sans ambiguïté.
b) Le client doit revalider. Il pourrait revalider en utilisant le If-Match
ou If-None-Match
en-têtes avec un ETag, ou il pourrait utiliser le If-Modified-Since
ou If-Unmodified-Since
en-têtes avec une date.
une. Regardez l’onglet ‘Stats’ sur cette page et voyez ce qui se passe.
b. Après expiration, le navigateur vérifiera sur le serveur si le fichier est mis à jour. Sinon, le serveur répondra avec un 304 Not Modified
en-tête et rien n’est téléchargé.
Vous pouvez vérifier ce comportement vous-même en consultant le panneau "Net" de Firebug ou d’outils similaires. Entrez simplement l'URL dans la barre d'adresse et comparez le nombre de demandes HTTP avec le nombre de demandes lorsque votre cache est vide.
Les réponses fournies sont incorrectes, du moins pour les navigateurs Web en 2019.
"Après expiration, le navigateur vérifiera sur le serveur si le fichier est mis à jour" <- pas vrai
J'ai un fichier statique avec "Cache-Control: public, doit revalider, max-age = 864000" et les deux Chrome et Firefox font une demande à chaque fois (et obtiennent un message 304 Non modifié à chaque fois).