7

Por motivos de rendimiento, quiero que algunas de mis páginas web utilicen recursos almacenados en caché para usar sin conexión (imágenes, CSS, etc.) pero no la página en caché, ya que el contenido se generará dinámicamente.Omitir la página actual desde la aplicación HTML5 sin conexión pero usar recursos almacenados en memoria caché

Una forma de hacer esto sería refactorizar mis páginas para que carguen el contenido dinámico a través de AJAX o buscando en LocalStorage. Los detalles pueden variar, pero en términos generales, algo así.

Si es posible, preferiría encontrar una manera de simplemente indicarle al navegador que use recursos almacenados en caché (de nuevo, imágenes, CSS, etc.) para la página pero que no almacene en caché el contenido HTML (generado dinámicamente) sí mismo.

¿Hay alguna manera de hacerlo con la aplicación sin conexión HTML5? Tengo la impresión de que la respuesta es "no" porque:

  • Cualquier página que incluya el manifiesto se almacenará en caché, por lo que no puedo especificar los recursos almacenados en caché en la página.
  • No hay forma de decirle a una página anterior "usar recursos sin conexión para esta otra página pero en realidad no almacenar en caché el HTML en esa página". Debe especificar la página en sí, lo que significa que el HTML se almacenará en caché.

¿Estoy equivocado al respecto? Parece que hay probablemente alguna manera difícil (o no tan complicada) de evitarlo. Ahora que lo he escrito, me pregunto si incluir la página explícitamente en la sección NETWORK del manifiesto de la aplicación funcionará.

Respuesta

7

Mi respuesta es "sí".

He trabajado en una aplicación web donde he enumerado todos los recursos necesarios en el manifiesto, y configuré la sección NETWORK en .

El manifiesto se incluye solo en la página de destino principal. Por lo tanto, todos los recursos se almacenan en la memoria caché la primera vez que visita el sitio y funciona de maravilla.

En resumen,

  • una de sus páginas debe incluir el manifiesto, y consecuentemente se caché.

    quizás pueda cargar el manifiesto en un iframe y no tener toda la página en caché, solo una idea.

  • lista de todos los recursos que se almacenan en caché en la sección CACHE

  • configurar la sección NETWORK a *
+2

Oh crud, en realidad solo funciona así con el escenario de uso típico que ya estaba empleando. ¡Ahora no me siento tonto por no haber probado eso primero! – Trott

+1

¿está seguro de que de esta manera la página no almacenada en caché usa los recursos en caché? No estoy muy seguro. esto funciona, pero creo que la página cargará los recursos del servidor ... – pkyeck

+0

@pkyeck la aplicación utilizará los recursos almacenados en caché siempre que esté disponible. Para obtener el último contenido, deberá modificar el manifiesto o borrar la caché. Una buena técnica es agregar MD5 a su manifiesto y escribir el valor en el archivo de manifiesto para que cuando mi manifiesto cambie el valor de MD5 cambie lo que se escribe en el archivo activando una actualización de caché. Esto se hace por el lado del servidor por cierto. – gotomanners

2

Estoy bastante seguro de que la respuesta a esto es no. Si usa la sección de red en Chrome, muestra qué recursos se cargan desde la memoria caché y cuáles se cargan desde el servidor. Intenté configurar la aplicación como se describió anteriormente y los recursos siempre se cargan desde el servidor. ¿Sería correcto suponer que si la página actual no está en la aplicación, entonces no se molestará en registrar la aplicación para ninguno de los recursos?

0

Lo que he encontrado que está funcionando es hacer una lista de los archivos que no desea almacenar en la aplicación en la sección NETWORK: del manifiesto. Para mí, eso significaba agregar * .asp * a la sección de red. Ahora, ninguno de los archivos asp clásicos o aspx se almacenan en caché.

Cuestiones relacionadas