2010-06-09 5 views
7

Ich sende ein Bild mit den folgenden HTTP-Antwort-Header zurück:Wie cacht man eine Datei clientseitig, so dass der Browser aufhört, sie erneut anzufordern?

Cache-Control: private,max-age=86400 

Mein Verständnis ist, dass der Browser sollte nicht einmal für diese Datei fragt für 24 Stunden (86.400 = 60s * 60m * 24h).

Was ich bei nachfolgenden Anfragen sehe, ist, dass es immer noch nach der Datei fragt, aber ein "304 Not Modified" zurückbekommt. Das ist gut, aber ich möchte sogar diese Anfrage/Antwort entfernen.

Welcher Header ist erforderlich, um zu verhindern, dass der Browser überhaupt nach der Datei fragt, und nur blind die Datei im lokalen Cache verwenden muss, bis diese Datei abläuft?

+0

Gleiches Verhalten in allen Browsern? Es sollte damit genug sein: -s –

Antwort

2

Es hängt wirklich davon ab, wie Sie das testen. Bei Firefox 3.6 und IE8 wird durch Klicken auf einen Link und dann auf einen Link, der Sie zurück auf die erste Seite bringt, der Cache korrekt mit max-age verwendet. Wenn Sie die Return-Taste erneut im URL-Feld drücken, wird das gleiche Verhalten angezeigt.

Wenn Sie jedoch F5 drücken, werden Sie erneut nach der Datei gefragt, aber 304 Antworten werden möglich.

Wenn Sie Strg + F5 drücken, wird immer wieder nach der Datei gefragt, wobei Cache-Control und Pragma auf no-cache gesetzt sind und eine 200 Antwort erzwingen.

+0

Vielen Dank. Ich habe nicht bemerkt, dass F5 das Problem war. Wenn ich mit einem einfachen Link klicke (also ein einfaches GET), funktioniert es so, wie ich es erwartet hatte. – Deane

0

Dies kann einfach nicht zuverlässig < 5.

in HTML getan werden Sie client side storage in HTML5 verwenden könnte oder eine Browser-Erweiterung wie Gears diese Funktionalität bereitzustellen verwenden.

+0

was meinst du mit "kann man nicht zuverlässig machen"? Es gibt keine Garantie, dass der Browser die Ressource im Cache bis zum Ablauf der Zeit hält, aber es sollte mindestens für eine "Weile" bleiben :-D –

Verwandte Themen