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...
Ich lege die Bilder so in meine Anwendung:
%Vor% Und die Bilder sind in Ordnern in app/assets/images
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?
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!
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.
Tags und Links ruby-on-rails google-chrome caching assets