URL mit Abfrage deaktiviert Caching?

11

Verursacht das Anhängen einer Abfragezeichenfolge an eine URL, dass Browser diese niemals zwischenspeichern? Zum Beispiel macht meine Seite ungefähr so:

/radar-picture.png?v=sep2013

Und es scheint, dass FireFox dieses Bild niemals zwischenspeichert. es wird bei jeder Anfrage heruntergeladen.

Ich möchte, dass FireFox es so lange zwischenspeichert, wie es möchte. Ich möchte das Herunterladen nur erzwingen, wenn sich der v=Parameter geändert hat.

Herr smith
quelle
1
Ich denke, Sie könnten dies erreichen, wenn Sie nur den Dateinamen selbst anstelle der Abfrage ändern. Jetzt wäre der Dateiname also radar-picture-sep2013.pngund wenn er sich irgendwann in der Zukunft ändert, würde er es sein radar-picture-jan2014.png. Sie können das maximale Alter des PNG auf ein Jahr konfigurieren. Wenn sich der Dateiname nicht ändert, kann der Browser das zwischengespeicherte Bild für eine lange Zeit laden.
vstm

Antworten:

3

Das Hinzufügen eines Abfragezeichenfolgen-Schlüssel / Wert-Paares zu einer statischen Ressource (z. B. einem Bild, CSS oder JavaScript) kann zu Caching-Problemen führen .

Da Sie Firefox erwähnt haben , kann Ihr Problem insbesondere mit einer "Cache-Kollision" zusammenhängen, wobei:

Die Firefox-Festplatten-Cache-Hash-Funktionen können Kollisionen für URLs erzeugen, die sich nur geringfügig unterscheiden, und zwar nur an 8-Zeichen-Grenzen. Wenn Ressourcen auf denselben Schlüssel gehasht werden, bleibt nur eine der Ressourcen im Festplatten-Cache erhalten. Die verbleibenden Ressourcen mit demselben Schlüssel müssen bei einem Neustart des Browsers erneut abgerufen werden. Wenn Sie also Fingerabdrücke verwenden oder auf andere Weise programmgesteuert Datei-URLs generieren, um die Cache-Trefferquote zu maximieren, vermeiden Sie das Problem der Firefox-Hash-Kollision, indem Sie sicherstellen, dass Ihre Anwendung URLs generiert, die sich an mehr als 8 Zeichen unterscheiden.

[Quelle: https://developers.google.com/speed/docs/best-practices/caching ]

Mike Hudson
quelle
7
Was ist "8-Zeichen-Grenze" und wie kann ich diese Kollision vermeiden? Wie sollen meine URLs dann aussehen?
Andrew
2

Diese Antwort auf stackoverflow besagt, dass einige Browser anders auf die Eingabe in der Adressleiste reagieren als auf einen Link, wenn die URL eine Abfragezeichenfolge enthält: /programming//a/85386/1145388

Stellen Sie beim Testen sicher, dass Sie auf Links klicken, anstatt die URL-Leiste zu aktualisieren oder die Eingabetaste zu drücken.

Stephen Ostermiller
quelle
2
Ich denke, dass die Antwort auf Stackoverflow möglicherweise veraltet ist. Wenn ich eine style.css?v=sep2013Abfragezeichenfolge in Stylesheets und 150 KB einfüge background-image:url('bgimage.jpg?v=sep2013');, ist das Navigieren auf der Site (durch Klicken auf Links oder Eingeben der Adressleiste) in FireFox sehr langsam.
Mr. Smith