Warum browser nicht senden "If-None-Match" - header?

Ich versuche zu downloaden (und hoffentlich cache) ein dynamisch geladenes Bild in PHP. Hier sind die Header gesendet und empfangen werden:

Anfrage:

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

Antwort:

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

Wenn ich die URL neu laden, die genau die gleiche Header gesendet und empfangen werden. Meine Frage ist, was soll ich senden in meiner Antwort zu sehen, die If-None-Match - header in der konsequenten Anfrage?

HINWEIS: ich glaube, dass diese Header wurden gut lange nicht gemeldet, obwohl ich nicht sicher sein kann, aber ich denke, Browser geändert, nicht zum senden der If-None-Match header mehr (ich verwendet, um zu sehen, dass der header). Ich Teste mit Chrome und Firefox und beide scheitern zu senden der header.

  • Last-Modified: Tue, 18 Dec 2012 … und Expires: Thu, 19 Nov 1981 08:52:00 GMT widersprechen einander ein wenig, meinst du nicht?
  • Das ist, weil ich will, um sicherzustellen, dass es nicht im Cache im browser. Ich habe nur die Expires gleich Last-Modified und bekam das gleiche Ergebnis.
  • Am Anfang Ihrer Frage, die Sie sagen, Sie wollen Zwischenspeichern, und jetzt müssen Sie nicht?
  • Ich versuche, die Implementierung eines reverse-proxy-cache-system, für die, die ich brauche, um sicherzustellen, dass browser nicht den cache alles lokal. Stattdessen sollte es Fragen web server für Ressourcen, die man jedes mal braucht Sie während der Präsentation die version der aktuellen Kopie (falls vorhanden). Browser senden soll Ressourcen " aktuelle version durch ` aber es funktioniert nicht. Die Ergebnisse in herunterladen der Ressourcen zu jeder Zeit. Aber wenn der browser gelingt es, geschickt die Ressourcen-version, PHP sagen kann, wenn es nötig ist, aktualisieren Sie die Ressource, sonst wird es zu senden "304" - header, die dem browser mitteilt, seine zwischengespeicherte version.
  • Sorry, aber es sieht für mich so aus als ob Sie gerade mischen jede Art von Kopf Sie denken können, ohne jede Logik. Sie sagen Cache-Control: no-store, no-cache – erwarten aber, dass die Zwischenspeicherung geschehen?
  • Vielleicht haben Sie Recht. Nun, ich denke, diejenigen, die Cache-Control Header sollte das problem verursachen. Die Sache ist, dass ich nicht senden Sie. Sie müssen automatisch generiert werden. lassen Sie mich sehen, wenn ich kann verhindern, dass Sie gesendet wird.
  • Vielen Dank, es hat funktioniert. Würden Sie bitte die Ehre zu senden, die als Antwort (nur fürs Protokoll)?
  • Das ist echt doof, aber ich habe gerade 4 Stunden an der Umsetzung dieser mit Hilfe von verschiedenen Methoden in meiner .NET Web Api, nur um zu erkennen, mein chrome dev tools-caching deaktiviert. Stellen Sie sicher, dass Sie dies ausschalten, zum testen dieses in Chrom!!!

InformationsquelleAutor Mehran | 2013-04-09
Schreibe einen Kommentar