Según las mejores prácticas de Yahoo para acelerar su sitio , ofrecemos contenido estático de un CDN utilizando encabezados de caducidad de caché en el futuro lejano. Por supuesto, necesitamos actualizar ocasionalmente estos archivos "estáticos", por lo que actualmente agregamos una versión infija como parte del nombre de archivo (según la suma SHA1 del contenido del archivo). Así:
styles.min.css
Se convierte en:
styles.min.abcd1234.css
Sin embargo, administrar los archivos versionados puede volverse tedioso, y me preguntaba si una notación de argumento GET podría ser más limpia y mejor:
styles.min.css?v=abcd1234
¿Cuál usas y por qué? ¿Hay consideraciones relacionadas con el navegador o el proxy / caché que debería tener en cuenta?
static-content
cache-control
David Eyk
fuente
fuente
Respuestas:
De acuerdo con Make the Web Faster de Google, muchas páginas con parámetros de consulta no son almacenadas en caché por muchos proxies HTTP.
Entonces
styles.min.abcd1234.css
es la solución preferida. Puede utilizar un mecanismo de reescritura de URL apropiado para questyles.min.abcd1234.css
sea más fácil de implementar de formastyles.min.css?v=abcd1234
transparente.Si solo admite HTTPS, ese consejo no se aplica, ya que los servidores proxy normalmente no pueden almacenar en caché las páginas que se sirven a través de SSL.
fuente
Usando el control de versiones de estilo GET, desde un caché en blanco, múltiples URL, por ejemplo,
style.css?v=123
ystyle.css?v=456
, devolverían el mismo contenido. Sin embargo, no puedo ver que esto sea problemático, especialmente porque solo vincularías a uno a la vez.Creo que encontrará el estilo GET mucho más fácil de mantener. No necesita archivos separados: solo cambie la URL y los navegadores buscarán el CSS nuevamente.
ACTUALIZACIÓN: en futuras investigaciones, parece que el uso de una cadena de consulta puede detener que los navegadores almacenen en caché los archivos. Sin embargo, si está devolviendo encabezados adecuados, como
Expires
este no es un problema.ACTUALIZACIÓN 2: la respuesta aceptada señala que algunos servidores proxy no almacenan en caché los archivos con una cadena de consulta. Sin embargo, esto se basa en información antigua; El problema particular que mencionan en Squid se solucionó hace 7 años. Impresionante Webs hizo una buena redacción sobre esto.
fuente
Ambos funcionarán igual de bien, ya que una cadena de consulta se considera parte de la URL y, al cambiarla, está cambiando el nombre del recurso, lo que hace que el navegador obtenga una nueva copia del archivo.
Le digo que use el método que le resulte más fácil de mantener.
fuente
esta no es una respuesta a la pregunta anterior , quiero una mejor solución, así que pregunto aquí mismo
Ambos métodos requerirían modificaciones en los archivos a los que se refieren los archivos css y js. En efecto, requeriría un reinicio del servidor de aplicaciones después de realizar los cambios.
¿Hay alguna manera mejor de manejar las versiones de archivos estáticos sin tener que reiniciar el servidor de aplicaciones?
se descarta lo siguiente en la solución
la solución tampoco debería afectar la configuración del control de caché o caduca.
Gracias
fuente