Ich habe eine Seite, die eine Menge Bilder, CSS und Javascript geladen. Ich habe einen Far-Futures-Expires-Header hinzugefügt und Cache-Control für diese externen Abhängigkeiten öffentlich gesetzt, sodass sie zwischengespeichert werden sollten. Aber jedes Mal, wenn ich eine Post/Redirect/Get chrome versuche, diese wieder zu laden. Dieses Verhalten ähnelt dem erneuten Laden der Seite. Ich habe ETags hinzugefügt und handle den If-None-Match-Header, der ein wenig hilft, aber es erzeugt immer noch zu viele nutzlose Anfragen.Vollständige Seite neu laden auf Post/Redirect/Ignorieren Cache-Steuerelement
Wie kann ich Chrom und Safari sagen, um die Dateien aus dem Cache zu bekommen?
chrome NOK
safari NOK
firefox OK
ie OK
Siehe auch Full page reload on Post/Redirect/Get ignoring cache control auf dem Google-Support-Forum.
Klarstellung:
Ich will nicht der Browser image1.png
zweimal beantragen. Es sollte zwischengespeichert werden.
200 GET page1.html
200 GET image1.png (Cache-Control: public, Expires and ETag)
302 POST action.asp (form submitted from page1.html, redirects)
200 GET page2.html
304 GET image1.png (If-None-Match)
Beispiel:
ich ein einfaches Beispiel erstellt haben, das Problem zu veranschaulichen.
Headers:
Die Header ich mit dem Bild senden sind:
HTTP/1.1 200 OK
Date: Fri, 18 Jun 2010 11:30:22 GMT
Server: Apache
Cache-Control: public, max-age=86400
Expires: Sat, 19 Jun 2010 11:30:24 GMT
Etag: "123"
Content-Length: 866
Content-Type: image/png
Welche sollte es für 24 Stunden zwischengespeichert werden. Es gibt kein Vary: * oder ähnliches.
Aktualisierung: Dieses Verhalten ist jetzt auch in Safari Mobile auf iOS 4 vorhanden. Eine schreckliche Regression in der Seitenladegeschwindigkeit.
Update: Es gibt einen Bugreport über dieses Problem im Webkit Bugzilla. Bug 38690 - Submitting a POST that leads to a server redirect causes all cached items to redownload
Update: Das Problem auf iOS weiterhin besteht 4.0.1
Update: Das Problem weiterhin besteht auf iOS 4,1
Update: Das Problem auf iOS weiterhin besteht 4.2
Aktualisierung: Das Problem weiterhin besteht auf iOS 4.2.1 und in Chrome ab Version 6 bis 9.
Update: Es gibt einen Bugreport über dieses Thema im Projekt Chromium.(Sie können es Sterne zu zeigen, die Sie interessieren) Issue 68621: Post/Redirect/Get ignoring cache instructions
Update: Das Problem weiterhin besteht auf Chrome ab Version 6 bis 10. Es ist jetzt eine 9 Monate alte Fehler.
Update: Das Problem ist seit 2011-03-21 19:33:07 PST behoben. Dies spiegelt sich im Verhalten von chrome 12 (canary) wider.
Es ist ein Webkit-Problem und nicht ein spezifisches Problem mit Chrome selbst. –
@Dan, ich weiß, aber ich erwarte, dass die Google-Jungs dies in einem ihrer vielen Releases beheben. Es ist ein Patch verfügbar, der jedoch noch nicht in Chrome enthalten ist. –
Ich dachte, dass der Patch eine Regression verursacht hat, weshalb er nicht akzeptiert wurde? –