Zatrzymaj przeglądarkę, aby tworzyć żądania HTTP dla obrazów, które powinny pozostać w pamięci podręcznej - mod_expires

Po przeczytaniu wielu artykułów i kilku pytań tutajW końcu udało mi się aktywować Apachemod_expires powiedzieć przeglądarce, że musi buforować obrazy przez 1 rok.

<code><filesMatch "\.(ico|gif|jpg|png)$">
  ExpiresActive On
  ExpiresDefault "access plus 1 year"
  Header append Cache-Control "public"
</filesMatch>
</code>

I na szczęście odpowiedzi serwera wydają się poprawne:

<code>HTTP/1.1 200 OK 
Date: Fri, 06 Apr 2012 19:25:30 GMT 
Server: Apache 
Last-Modified: Tue, 26 Jul 2011 18:50:14 GMT 
Accept-Ranges: bytes 
Content-Length: 24884 
Cache-Control: max-age=31536000, public 
Expires: Sat, 06 Apr 2013 19:25:30 GMT
Connection: close
Content-Type: image/jpeg 
</code>

Cóż, pomyślałem, że to zatrzyma przeglądarkę do pobrania i nawet zapyta serwer o obrazy przez 1 rok. Ale to częściowo prawda: przyczynajeśli zamkniesz i ponownie otworzysz przeglądarkę, przeglądarka NIE pobiera obrazów z serwera jużale przeglądarka nadal pyta serwer o żądanie HTTP dla każdego obrazu.

Jak zmusić przeglądarkę do zaprzestania tworzenia żądań HTTP dla każdego obrazu? Nawet jeśli po tych żądaniach HTTP nie ma pobieranego obrazu, nadal są to żądania wysyłane do serwera to niepotrzebnie zwiększa opóźnienie i spowalnia renderowanie strony!

Już powiedziałem przeglądarce, że MUSI przechowywać obrazy w pamięci podręcznej przez 1 rok! Dlaczego przeglądarka nadal pyta serwer o każdy obraz (nawet jeśli nie pobiera obrazu) ?!

Patrząc na wykresy sieciowe w FireBug (menu FireBug> Net> Images) widzę różne zachowania w pamięci podręcznej (oczywiście zacząłem, gdy pamięć podręczna przeglądarki była całkowicie pusta, wymusiłem usunięcie pamięci podręcznej w przeglądarce przy użyciu „Wyczyść całą historię”):

Po załadowaniu strony po raz pierwszy wszystkie obrazy są pobierane (i to samo dzieje się, gdy wymuszam przeładowanie strony, klikając przycisk przeładowania przeglądarki).To ma sens!

Kiedy poruszam się po stronie i wracam do tej samej strony obrazy nie są w ogóle pobierane iprzeglądarka NIE pyta nawet serwera dla dowolnego obrazu.Ma to sens (i chciałbym zobaczyć to zachowanie również po zamknięciu przeglądarki)!

Kiedy zamykam przeglądarkę i otwieram ją ponownie na tej samej stronie, głupia przeglądarka i tak wysyła żądanie HTTP do serwera raz na obraz: NIE obniża poziomu obrazu, ale nadal wysyła żądanie HTTP, tak jakby przeglądarka pytała serwer o obrazie (serwer odpowiada 200 OK).To mnie denerwuje!

Załączam również poniższe wykresy, jeśli jesteś zainteresowany:

EDYTUJ: właśnie przetestowałem teraz także z FireFox 11.0 tylko po to, aby upewnić się, że nie jest to problem z moim FireFoxem 3.6 zbyt starym. To samo dzieje się !!!Przetestowałem również witrynę Google i witrynę Stackoverflow, obie wysyłająCache-Control: max-age=... aleprzeglądarka nadal wysyła do serwera żądanie HTTP dla każdego obrazu, gdy przeglądarka zostanie zamknięta i ponownie otwarta na tej samej stronie, po odpowiedzi serwera przeglądarka NIE pobiera obrazu (jak to wyjaśniłem powyżej), ale nadal sprawia, że ​​ta cholerna prośba zwiększa czas na wyświetlenie strony.

EDIT2: i usunięcieLast-Modified nagłówek zgodnie z sugestiątutaj, nie rozwiązuje problemu, nie ma znaczenia.

questionAnswers(10)

yourAnswerToTheQuestion