2016-01-13 6 views
5

Wir haben festgestellt, dass Chrome Dateien lokal zwischenspeichert und nicht einmal eine Anfrage an unseren Server sendet, um zu prüfen, ob es eine neuere Version der JavaScript-Datei gibt.Verletzt Chrome die Standards beim Caching?

Beispiel für HTTP-Response-Header für eine js-Datei, dass Google Cache:

Accept-Ranges:bytes 
Access-Control-Allow-Headers:Content-Type 
Access-Control-Allow-Methods:GET, POST, PUT, DELETE, OPTIONS 
Access-Control-Allow-Origin:* 
Content-Encoding:gzip 
Content-Length:5479 
Content-Type:application/javascript 
Date:Tue, 12 Jan 2016 22:46:07 GMT 
ETag:"7d68e1ceb647d11:0" 
Last-Modified:Tue, 05 Jan 2016 12:44:25 GMT 
Server:Microsoft-IIS/8.5 
Vary:Accept-Encoding 
x-robots-tag:noindex 

Ist es gültig, dass Chrome die Datei zwischengespeichert? Es gibt keine Cache-control Header oder etwas, das deklariert, dass die Datei lokal zwischengespeichert werden kann, es hat nur ETag und Last-Modified.


BTW

Gibt es eine Möglichkeit (vielleicht einen Header) Chrome anweisen, zu überprüfen, ob die Cache-Datei ohne Anfügen Version an die Dateinamen hat dich geändert? Das Setzen von No-Cache ist keine Option, da ich möchte, dass es zwischengespeichert wird, aber ich möchte die ETag- und Last-Modified-Header verwenden, wie es sollte.

+0

Ich bin nicht die wichtigste Frage zu beantworten, aber wissen Sie davon? http://StackOverflow.com/a/7000899/704097 –

+0

Auch möglicherweise verwandt: http://StackOverflow.com/Questions/8294034/Chrome-Browser-is-Not-Sending-Fo-modified-Since-Header-to- Server –

+0

@ Miquel, ja, ich kenne diese Option in den Dev-Tools. Aber ich kann nicht wollen, dass meine Benutzer es benutzen und den gesamten Cache meiner Seite löschen ... – gdoron

Antwort

1

Sofern nicht ausdrücklich durch eine Cache-Steuerung beschränkt (Abschnitt 14.9) Richtlinie kann ein Caching-System speichert immer eine erfolgreiche Antwort als Cache-Eintrag (Abschnitt 13.8 sehen), kann es zurück, ohne Validierung wenn es frisch, und KÖNNEN es nach erfolgreicher Validierung zurückgeben.

Sie können immer die Anweisung must-revalidate verwenden.

Wenn das Must-revalidate-Direktive in einer Antwort vorliegt empfangen durch einen Cache, muss dieser Cache den Eintrag nicht verwenden, nachdem es abgestanden wird, ohne zuerst auf eine nachfolgende Anforderung reagieren es mit der Ursprungsserver Revalidierung .

Source

+0

Hmm ... Ich bin neugierig zu wissen, warum Sie aufhören zu quotieren, bevor die Spezifikation sagt, dass es für Caches erwartet nicht zu cachen Antworten, bei denen kein Hinweis darauf vorliegt, dass die Antwort zwischengespeichert werden kann. "_Wenn mit einer Antwort weder ein Cache-Validierer noch eine explizite Ablaufzeit verbunden ist, erwarten wir nicht, dass sie im Cache gespeichert wird, aber bestimmte Caches können diese Erwartung verletzen_ – gdoron

Verwandte Themen