¿Cómo desactivar el almacenamiento en caché en Firefox?

143

Durante el desarrollo, tengo que "borrar el caché" en Firefox todo el tiempo para que use la última versión de los archivos JavaScript.

¿Hay algún tipo de configuración (sobre: ​​config) para desactivar el almacenamiento en caché por completo para los archivos JavaScript? O, si no, para todos los archivos?

Thilo
fuente

Respuestas:

229

Ingresa "about: config" en la barra de direcciones de Firefox y configura:

browser.cache.disk.enable = false
browser.cache.memory.enable = false

Si se desarrolla localmente, o utiliza el nuevo atributo manifiesto de HTML5, es posible que también deba establecer lo siguiente en about: config -

browser.cache.offline.enable = false
tst
fuente
¿Cómo no supe de esta pequeña joya? Todo tipo de golosinas en aproximadamente: config!
ABrowne
2
network.http.use-cache no está ahí para mí. Cambiar browser.cache.offline.enable no hace la diferencia para mí.
Curtis
1
No dudo que esta sea una buena respuesta, pero ya no parece ser cierto en las últimas versiones de Firefox (estoy usando la edición de desarrollador 47.0a2 en este momento). Sin embargo, deshabilitar el almacenamiento en caché en la configuración del desarrollador web es efectivo.
JosephStyons
61

La barra de herramientas de desarrollador web tiene una opción para deshabilitar el almacenamiento en caché, lo que hace que sea muy fácil activarlo y desactivarlo cuando lo necesite.

philnash
fuente
1
CTRL-F5 o mantener presionada la tecla Mayús mientras hago clic en el botón Volver a cargar es lo que he hecho en el pasado, pero la función "Desactivar caché" de la Barra de herramientas para desarrolladores web es una excelente manera de hacerlo. No tiene que deshabilitar por completo la memoria caché de Firefox de esa manera.
Jon Onstott
1
Sin embargo, debe recordar habilitar el caché después de la prueba. ;)
neurolabs
1
@Shanimal, funciona para mí en 14.0.1, es posible que desee desinstalar / reinstalar o algo así.
Lucas
@Lucas doh! Los elementos en el servidor con el que estaba trabajando estaban en caché, pero olvidé eliminar mi comentario ... Gracias.
Shanimal
1
Esto ya no funciona hasta que Chrispederick arregle algunos cambios nuevos de Firefox en la última versión. Iría con la solución about: config que es mejor para los desarrolladores.
Ligemer
12

¿Ha tratado de usar CTRL- F5para actualizar la página?

