2011-05-07 27 views
9

Tengo una página html que incorpora una aplicación flash (flexible).Google Chrome Cache

que tienen los siguientes encabezados:

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> 
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-STORE"> 
<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Expires" CONTENT="-1"> 

Además, cada vez que una nueva versión de la aplicación, puedo cambiar el nombre del archivo. Por lo tanto, se convierte en algo así como MyApp_v1.swf, que luego se actualiza a MyApp_v2.swf.

A pesar de esto, cromo aún almacena en caché la página html y el archivo swf. Este es un problema importante, ya que los clientes no ven el swf actualizado a menos que borren su caché del navegador.

Incluso traté de evitar esto con el cambio en el archivo .htaccess, y cambiar el nombre del archivo index.html que aloja el archivo SWF:

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule ^(.*)$ https://www.mysite.com/app[R,L] 
DirectoryIndex index.html #this was changed from myapp.html 

Incluso después de hacer esto, Chrome sigue caja SWF, y es TODAVÍA leyendo del viejo archivo html. Hago una fuente de vista en html, y sigue mostrando el archivo anterior.

Todo esto funciona bien en cualquier otro navegador.

Respuesta

5

Estos dos informes de errores se refieren, una buena información relevante aquí:

Issue 28035 - chromium - Cache doesn't adhear to No cache options (google crome)

Issue 64139 - chromium - Cache isn't revalidated properly, no-cache directive

Otra solución puede consistir en añadir cache-control o pragma cabeceras específicas HTTP como se ha mencionado en los enlaces anteriores

Además, pregunta tonta, borró la memoria caché de Chrome antes de probar su etiqueta <meta> sin caché s? preguntándose si todavía está usando el caché antes de sus cambios.

+0

Desafortunadamente esta no es una solución completa, ya que no es posible para mí decirle a todos mis clientes que borren su caché. Básicamente, están para siempre en tierra de nadie con la página incorrecta para siempre. Supongo que otra opción es mover toda la aplicación a un nuevo directorio en el servidor y usar un.htaccess redirigir. Esto debería forzar una actualización adecuada y anular el caché del navegador, ¿verdad? – JonoB

+1

si agrega un parámetro de solicitud en el enlace de cualquier atributo src o href como src = "mipaht.jpg? Ver = 1" forzará al navegador a actualizar la fuente, funciona para javascript, imágenes, css, así que tal vez en este caso también funcionará ... – ncubica

+0

y si utiliza una cadena dinámica, como la fecha y hora, puede asegurarse de que los usuarios siempre descarguen una nueva versión y nunca guarden en la memoria caché. ejemplo: 'src =" miarchivo.swf? ver = 1407279708' – DrCord

2

Utilice esta "no-store" etiqueta extra, y la memoria caché funciona bien en cromo (cromo) como en los otros navegadores capaces:

cabecera ("Cache-Control: no-cache, no-store, debe revalidar ");

encabezado ("Pragma: no-cache, no-store");

0

Para todos ustedes struggeling con este
he encontrado algo simple que funciona ...

Traté
1. CTRL + F5
2. Ctrl + Shift + 5
3. establecer el "no caché" en las herramientas de desarrollo ..

lo que funcionó para mí en el final es
Simplemente mantenga pulsada la tecla CTRL mientras hace clic el ícono de recarga!

+0

No es una solución. Si la página indica "no-caché", no debería tener que forzarla manualmente para que respete la directiva. Además, esto funcionaría con o sin la no-caché especificada – cpu