Stoppen Sie den Browser, um HTTP-Anforderungen für Bilder zu senden, die zwischengespeichert bleiben sollen - mod_expires

Nachdem Sie viele Artikel und einige Fragen hier gelesen haben,Es ist mir endlich gelungen, den Apache zu aktivierenmod_expires Um dem Browser mitzuteilen, dass Bilder 1 Jahr lang zwischengespeichert werden MÜSSEN.

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

Und zum Glück scheinen die Serverantworten korrekt zu sein:

<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>

Nun, ich dachte, dies würde den Browser stoppen und den Server für 1 Jahr nach den Bildern fragen. Aber es ist teilweise wahr: UrsacheWenn Sie den Browser schließen und erneut öffnen, lädt der Browser die Bilder NICHT herunter vom Server mehr,Der Browser fragt den Server jedoch weiterhin mit einer HTTP-Anforderung für jedes Bild an.

Wie erzwinge ich, dass der Browser keine HTTP-Anforderungen mehr für jedes Bild erstellt? Auch wenn nach diesen HTTP-Anforderungen kein Bild heruntergeladen wird, handelt es sich dennoch um Anforderungen an den Server dass unnötig die Latenz erhöht und das Rendern der Seite verlangsamt!

Ich habe dem Browser bereits gesagt, dass er die Bilder 1 Jahr im Cache behalten MUSS! Warum fragt der Browser den Server immer noch nach jedem Bild ab (auch wenn das Bild nicht heruntergeladen wird) ?!

Wenn ich mir die Netzwerkgraphen in FireBug anschaue (Menü FireBug> Net> Images), kann ich verschiedene Caching-Verhalten feststellen.

Beim ersten Laden der Seite werden alle Bilder heruntergeladen (Und das Gleiche passiert, wenn ich ein Seiten-Reload erzwinge, indem ich auf die Schaltfläche "Seite neu laden" des Browsers klicke.)Das macht Sinn!

Wenn ich auf der Website navigiere und zur selben Seite zurückkehre Die Bilder werden überhaupt nicht heruntergeladen und dieDer Browser fragt NICHT einmal den Server an für eines der Bilder.Dies ist sinnvoll (und ich möchte dieses Verhalten auch sehen, wenn der Browser geschlossen ist)!

Wenn ich den Browser schließe und auf derselben Seite wieder öffne, sendet der alberne Browser trotzdem einmal pro Bild eine HTTP-Anfrage an den Server: Das Bild wird NICHT heruntergerechnet, aber es wird immer noch eine HTTP-Anfrage gesendet Server über das Bild (Server antwortet mit 200 OK).Das ist derjenige, der mich irritiert!

Bei Interesse füge ich auch die folgenden Grafiken bei:

BEARBEITEN: Ich habe es jetzt auch mit FireFox 11.0 getestet, um sicherzugehen, dass mein FireFox 3.6 nicht zu alt ist. Das gleiche passiert !!!Ich habe auch Google-Site und Stackoverflow-Site getestetsenden sie beide dieCache-Control: max-age=... aberDer Browser sendet weiterhin eine HTTP-Anforderung an den Server für jedes Bild, sobald der Browser auf derselben Seite geschlossen und wieder geöffnet wirdNach der Server-Antwort lädt der Browser das Bild NICHT herunter (wie oben erklärt), aber er stellt trotzdem die verdammte Anfrage, die die Zeit zum Anzeigen der Seite erhöht.

EDIT2: und entfernen Sie dieLast-Modified Header wie vorgeschlagenHier, löst das Problem nicht, es macht keinen Unterschied.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage