2010-06-09 6 views
7

I odesłać obraz z następującym nagłówku odpowiedzi HTTP:W jaki sposób buforujesz plik po stronie klienta tak, aby przeglądarka przestała się nawet zastanawiać, aby go ponownie zażądać?

Cache-Control: private,max-age=86400 

moim rozumieniu jest to, że przeglądarka nie powinien nawet poprosić o tym pliku przez 24 godzin (86,400 = 60m 60s * * 24h).

Co widzę na kolejnych wniosków jest to, że nadal prosi o pliku, ale wróci do „304 Not Modified”. To jest dobre, ale chcę usunąć nawet to żądanie/odpowiedź.

Jaki nagłówek jest wymagany, aby przeglądarka nawet nie zawracała sobie głowy pytaniem o plik i po prostu ślepo używa pliku z lokalnej pamięci podręcznej, dopóki ten plik nie wygaśnie?

+0

Takie samo zachowanie we wszystkich przeglądarkach? To powinno wystarczyć: -s –

Odpowiedz

2

To wszystko zależy od tego, w jaki sposób testujesz to. W przeglądarkach Firefox 3.6 i IE8 kliknięcie linku, a następnie łącza, które przeniesie Cię z powrotem na pierwszą stronę, będzie korzystać z pamięci podręcznej poprawnie z maksymalnym wiekiem. Ponowne naciśnięcie klawisza Return w polu adresu URL spowoduje wyświetlenie tego samego zachowania.

Jednak uderzenie F5 zapyta ponownie do pliku, ale pozwala 304 odpowiedzi.

Uderzanie Ctrl + F5 zawsze zapytać ponownie do pliku, z Cache-Control oraz Pragma ustawiona na no-cache, zmuszając odpowiedź 200.

+0

Dziękuję bardzo. Nie zdawałem sobie sprawy, że uderzenie w F5 było problemem. Kiedy testowałem za pomocą prostego kliknięcia linku (czyli prostego GET), działa tak, jak tego oczekiwałem. – Deane

0

To po prostu nie da się zrobić w sposób wiarygodny HTML < 5.

Można użyć client side storage w HTML5 lub użyć rozszerzenie przeglądarki, takie jak Gears, aby zapewnić tę funkcjonalność.

+0

co masz na myśli mówiąc "nie da się zrobić rzetelnie"? Nie ma gwarancji, że przeglądarka zatrzyma zasoby w pamięci podręcznej do czasu wygaśnięcia, ale powinna zachować ją przynajmniej przez jakiś czas :-D –

Powiązane problemy