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.