Verweigert Chrome Cache-Control: max-age?
Hintergrund:
- IIS 7
- AspNet 3.5 web-app
Chrome dev tools-Listen 98 Anfragen für die Startseite der web-app (aspx - + js + css + Bilder). Im folgenden requests, status-code ist 200
für css/Bilder Dateien. Keine cache-info, der browser fragt server jedes mal, wenn eine Datei aktualisiert werden muss. OK.
Im IIS 7 habe ich eingestellt HTTP-header für die cache-Steuerung, set zu 6 Stunden für die "Ressourcen" - Ordner. In Chrom, mit dev tools kann ich sehen, dass Kopf-und auch in der Antwort:
Cache-Control: max-age=21600
Aber ich bekomme immer noch 98 Anfragen... ich dachte, der browser sollte nicht verlangen, eine ressource, wenn das Ablaufdatum nicht erreicht ist, und ich hatte erwartet, die Anzahl der Anfragen zu fallen...
InformationsquelleAutor der Frage F-- | 2012-06-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es. Google Chrome ignoriert die
Cache-Control
oderExpires
header, wenn Sie eine Anfrage stellen, die sofort nach eine weitere Anforderung an den gleichen URI in der gleichen Registerkarte (durch klicken auf die Schaltfläche aktualisieren, drücken Sie die F5 - Taste oder drücken Sie Befehl + R). Es hat wohl einen Algorithmus, um zu erraten, was der Benutzer wirklich will, um zu tun.Weg zum test der
Cache-Control
header ist die Rückkehr ein HTML-Dokument mit einem link zu sich selbst. Wenn Sie auf den link, Chrome dient das Dokument aus dem cache. E. g., nennen Sie das folgende Dokument self.html:Weitere option ist, kopieren Sie die URL und fügen Sie Sie in der gleichen Registerkarte oder einer anderen Registerkarte.
UPDATE: Auf einem Chrom-Beitrag veröffentlicht am Januar 26, 2017es wird beschrieben, was war das frühere Verhalten und wie es sich verändert, indem nur die Verlängerung der wichtigste Ressourceaber nicht von der sub-Ressourcen:
In einem Facebook-post veröffentlicht am Januar 26, 2017es wird erwähnt, dass Sie gefunden Stück code wurden Chrom ungültig alle zwischengespeicherten Ressourcen nach einer POST-Anforderung:
Scheint es dies nicht mehr der Fall ist.
Schließlich ist es beschrieben, dass Firefox die Einführung
Cache-Control: immutable
um vollständig zu stoppen die Verlängerung von Ressourcen:Ich hoffe, das hilft, zu entwirren die reload-Geheimnisse.
InformationsquelleAutor der Antwort kiewic
Chrome angezeigt werden, ignorieren Sie Ihre
Cache-Control
Einstellungen wenn Sie nachladen in der gleichen Registerkarte. Wenn Sie die URL kopieren, um eine neue Registerkarte, und laden Sie es dort, Chrome, wird die Achtung der cache-control-tags und Wiederverwendung der Inhalte aus dem cache.Als Beispiel hatte ich diese Ruby-Sinatra-app:
Wenn ich ständig neu geladen in der gleichen Chrome-tab würde es die Anzeige der neuen Zeit.
Den Header wie folgt aussah:
Jedoch den Zugriff auf die gleiche URL,
http://localhost:4567/
von mehreren neuen tabs würde recyceln Sie das Vorherige Ergebnis aus dem cache.InformationsquelleAutor der Antwort slm
Nachdem ich einige tests mit
Cache-Control:max-age=xxx
:window.location.reload()
): ignoriertSo, ist die beste option während der Entwicklung ist setzen Sie den cursor in die omnibox ein und drücken Sie die EINGABETASTE anstelle der Schaltfläche aktualisieren.
Hinweis: ein rechts-Taste, klicken Sie auf aktualisieren-Symbol wird zeigen, refresh-Optionen (Normal, Schwer, Cache Leeren). Unglaublich, niemand der diese beeinflussen auf diese Kopfzeilen.
InformationsquelleAutor der Antwort sinuhepop
Wenn Chrome Entwicklertools öffnen (F12), Chrom in der Regel deaktiviert Zwischenspeichern.
Es ist steuerbar, in der Developer-Tools-Einstellungen - das ZAHNRAD-Symbol, rechts neben dem dev-tools top-bar.
InformationsquelleAutor der Antwort user3841754
Noch ein Tipp:
Vergessen Sie nicht, überprüfen Sie die "Date" - header, - wenn server hat falsche Datum/die Zeit (oder liegt in einer anderen Zeitzone) - Chrom halten anfragende Ressource wieder und wieder.
InformationsquelleAutor der Antwort kolobok