50 votes

Le navigateur Chrome n'envoie pas l'en-tête if-modified-since au serveur

J'ai ces en-têtes envoyés au client par le serveur :

 Cache-Control:private
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html
Date:Sun, 27 Nov 2011 11:10:38 GMT
ETag:"12341234"
Set-Cookie:connect.sid=e1u...7o; path=/; expires=Sun, 27 Nov 2011 11:40:38 GMT; httpOnly
Transfer-Encoding:chunked
last-modified:Sat, 26 Nov 2011 21:42:45 GMT

Je veux que le client valide que le fichier n'a pas changé sur le serveur et envoie un "200" s'il a par ailleurs un "304".

Firefox envoie :

 if-modified-since: Sat, 26 Nov 2011 21:42:45 GMT
if-none-match: "12341234"

Pourquoi le chrome n'envoie-t-il pas la même chose lors d'une actualisation de la page ? Je suis après le comportement que .Net a en cours d'exécution :

 context.Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate)

16voto

Andy McCluggage Points 8583

D'après mon expérience, vous avez besoin de plus que de l'en-tête "Private" Cache-Control. Vous avez besoin de "Max-Age" ou "Expires" pour forcer Chrome à revalider le contenu avec le serveur.

N'oubliez pas que la revalidation ne commencera qu'une fois ces valeurs de temps écoulées, il peut donc être nécessaire de les définir sur une petite valeur.

4voto

Qeremy Points 3719

De plus ( https://stackoverflow.com/a/14899869/362780 ):

F12 > Paramètres > Général > Désactiver le cache (lorsque DevTools est ouvert) -> décochez cette case...

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