Pruebo un código html / js en mi localhost (Windows 7, Chrome v79.0.3945.130 (64 bits)) y aproximadamente el 50% de los cambios de código de tiempo no se reflejan en el navegador (lo veo con Dev Tools / Sources )
Hay un montón de consejos en Internet, pero ninguno parece funcionar:
- Haga clic derecho en la recarga y elija "Vaciar caché y recarga dura" - no ayuda en el 30% de los casos.
- Desactivar el caché en la pestaña Red de las Herramientas de desarrollo de Chrome, no ayuda.
- Agregue
<meta http-equiv="Cache-control" content="no-cache">
el encabezado, no ayuda. - Reemplazar
<script src="common.js"></script>
por<script src="common.js?blabla"></script>
: ayuda en el 60% de los casos, pero debe hacerlo después de cada cambio es una tarea enorme. Además, no funciona con cambios html. - Copie un archivo a un nuevo archivo (como index.html a index2.html) y reemplace el nombre del archivo en el código; siempre funciona, pero es una tarea aún más grande.
Exactamente el mismo problema presente cuando confirmo el código en github.io
Ayúdenme a hacerlo para que el sitio refleje los cambios en el código de inmediato.
Editar: he creado un archivo index3.html y puse solo "hola mundo" allí. Abrió el archivo en el navegador. Cambiado a "hola mundo2": el navegador actualizó el contenido. Cambiado a "hello world3": el navegador seguía mostrando "hello world2" incluso después de varias recargas y "Vaciar caché y recarga dura". Cambié a "hola mundo4", el navegador aún mostraba "hola mundo2". En 4 horas cambié a "hola mundo5", el navegador aún muestra "hola mundo2". Este archivo lo edité con el bloc de notas básico.
Edit2: La gente sigue preguntando qué servidor estoy usando. Esto parece parte del problema. Desafortunadamente, no sé y tampoco sé exactamente qué debo hacer para verificarlo. Aquí está todo lo que he descubierto hasta ahora:
- Tengo un
inetpub/wwwroot
directorio donde pongo los archivos html & js y luego abro index.html en un navegador enhttp://localhost/
. - El panel Mi red en Devs Tools tiene este aspecto: enlace de imagen .
- La configuración del servidor fue muy rápida y no requirió ningún software adicional para instalar. Es decir, no estoy usando node.js.
- Hay iisstart.htm en
inetpub/wwwroot
y cuando lo abrohttp://localhost/iisstart.htm
dice IIS7.
fuente
index.html
para algo como un encabezadoX-Powered-By
oServer
que pueda dar una pista sobre el servidor web. Buscar en Google su ruta de archivoinetpub/wwwroot
apunta fuertemente a un servidor IIS.Respuestas:
¡Usar un parámetro es la forma correcta! Aquí puede agregar un número de versión que solo cambia en grandes cambios manualmente y para la depuración puede establecerlo en Date.time () para que en su etiqueta <head>, esto obligue a sobrescribir todas las versiones en caché ya que el parámetro siempre es nuevo uno:
¡Espero que esto ayude!
fuente
En el servidor IIS7 de Windows que se ejecuta en Windows 7, para evitar el almacenamiento en caché de su contenido, debe realizar algunos cambios en uno de sus archivos de configuración llamado
web.config
. Los archivos de configuración para IIS 7 y posteriores se encuentran en%WinDir%\System32\Inetsrv\Config folder
donde%WinDir%
está la carpeta donde instaló Windows (generalmenteC:/Windows
).Cree una copia de seguridad de su
web.config
archivo antes de editarlo para que pueda revertirlo si los cambios que realice en el archivo lo rompen.En su
web.config
archivo, simplemente agregue lo siguiente para evitar el almacenamiento en caché de suindex.html
:Obtuve la ruta del
web.config
archivo desde aquí: Windows Doc: Referencia de configuraciónObtuve la configuración para el caché anterior desde aquí: ¿Cómo deshabilitar el almacenamiento en caché del archivo HTML de la aplicación de una sola página servido a través de IIS?
fuente
projectName/index.html
, que copio de url en mi navegadorhttp:/localhost/projectName/index.html
. Resultado: sin efecto en el problema de almacenamiento en caché.web.config
archivo en la carpeta raíz de su sitio (carpeta donde se encuentra su sitio) y cambiar la ruta de nuevo a soloindex.html
y ver si eso funciona.Tuve el mismo problema y esta es mi lista de verificación:
<%Response.Expires=1440%>
muchas líneas de código ASP y estaba superando todas las demás configuraciones! En phpsession_cache_expire
may hace lo mismo.http-equiv="Cache-control"
encabezados html (¡pasó esta prueba!).Finalmente, tengo que decir que en todas las situaciones anteriores, marcar Deshabilitar caché en la pestaña de red nueva en la consola de Chrome siempre funcionó para mí para ver una versión nueva de las páginas, sin embargo, esto es bueno solo para fines de depuración y los visitantes no lo harán.
fuente
En el caso específico con el uso de Google Chrome, intente esto: Abra Dev Tools -> Ir a la pestaña 'Red'. Marque la casilla de verificación 'Desactivar caché', luego actualice la página.
Sin embargo, para propagar los cambios a sus usuarios, sin tener que actualizar la página, etc., debe agregar versiones de archivo al final de cada archivo referenciado para los archivos que cambian con frecuencia (tal como lo señaló). Por ejemplo:
El
v=20b379f72a37
anexo al final es un hash de archivo generado automáticamente del contenido del archivo.fuente
Esta es una posibilidad remota, pero ¿qué tipo de editor / IDE está utilizando? Además, ¿qué tipo de ediciones está haciendo en su index.html?
¿Podría proporcionar algunos ejemplos de tales ediciones que no se reflejan cuando guarda e intenta cargar el archivo?
Me gustaría intentar reproducir tu problema. Por lo que la gente sugiere, no parece que el problema esté dentro del código mismo. Sospecho que es un problema ambiental, pero necesitaría más información de usted para confirmar mis sospechas.
fuente
Lo que escribe en HTML meta es una recomendación para los navegadores, no una instrucción estricta. Si el almacenamiento en caché estricto está habilitado en el navegador, esto no ayudará.
Las soluciones se describen bien: https://curtistimson.co.uk/post/front-end-dev/what-is-cache-busting/
Prefiero en el lado del servidor agregar a los scripts la versión con la fecha de la última actualización del archivo en sí.
Donde 1579780745150 es Unix Timestamp actualiza el archivo myScript.js . Funciona solo con sus propios archivos, pero no son necesarios los externos. Lo más frecuente en el nombre del archivo es la versión.
fuente
Esto probablemente sea realmente frustrante, y no parece que estés haciendo algo mal.
El problema es probable que algo entre su navegador y el archivo de secuencia de comandos que está llamando haga un poco de caché.
Para determinar qué es, déjame preguntarte cómo estás navegando hacia la url localhost.
Ejemplos:
Si está ejecutando
file://path/to/file.html
esto significa que no está navegando a través de un servidor web / proxy. Si eshttp://[something]/file.html
así, está ejecutando algún tipo de servidor web y ese es probablemente el culpable. Busque algún tipo de configuración donde pueda desactivar el almacenamiento en caché.Si no está utilizando un servidor web y literalmente está navegando directamente a un archivo html local sin un servidor web, entonces sugeriría que el navegador sea el culpable. Si este es el caso, sugeriría desactivar el almacenamiento en caché del navegador como sugirió Martin Shishkov .
fuente
http://localhost/ProjectName/index.html
donde este entorno en el que puede desactivar el almacenamiento en caché puede ser?file://path/to/projectName/index.html
. Eso eliminará el servidor web de la ecuación. Para continuar usando IIS y simplemente arreglar el caché, consulte este artículo: support.microsoft.com/en-us/help/247404/…Chrome hace esto cuando, si el archivo no ha cambiado demasiado, no está seguro de lo que significa, utilizará la versión de caché "compilada". Para html significa árbol don analizado. Para código precompilado JS, etc.
Por lo general, hay formas de abordar esto, muchos marcos usan hash dentro de los nombres de archivo, como:
main.md5hash.js
porque cambiar el nombre del archivo invalida cualquier caché.Entonces te quedará posiblemente con html sin actualizar. Y para ser claros, no estoy seguro, siempre puedes agregar comentarios con una nota aleatoria ... como una fecha.
fuente
Según las actualizaciones de su respuesta, diría que su problema es causado por IIS v7 que utiliza la memoria de su PC para almacenar en caché, no su disco duro local, por eso
Hard reload
y todos los demás métodos parecen no funcionar correctamente.Podría pensar en 3 soluciones:
1. Arreglando su problema de caché IIS: (No probado debido al hecho de que no tengo una PC con IIS)
extension
que desea deshabilitar en caché.aspx
, es decir , .css, .js, etc. (¿uno en el momento, supongo?)Fuente de la solución : lea más sobre IIS 7 Cache
2. Uso de algunas alternativas a IIS Hay bastantes, pero recomendaría (según mi experiencia) WAMP o XAMPP Ambos le brindarán un mejor "entorno" de desarrollo y ambos son compatibles con Windows 7. Además, si está familiarizado con VS Code , solo puede usar la extensión Live Server .
3. Use el modo de incógnito de Chrome mientras desarrolla. (No estoy seguro si funciona para IIS7)
fuente
.js
archivos? Depende de los cambios que realice.