algunos
fuente
66
Realmente tengo dudas de que esto funcione de manera confiable, al menos en presencia de iframes y marcos.
Thilo
2
correcto, no siempre volverá a cargar el JS / CSS en un iframe, pero en Firefox al menos puede desplegar ese marco en una nueva pestaña y volver a cargar allí.
scunliffe
Siempre usé Ctrl-F5 ... luego descubrí que no cargaba mis versiones más recientes de archivos js en los que estaba trabajando :( También estaba en un iframe (lo sé, los iframes son el demonio, no es mi elección ).
Gromer
Ctrl-F5 no restablece el almacenamiento en caché de archivos javascript. lo que hace (principalmente) es borrar la sesión y las cookies, pero no el JavaScript en caché y las hojas de estilo
AceMark
10

No hay una opción específica para deshabilitar el almacenamiento en caché solo para JavaScript, deberá deshabilitar el almacenamiento en caché por completo.

FireBug tiene una opción para deshabilitar la memoria caché del navegador en el menú desplegable de la pestaña Red.

kynan
fuente
8

En la misma página que desea deshabilitar el almacenamiento en caché, haga lo siguiente: FYI: la versión en la que estoy trabajando es 30.0

Usted puede :

abrir la barra de herramientas del desarrollador web desarrollador web abierto

y seleccione desactivar caché

Después de eso, volverá a cargar la página por su cuenta (usted está encendido) y todo se recuperará y cualquier solicitud de futuro también se recuperará cada vez que lo haga y puede mantener el desarrollador web siempre abierto para estar atento y asegurarse de que siempre esté activado (verifique) .

shareef
fuente
8

Herramientas de desarrollo de Firefox 48

Le permite desactivar el caché solo cuando la caja de herramientas está abierta, lo cual es perfecto para el desarrollo web:

  • F12
  • caja de cambios en la esquina superior derecha
  • desplazarse hacia abajo arriba Configuración avanzada
  • marque "Deshabilitar caché (cuando la caja de herramientas está abierta)"

ingrese la descripción de la imagen aquí

https://stackoverflow.com/a/27397425/895245 tiene contenido similar, pero el posicionamiento cambió un poco desde entonces.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
fuente
1
Gracias ... hay información por ahí (y en este hilo) sobre la configuración de network.http.use-cache en falso ... pero en mi versión de FF (53) esa configuración ya no existe ... Esta técnica es muy superior de todas formas.
Mike rodent
7

Si está trabajando con el código del lado del servidor, podría generar un número aleatorio y agregarlo al final del src de la siguiente manera ...

src = "yourJavascriptFile.js? randomNumber = 434534"

con el número aleatorio que se genera aleatoriamente cada vez.

RekrowYnapmoc
fuente
Esta es la única solución que me ha funcionado además de borrar manualmente la memoria caché del navegador cada vez que actualizo.
Curtis
4

Sé que estoy resucitando una pregunta antigua, pero hoy estaba tratando de resolver este problema y tener una solución alternativa. Alternar el almacenamiento en caché cuando quiero probar no era realmente aceptable para mí y, como otros mencionaron, la actualización dura (ctrl + shift + r) no siempre funciona.

En cambio, opté por poner lo siguiente en mi archivo vhost.conf (también se puede hacer en .htaccess) en mi entorno de desarrollo:

<FilesMatch "\.(js|css)$">
FileETag None
<IfModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</IfModule>
</FilesMatch>

En mi entorno de desarrollo, esto garantiza que js y css siempre se recuperen. Además, no afecta el resto de mi navegación, y también funciona para todos los navegadores, por lo que probar en Chrome / ie, etc. también es fácil.

Encontré el fragmento aquí, algunos otros trucos prácticos de apache también: http://www.askapache.com/htaccess/using-http-headers-with-htaccess.html#prevent-caching-with-htaccess

Para asegurarme de que mis clientes siempre vean la última versión en producción, incrementamos la cadena de consulta en js include en cada actualización, es decir

jquery.somefile.js?v=0.5

Esto obliga a los navegadores de mis clientes a actualizar su caché local cuando ven una nueva cadena de consulta, pero luego almacena en caché la nueva copia hasta que el archivo se actualice nuevamente

Kevin Jhangiani
fuente
3

La mejor estrategia es diseñar su sitio para construir una URL única para sus archivos JS, que se restablece cada vez que hay un cambio. De esta forma, se almacena en caché cuando no ha habido cambios, pero se recarga inmediatamente cuando ocurre algún cambio.

Debería ajustar sus herramientas de entorno específicas, pero si está utilizando PHP / Apache, esta es una gran solución tanto para usted como para los usuarios finales.

http://verens.com/archives/2008/04/09/javascript-cache-problem-solved/

scunliffe
fuente
3

Puede usar CTRL- F5para recargar sin pasar por el caché.

Puede configurar las preferencias en firefox para no usar el caché

network.http.use-cache = false

Puede configurar su servidor web para enviar encabezados sin caché / Caduca / Control de caché para los archivos js.

Aquí hay un ejemplo para el servidor web apache.

Palmadita
fuente
es ese shift-f5 o ctrl-f5?
Thilo
3

Si usa FireBug, en el menú desplegable de la pestaña Red hay una opción para deshabilitar la memoria caché del navegador.

ingrese la descripción de la imagen aquí

Nerdroid
fuente
Firebug se suspende.
K7AAY
1

Hay ventajas y desventajas de las dos últimas soluciones publicadas, pero ambas son excelentes soluciones en mi humilde opinión.

  1. Es posible que desee o no que su ID de sesión esté incrustada en su URL de esa manera para una mayor seguridad. Pero en el desarrollo eso no debería importar, pero ¿qué pasa si olvidas eliminarlo? ¿Eso también funciona realmente? ¿No necesitaría algo así como un generador de números secuenciales (recuento de aciertos almacenado en la sesión, o tal vez incluso si 1 luego 0, si 0 entonces 1)?

  2. Agregar un ID de sesión (o cualquier secuenciador) significa que debe recordar agregarlo a cada recurso que no desea almacenar en caché. Por un lado, eso es mejor porque puedes incluir tu ID de sesión con solo ese recurso que estás desarrollando y probando activamente. Por otro lado, significa que tienes que hacer eso y debes recordar eliminarlo para la producción.

  3. Modificar el vhost.conf o el archivo .htaccess funciona muy bien sin la necesidad de recordar agregar y eliminar la identificación de la sesión. Pero la desventaja es que el rendimiento de todos los recursos js y css se verá afectado, y si tiene archivos grandes, eso lo ralentizará.

Ambas parecen soluciones excelentes y elegantes, dependiendo de sus necesidades.

meem
fuente
1

Uso CTRL- SHIFT, DELETEque activa la función de privacidad, permitiéndole borrar su caché, restablecer cookies, etc., todo a la vez. Incluso puede configurarlo para que lo HAGA, en lugar de abrir un cuadro de diálogo pidiéndole que confirme.

Sr. Brillante y Nuevo 安 宇
fuente
1

En versiones superiores de Firefox, como Nightly, hay una opción llamada "desactivar caché", puede encontrarla haciendo clic en el engranaje. Y esas opciones solo funcionan en la sesión actual, lo que significa que cuando cierra el inspector y lo reinicia, debe verificarlo nuevamente si desea deshabilitar la captura.

jiyinyiyong
fuente
Desearía que hubiera una manera de deshabilitar el caché a nivel mundial. Es muy molesto tener que revisarlo cada vez que abro el inspector.
Carlos García
0

Después de 2 horas de búsqueda de varias alternativas, esto es algo que funcionó para mí.

Mi requisito era deshabilitar el almacenamiento en caché de archivos js y css en mi aplicación web segura de Spring. Pero al mismo tiempo, el almacenamiento en caché de estos archivos "dentro" de una sesión en particular.

Pasar una identificación única con cada solicitud es uno de los enfoques recomendados.

Y esto es lo que hice: - En lugar de

<script language="javascript" src="js/home.js"></script>

solía

<script language="javascript" src="js/home.js?id=${pageContext.session.id}"></script>

Cualquier desventaja del enfoque anterior es bienvenida. Temas de seguridad ?

Darshan
fuente
0

En firefox 45, las opciones de caché de disco se pueden configurar cambiando el valor de: browser.cache.disk.enable

El valor se puede establecer en la página "about: config".

En http://kb.mozillazine.org/About:config_entries#Browser encontré la siguiente descripción para "browser.cache.disk.enable":

Verdadero (predeterminado): use caché de disco, hasta la capacidad especificada en browser.cache.disk.capacity Falso: deshabilite el caché de disco (el mismo efecto que establecer browser.cache.disk.capacity en 0)

Daniel
fuente
0

En primer lugar, esto se puede hacer fácilmente, por ejemplo, mediante PHP para obligar al navegador a renovar archivos en función de la fecha de caché (tiempo de caducidad). Si solo lo necesita para necesidades experimentales, intente usar ctrl + shift + del para borrar todo el caché a la vez dentro del navegador Firefox. La tercera solución es utilizar muchos complementos que existen para Firefox para borrar la memoria caché en función de las líneas de tiempo.

Amir Ghorbani
fuente