Chrome browser ist nicht senden if-modified-since-header zum server
Habe ich diese Header gesendet werden sollen, an den client durch den server:
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
Ich möchten, dass der client überprüfen, dass die Datei nicht geändert hat, auf dem server und senden Sie "200", wenn es ansonsten eine "304".
Sendet Firefox:
if-modified-since: Sat, 26 Nov 2011 21:42:45 GMT
if-none-match: "12341234"
Warum nicht chrome das senden derselben auf eine Aktualisierung der Seite? Bin ich nach der Verhalten .Net hat ausgeführt:
context.Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate)
InformationsquelleAutor der Frage Asken | 2011-11-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meiner Erfahrung braucht man mehr als nur die "Privaten" Cache-Control-header. Sie müssen entweder "Max-Age" oder "Läuft ab" zu zwingen Chrome revalidate content mit dem server.
Denken Sie daran, dass die Verlängerung erst nach dieser Zeit Werte, die vergangen sind, so dass Sie eventuell benötigen, um eingestellt werden, um einen kleinen Wert.
InformationsquelleAutor der Antwort Andy McCluggage
Nachdem er den halben Tag auf dieser habe ich gestern aufgestöbert, was verursacht wurde das Problem für mich. So lange, wie Sie die Chrome-Objekt-Inspektor/Debugger-Client/Netzwerk überwachung/Ding, das erscheint, wenn Sie drücken Sie F12, Chrom nicht senden cache-request-Header. Zeitraum. (update: in neueren Versionen von Chrome, dort ist eine checkbox "cache Deaktivieren"). Auch wenn Sie nicht über die "Netzwerk" - Reiter öffnen (ex: die javascript-Konsole öffnen) ist dieses Feld noch deaktiviert alle Cachen.
Seine traurig, weil das Debuggen dieser von der client-Seite verpflichtet Sie zu verlassen, das Netzwerk-panel öffnen, um zu sehen welche Header gesendet werden und empfangen werden, und was sind codes zurückgegeben. Ohne das Netzwerk " öffnen, dort ist keine Weise, zu wissen, wenn der Inhalt zwischengespeichert wird von der client-Seite.
Wenn Sie Graben sich in Ihre server-access-logs, werden Sie bemerken, dass Ihr server zurückgeben 304s(Cache-Inhalt) die minute, die Sie schließen Sie das debug-Fenster auf Ihrem Chrome-client. Hoffe, das hilft.
Chrome 24.0.1312.57
InformationsquelleAutor der Antwort Mark
Fand ich eine Antwort auf dieses Verhalten bei der Verwendung von HTTPS, dachte, ich würde teilen, was ich gefunden habe. Sie nicht angeben, ob Sie anfordern über HTTP oder HTTPS.
"Die Regel ist eigentlich ganz einfach: alle Fehler mit dem Zertifikat bedeutet, die Seite wird nicht gecacht werden."
https://code.google.com/p/chromium/issues/detail?id=110649
Wenn Sie ein selbst-signiertes Zertifikat, auch wenn Sie sagen, Chrome hinzufügen einer Ausnahme für die Sie es so, dass die Seite geladen wird, werden keine Ressourcen aus, die Seite wird zwischengespeichert, und die nachfolgenden Anforderungen wird nicht mit einem If-Modified-since-header.
InformationsquelleAutor der Antwort Neek
Zusätzlich (https://stackoverflow.com/a/14899869/362780):
F12 > Einstellungen > allgemein - > Disable-cache-Speicher (während DevTools offen ist) -> deaktivieren Sie diese...
InformationsquelleAutor der Antwort K-Gun
Ich weiß, diese Frage ist zwar alt, aber immer noch..
Ich habe bemerkt, dass chrome merkt sich die Letzte Aktualisierung, die Sie vorgenommen haben. Also, wenn Sie drücken Sie Strg+Umschalt+r (aktualisieren und löschen von cache-Speicher), und drücken Sie Strg+r (nur aktualisieren), chrome hält auf dem löschen von cache und nicht die 304 in der Antwort erhalten. Es gibt ein workaround dafür. Drücken Sie Strg+Umschalt+r und dann gehen Sie auf die Adressleiste, fokussieren Sie und drücken Sie die EINGABETASTE. Wenn Ihr etags korrekt eingestellt sind, und Ihr server ist bereit zu dienen, 304, sehen Sie einen neuen Antwort-code in den debugger - 304. so funktioniert es.
InformationsquelleAutor der Antwort M K
wenn Sie https verwenden ,bitte überprüfen Sie die Zertifizierung ist verwendet worden auf der anderen Seite, irgendwelche Fehler feststellen, von der Zertifizierung blockieren den Weg website über cache.
InformationsquelleAutor der Antwort Ed Huang