URL avec requête désactive la mise en cache?


12

Le fait d'avoir une chaîne de requête attachée à une URL empêche-t-il les navigateurs de la mettre en cache? Par exemple, mon site fait quelque chose comme ceci:

/radar-picture.png?v=sep2013

Et il semblerait que FireFox ne cache jamais cette image; il est téléchargé à chaque demande.

J'aimerais que FireFox le mette en cache aussi longtemps qu'il le souhaite. Je veux seulement le forcer à télécharger lorsque le v=paramètre a changé.


1
Je suppose que vous pouvez accomplir cela, si vous changez simplement le nom du fichier lui-même au lieu de la requête. Alors maintenant, le nom de fichier serait radar-picture-sep2013.pnget quand il changera à un moment donné dans le futur, il le sera radar-picture-jan2014.png. Vous pouvez configurer l'âge maximum du PNG sur un an, donc à moins que le nom de fichier ne change, le navigateur peut charger l'image mise en cache pendant une longue période.
vstm

Réponses:


3

L'ajout d'une paire clé / valeur de chaîne de requête à une ressource statique (telle qu'une image, CSS ou JavaScript) peut entraîner des problèmes de mise en cache .

Plus précisément, puisque vous avez mentionné Firefox , votre problème pourrait être lié à une «collision de cache», où:

Les fonctions de hachage du cache disque de Firefox peuvent générer des collisions pour des URL qui ne diffèrent que légèrement, à savoir uniquement sur des limites de 8 caractères. Lorsque les ressources sont hachées sur la même clé, une seule des ressources est conservée dans le cache disque; les ressources restantes avec la même clé doivent être récupérées lors des redémarrages du navigateur. Ainsi, si vous utilisez les empreintes digitales ou si vous générez par ailleurs des URL de fichier par programme, pour maximiser le taux d'accès au cache, évitez le problème de collision de hachage Firefox en vous assurant que votre application génère des URL qui diffèrent sur plus de 8 caractères.

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


7
Qu'est-ce que la «limite de 8 caractères» et COMMENT puis-je éviter cette collision? À quoi devraient ressembler mes URL?
Andrew

2

Cette réponse sur stackoverflow affirme que certains navigateurs réagissent différemment au fait d'appuyer sur Entrée dans la barre d'adresse par rapport à un clic sur un lien lorsque l'URL a une chaîne de requête: https://stackoverflow.com/a/85386/1145388

Lorsque vous testez, assurez-vous de cliquer sur les liens plutôt que d'actualiser ou d'appuyer sur Entrée dans la barre d'URL.


2
Je pense que la réponse sur stackoverflow peut être obsolète. Lorsque je mets une chaîne de requête sur les feuilles de style style.css?v=sep2013et les 150 Ko background-image:url('bgimage.jpg?v=sep2013');, la navigation sur le site (en cliquant sur les liens ou en tapant la barre d'adresse) est très lente dans FireFox.
M. Smith
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.