¿Cómo borro el caché de un navegador con JavaScript?
Implementamos el último código JavaScript pero no podemos obtener el último código JavaScript.
Nota editorial: esta pregunta está semi-duplicada en los siguientes lugares, y la respuesta en la primera de las siguientes preguntas es probablemente la mejor. Esta respuesta aceptada ya no es la solución ideal.
¿Cómo forzar al navegador a recargar los archivos CSS / JS en caché?
¿Cómo puedo forzar a los clientes a actualizar archivos JavaScript?
javascript
caching
Dylan Brams
fuente
fuente
?version=xxx
a sus archivos vinculados JS a través de un paso de compilación. Cada nueva compilación solicitará una nueva versión del archivo JS.Respuestas:
Puede llamar a window.location.reload (true) para volver a cargar la página actual. Ignorará cualquier elemento almacenado en caché y recuperará nuevas copias de la página, CSS, imágenes, JavaScript, etc. del servidor. Esto no borra todo el caché, pero tiene el efecto de borrar el caché de la página en la que se encuentra.
Sin embargo, su mejor estrategia es versionar la ruta o el nombre de archivo como se menciona en varias otras respuestas. Además, vea Revving Filenames: no use la cadena de consulta por razones que no debe usar
?v=n
como su esquema de versiones.fuente
No puede borrar el caché con javascript. Una forma común es agregar el número de revisión o la última marca de tiempo actualizada al archivo, de esta manera:
o
myscript.js?updated=1234567890
fuente
Intenta cambiar el archivo src de JavaScript? De esto:
A esto:
Este método debería obligar a su navegador a cargar una nueva copia del archivo JS.
fuente
Además del almacenamiento en caché cada hora o cada semana, puede almacenar en caché de acuerdo con los datos del archivo.
Ejemplo (en PHP):
o incluso usar el tiempo de modificación del archivo:
fuente
También puede forzar la recarga del código cada hora, de esta manera, en PHP:
o
fuente
pon esto al final de tu plantilla:
fuente
intenta usar esto
A esto:
fuente
Aquí hay un fragmento de lo que estoy usando para mi último proyecto.
Desde el controlador:
Desde la vista:
Nuestro proceso de publicación genera un archivo con el número de revisión de la compilación actual. Esto funciona codificando URL ese archivo y usándolo como un destructor de caché. Como una conmutación por error, si ese archivo no existe, el número de año y semana se usa para que el almacenamiento en caché aún funcione, y se actualizará al menos una vez por semana.
Además, esto proporciona el almacenamiento en caché para cada carga de página mientras está en el entorno de desarrollo para que los desarrolladores no tengan que preocuparse por borrar el caché de ningún recurso (javascript, css, llamadas ajax, etc.).
fuente
o simplemente puede leer el archivo js por servidor con file_get_contets y luego poner en eco en el encabezado el contenido js
fuente
Quizás "borrar el caché" no sea tan fácil como debería ser. En lugar de borrar el caché en mis navegadores, me di cuenta de que "tocar" el archivo en realidad cambiará la fecha del archivo fuente almacenado en caché en el servidor (Probado en Edge, Chrome y Firefox) y la mayoría de los navegadores descargarán automáticamente la copia actualizada más reciente de qué hay en su servidor (código, gráficos, cualquier multimedia también). Le sugiero que simplemente copie las secuencias de comandos más recientes en el servidor y la solución "haga lo táctil" antes de que se ejecute su programa, por lo que cambiará la fecha de todos sus archivos problemáticos a la fecha y hora más actual, luego descargará una copia nueva a su navegador:
... el resto de tu programa ...
Me tomó algo de tiempo resolver este problema (ya que muchos navegadores actúan de manera diferente a los diferentes comandos, pero todos verifican la hora de los archivos y se comparan con la copia descargada en su navegador, si la fecha y la hora son diferentes, se actualizarán), si usted no puede ir por el supuesto camino correcto, siempre hay otra solución utilizable y mejor. Saludos cordiales y feliz campamento.
fuente
Tuve algunos problemas con el código sugerido por yboussard. El bucle j interno no funcionó. Aquí está el código modificado que uso con éxito.
fuente
Si está utilizando php puede hacer:
fuente
Cache.delete () se puede usar para nuevos Chrome, Firefox y Opera.
fuente
You don't have to use it in conjunction with service workers, even though it is defined in the service worker spec.
Por favor no brinde información incorrecta. La API de caché es un tipo de caché diferente del caché http
El caché HTTP se activa cuando el servidor envía los encabezados correctos , no puede acceder con javasvipt.
La API de caché, por otro lado, se dispara cuando lo desea, es útil cuando se trabaja con el trabajador del servicio para que pueda intersectar la solicitud y responderla desde este tipo de caché, consulte: ilustración 1 ilustración 2 curso
Puede utilizar estas técnicas para tener siempre un contenido nuevo en sus usuarios:
Recomendaría el tercero ver
fuente
También puede deshabilitar el almacenamiento en caché del navegador con metaetiquetas HTML simplemente coloque etiquetas html en la sección de encabezado para evitar que la página web se almacene en caché mientras está codificando / probando y cuando haya terminado, puede eliminar las metaetiquetas.
(en la sección de la cabeza)
Actualice su página después de pegar esto en la cabeza y también debería actualizar el nuevo código de JavaScript.
Este enlace le dará otras opciones si las necesita http://cristian.sulea.net/blog/disable-browser-caching-with-meta-html-tags/
o simplemente puedes crear un botón así
se actualiza y evita el almacenamiento en caché, pero estará allí en su página hasta que termine la prueba, luego puede quitarlo. La primera opción es lo mejor.
fuente
Tiendo a versionar mi framework y luego aplicar el número de versión a las secuencias de comandos y estilos
fuente
cierre y abra el navegador después de ejecutar el código en la consola.
fuente
window.location.reload(true)
parece haber quedado en desuso por el estándar HTML5. Una forma de hacerlo sin usar cadenas de consulta es usar elClear-Site-Data
encabezado , que parece estar estandarizado .fuente
Debido a que el navegador almacena el mismo enlace, debe agregar un número aleatorio al final de la url.
new Date().getTime()
generar un número diferenteSimplemente agregue el
new Date().getTime()
final del enlace como una llamadaSalida:
https://stackoverflow.com/questions.php?1571737901173
fuente