javascript - página - limpiar cache navegador jquery
¿Es el nombre del archivo o la URL completa utilizada como clave en los cachés del navegador? (9)
Es común querer que los navegadores guarden en caché los recursos (JavaScript, CSS, imágenes, etc.) hasta que haya una nueva versión disponible, y luego asegurarse de que el navegador busque y almacene en caché la nueva versión.
Una solución es insertar un número de versión en el nombre del archivo del recurso, pero ¿los recursos que se administrarán de esta manera en un directorio con un número de revisión en él harán lo mismo? ¿La URL completa del archivo se utiliza como clave en la memoria caché del navegador, o es solo el nombre del archivo y algunos metadatos?
Si mi código cambia de buscar /r20/example.js
a /r21/example.js
, ¿puedo estar seguro de que la revisión 20 de example.js
se example.js
caché, pero ahora se ha recuperado la revisión 21 y ahora está en caché?
Ellos MÍNIMO que necesita para identificar un objeto HTTP es por la ruta completa, incluidos los parámetros de cadena de consulta. Algunos navegadores pueden no almacenar en caché objetos con una cadena de consulta, pero eso no tiene nada que ver con la clave de la memoria caché.
También es importante recordar que el camino ya no es suficiente. El encabezado Vary: en la respuesta HTTP alerta al navegador (o servidor proxy, etc.) de cualquier cosa que no sea la URL que se debe usar para determinar la clave de caché, como cookies, valores de codificación, etc.
Para su pregunta básica, sí, cambiar la URL del archivo .js es suficiente. A la pregunta más amplia de qué determina la clave de caché, es la URL más la Vary: restricciones de encabezado.
En la mayoría de los navegadores, se usa la URL completa. En algunos navegadores, si tiene una consulta en la url, el documento nunca se almacenará en caché.
Estoy 99.99999% seguro de que es la URL completa que se utiliza para almacenar recursos en un navegador, por lo que su esquema de URL debería funcionar bien.
Por supuesto, tiene que usar la ruta completa ''/r20/example.js'' frente a ''/r21/example.js'' para comenzar con imágenes completamente diferentes. Lo que sugiere es una forma viable de manejar el control de versiones.
Sí. Una ruta diferente es la misma desde la perspectiva de caches.
URL completa He visto un comportamiento extraño en algunos navegadores más antiguos donde la sensibilidad de mayúsculas y minúsculas entró en juego.
depende se supone que es la URL completa, pero algunos navegadores (Opera, Safari 2 ) aplican una estrategia de memoria caché diferente para las URL con diferentes parámetros.
La mejor opción es cambiar el nombre del archivo .
Aquí hay una solución muy inteligente (usa PHP, Apache)
http://verens.com/archives/2008/04/09/javascript-cache-problem-solved/
Notas de estrategia: "Según la letra de la especificación de caché de HTTP, los agentes de usuario nunca deben almacenar en caché las URL con cadenas de consulta. Aunque Internet Explorer y Firefox ignoran esto, Opera y Safari no: para asegurarse de que todos los agentes de usuario puedan almacenar sus recursos en caché, debemos mantener las cadenas de consulta fuera de sus URL ".
http://www.thinkvitamin.com/features/webapps/serving-javascript-fast
Sí, cualquier cambio en cualquier parte de la URL (excluyendo los cambios en los protocolos HTTP y HTTPS) es interpretado como un recurso diferente por el navegador (y cualquier proxy intermediario), y por lo tanto dará como resultado una entidad separada en el caché del navegador.
Actualizar:
El reclamo en este artículo de ThinkVitamin que los navegadores de Opera y Safari / Webkit no almacenan en caché las URL con? Query = cadenas es falso .
Agregar un parámetro de número de versión a una URL es una forma perfectamente aceptable de hacer cache-busting.
Lo que puede haber confundido al autor del artículo ThinkVitamin es el hecho de que presionar Enter en la barra de dirección / ubicación en Safari y Opera da como resultado un comportamiento diferente para las URL con cadena de consulta en ellas.
Sin embargo, (¡ y esta es la parte importante! ) Opera y Safari se comportan como IE y Firefox cuando se trata de almacenar en caché imágenes incrustadas / vinculadas y hojas de estilo y guiones en páginas web, independientemente de si tienen "?" personajes en sus URL. (Esto se puede verificar con una simple prueba en un servidor Apache normal).
(Habría comentado sobre la respuesta actualmente aceptada si tuviera la reputación de hacerlo) :-)
La clave de la memoria caché del navegador es una combinación del método de solicitud y el URI de recursos. URI consta de esquema, autoridad, ruta, consulta y fragmento.
Extracto relevante de la especificación HTTP 1.1 :
La clave de caché principal consiste en el método de solicitud y el URI de destino. Sin embargo, dado que las cachés HTTP de uso común en la actualidad se suelen limitar a las respuestas de caché a GET, muchas cachés simplemente rechazan otros métodos y usan solo el URI como clave de caché principal.
Extracto relevante de la especificación de URI :
La sintaxis URI genérica consiste en una secuencia jerárquica de componentes denominada esquema, autoridad, ruta, consulta y fragmento.
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty