Pourquoi le navigateur n'envoie pas de “Si-None-Match” en-tête?

Je suis en train de télécharger (et, espérons-le cache) une image chargée dynamiquement en PHP. Voici les en-têtes envoyés et reçus:

Demande:

GET /url:resource/Pomegranate/resources/images/logo.png HTTP/1.1
Host: pome.local
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Ubuntu Chromium/25.0.1364.160 Chrome/25.0.1364.160 Safari/537.22
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: PHPSESSID=fb8ghv9ti6v5s3ekkmvtacr9u5

Réponse:

HTTP/1.1 200 OK
Date: Tue, 09 Apr 2013 11:00:36 GMT
Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.3.14 ZendServer/5.0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Disposition: inline; filename="logo"
ETag: "1355829295"
Last-Modified: Tue, 18 Dec 2012 14:44:55 Asia/Tehran
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: image/png

Lorsque j'ajoute l'URL, exactement les mêmes en-têtes sont envoyés et reçus. Ma question est que dois-je envoyer ma réponse pour voir la If-None-Match en-tête de la demande conséquente?

NOTE: je crois que les en-têtes ont été faites tout à l'amende n'y a pas longtemps, même si je ne peux pas être sûr, mais je pense que les navigateurs sont modifiées de ne pas l'envoyer à la If-None-Match en-tête de plus (j'ai utilisé de voir que d'en-tête). Je suis en essais avec Chrome et Firefox, et les deux ne parviennent pas à envoyer l'en-tête.

  • Last-Modified: Tue, 18 Dec 2012 … et Expires: Thu, 19 Nov 1981 08:52:00 GMT se contredisent un peu, vous ne pensez pas?
  • C'est parce que je veux faire en sorte qu'il n'est pas mis en cache dans le navigateur. Je viens de régler le Expires égal à Last-Modified et obtenu le même résultat.
  • Au tout début de votre question, vous dites que vous voulez mise en cache, et maintenant vous n'avez pas?
  • Je suis en train de mettre en œuvre un reverse proxy cache système, pour cela j'ai besoin pour s'assurer que le navigateur ne cache rien localement. Il devrait plutôt demander serveur web de ressources à chaque fois qu'il a besoin d'eux tout en présentant la version de sa propre copie en cours (si elle en a un). Le navigateur est censé envoyer des ressources " de la version actuelle par le biais de ` mais il ne le fait pas. Qui résultats dans le téléchargement de ressources à chaque fois. Mais, si le navigateur réussit à envoyé la ressource version, PHP peut dire si il est nécessaire de mettre à jour la ressource sinon il enverra "304" en-tête qui indique au navigateur d'utiliser sa version mise en cache.
  • Désolé, mais il me semble que si vous êtes juste de mélanger tout type d'en-tête que vous pouvez penser, sans aucune logique. Vous dites Cache-Control: no-store, no-cache – mais attendez-vous de la mise en cache se passer?
  • Peut-être que vous avez raison. Maintenant que j'y pense, ceux Cache-Control les en-têtes doivent provoquer le problème. Le truc, c'est que je n'ai pas les envoyer. Ils doivent être générés automatiquement. permettez-moi de voir si je peux l'empêcher d'être envoyé.
  • Merci beaucoup, ça a fonctionné. Pourriez-vous nous faire l'honneur d'envoyer une réponse (pour l'enregistrement)?
  • C'est vraiment stupide, mais je viens de passer 4 heures à la mise en œuvre de cette aide de différentes méthodes dans mon .NET Web Api, tout pour réaliser mon chrome dev tools a la mise en cache désactivé. Assurez-vous que vous désactivez cette fonction pour tester cela en Chrome!!!

InformationsquelleAutor Mehran | 2013-04-09