URL con consulta deshabilita el almacenamiento en caché?

11

¿Tener una cadena de consulta adjunta a una URL hace que los navegadores nunca la almacenen en caché? Por ejemplo, mi sitio hace algo como esto:

/radar-picture.png?v=sep2013

Y parecería que FireFox nunca almacena en caché esa imagen; Se descarga en cada solicitud.

Me gustaría que FireFox lo guarde en caché todo el tiempo que quiera. Solo quiero forzarlo a descargar cuando el v=parámetro ha cambiado.

Señor Smith
fuente
1
Supongo que podría lograr esto si solo cambia el nombre del archivo en lugar de la consulta. Así que ahora sería el nombre de archivo radar-picture-sep2013.pngy cuando cambie en algún momento en el futuro sería radar-picture-jan2014.png. Puede configurar la edad máxima de PNG para un año, de modo que a menos que cambie el nombre de archivo, el navegador puede cargar la imagen en caché durante mucho tiempo.
vstm

Respuestas:

3

Agregar un par clave / valor de cadena de consulta a un recurso estático (como una imagen, CSS o JavaScript) puede causar problemas de almacenamiento en caché .

Específicamente, dado que mencionó Firefox , su problema podría estar relacionado con una 'colisión de caché', donde:

Las funciones hash de caché de disco de Firefox pueden generar colisiones para URL que difieren solo ligeramente, es decir, solo en límites de 8 caracteres. Cuando los recursos se combinan con la misma clave, solo uno de los recursos se conserva en la memoria caché del disco; los recursos restantes con la misma clave deben recuperarse en los reinicios del navegador. Por lo tanto, si está utilizando huellas digitales o está generando de manera programática URL de archivos, para maximizar la tasa de aciertos de caché, evite el problema de colisión de hash de Firefox asegurándose de que su aplicación genere URL que difieran en límites de más de 8 caracteres.

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

Mike Hudson
fuente
77
¿Qué es el "límite de 8 caracteres" y CÓMO puedo evitar esta colisión? ¿Cómo deberían verse entonces mis URL?
Andrew
2

Esta respuesta en stackoverflow afirma que algunos navegadores reaccionan de manera diferente al presionar enter en la barra de direcciones en lugar de hacer clic en un enlace cuando la url tiene una cadena de consulta: /programming//a/85386/1145388

Cuando esté probando, asegúrese de hacer clic en los enlaces en lugar de actualizar o presionar enter en la barra de direcciones.

Stephen Ostermiller
fuente
2
Creo que la respuesta en stackoverflow puede estar desactualizada. Cuando pongo una cadena de consulta en las hojas de estilo style.css?v=sep2013y el 150KiB background-image:url('bgimage.jpg?v=sep2013');, navegar por el sitio (haciendo clic en los enlaces o escribiendo en la barra de direcciones) es muy lento en Firefox.
Sr. Smith