Google Chrome speichert keine Bilder

8

Ich versuche, meine Anwendung in Ruby on Rails zu optimieren, und mir wurde klar, dass die Bilder in meiner Anwendung die längste Zeit zum Laden benötigen, aber ich habe auch ein anderes Problem festgestellt, das Google Chrome nicht ist Zwischenspeichern der Bilder.

Ich habe dies bemerkt, weil Sie in der Google Developers Console sehen, dass Google Chrome eine Anforderung zum Laden der Bilder stellt, die abgebrochen werden, bevor die Bilder wirklich geladen sind.

Dies ist hier zu sehen, zuerst öffne ich die Google Developers Console, aktualisiere dann die Seite und innerhalb der ersten Anfragen dort kannst du die Bilder sehen, aber sie werden sofort abgebrochen.

Danach können Sie die Anfragen sehen, die die Bilder tatsächlich geladen haben.

Ich verstehe nicht, warum das passiert, wenn Sie in den Antwortheadern sehen können, dass Cache Control auf public mit max-age = 31536...

gesetzt ist

Ich lege die Bilder so in meine Anwendung:

%Vor%

Und die Bilder sind in Ordnern in app/assets/images

organisiert

Gibt es eine Möglichkeit, das Problem zu beheben?

Bearbeiten : Jetzt teste ich meine App (die in Heroku ist) in Windows Ich bemerkte, dass Google Chrome die Bilder manchmal zwischenspeichert, aber es passiert wie die 50% der Zeiten (und wenn ich war in Ubuntu in der Entwicklung es hat nicht ein einziges Mal funktioniert), während in firefox das erste Mal die Bilder geladen werden, aber die nachfolgenden Male ich die gleiche Ansicht laden, kann ich nicht einmal das Nachladen bemerken, es ist schön, warum Google Chrome ist nicht so? Ist das normal, dass Google Chrome so komisch wirkt?

    
OiciTrap 13.02.2016, 02:51
quelle

4 Antworten

8

Das Wichtigste, was Sie bei der Analyse des Browser-Cachings beachten müssen, ist der "Status-Code". In Ihrem Beispiel sehen Sie, dass Sie eine "304" erhalten haben, die für "Nicht geändert" steht. Dies bedeutet, dass der Browser "möglicherweise seinen Cache verwenden kann". Sie sind tatsächlich Caching. Caching! = Treffe deinen Webserver nicht.

Die Definition nach Mozilla :

  

Dies wird für Caching-Zwecke verwendet. Es teilt dem Client mit, dass die Antwort nicht geändert wurde. Daher kann der Client weiterhin dieselbe zwischengespeicherte Version der Antwort verwenden.

Er sendet das Etag und zuletzt-modifiziert an Ihren Webserver, und Ihr Web-Server schaut sich dann diese Meta an und sagt "Nein, diese Datei hat sich nicht geändert, also fühlen Sie sich frei, Ihren Cache zu benutzen", und das war's. Es sendet die Datei tatsächlich nicht erneut. Sie können sehen, dass die "Größe" viel kleiner ist, als wenn es ein "200" Statuscode ist, wo der Webserver die Datei sendet, und das Timing sollte auch viel kürzer sein.

In Chrome können Sie "Nicht-Caching" erzwingen, indem Sie die Option "Cache deaktivieren" auf der Registerkarte "Netzwerk" aktivieren.

Hoffe das hilft!

    
omarvelous 19.02.2016, 16:01
quelle
2

Sie können das Caching mit der Manifestdatei erzwingen. Es gibt viele Dokumente im Web über das Thema. Hier ist ein Starter: Ссылка

    
Bramastic 24.02.2016 12:58
quelle
1

Es sieht so aus, als würde Chrome das Bild-Caching anders handhaben. Welche Art von Reload machst du? (Links folgen, Enter in der Adressleiste drücken, Strg + r)? Es sieht so aus, als wenn du in der Suchleiste Enter drückst, respektiert Max-Age, aber wenn du Strg + r verwendest, setzt Chrome Max-Age auf 0.

expires_in max-age Cachesteuerung funktioniert nicht

Chrome speichert keine Bilder / js / css

    
neallred 18.02.2016 22:37
quelle
1

Die Anforderungsheader enthalten max-age = 0. Versuchen Sie, das auf eine große Zahl zu setzen!

    
Belfordz 24.02.2016 20:46
quelle