2010-01-26 12 views
11

Para ahorrar tiempo de descarga y uso de red del cliente, ¿es posible usar la característica localStorage de HTML5 para almacenar contenidos de hojas de estilo vinculadas, archivos javascript y datos binarios (por ejemplo, imágenes), en lugar de golpear el servidor cada vez?LocalStorage HTML5 para activos (hojas de estilo, JavaScript, imágenes, etc.)

Eso solo complicaría las cosas, ya que supongo que tendría que agregar el elemento vinculado a través de JavaScript en lugar de solo un elemento script o link, rompiendo la página para los que no tienen JavaScript habilitado)? A menos que pueda analizar el contenido (utilizando HEAD solicitado para verificar la fecha de la última modificación y otros encabezados) antes de que el navegador lo descargue.

O mejor solo para pegar con 304 Not Modified y eTag encabezados?

Respuesta

9

Creo que en este caso se debe considerar caché sin conexión:

También puede introducir datos almacén de usuarios en localStorage o sessionStorage:

No utilice globalStorage (no es un estándar).

He escrito un artículo acerca de conexión, consulte: http://hacks.mozilla.org/2010/01/offline-web-applications/

Se trata de fuera de línea, pero tal mecanismo puede ser utilizado para impulsar su aplicación web.

+0

¿Puede beneficiarse del almacenamiento en caché sin que el sitio esté fuera de línea? O es mejor dejar que el navegador lo haga para las hojas de estilo y JavaScript (usando un encabezado de caducidad y configurando un encabezado 304, aunque eso supondría un trabajo adicional en PHP o ASP.NET). Las imágenes ocupan mucho ancho de banda y no se cambian, pero aún se están descargando (como si la caché del navegador no funcionara correctamente) – SamWM

+0

Los archivos solo se obtienen si actualiza su manifiesto (independientemente del estado de conexión del cliente). –

3

Puede base64 codificar su imagen/datos binarios y almacenarla como una cadena en localStorage, utilizando urls base64 no funciona en algunos navegadores, por lo que no es una solución perfecta.

CSS y js estarían bien, podría escribirlos en la página, o utilizar una url base64 también.

No me preocuparía hacer esto rompiendo el sitio para usuarios que no son JS, ya que JS está deshabilitado, no puedes acceder a localStorage de todos modos.

+2

Las personas que no ejecutan js deberían esperar que la mayoría de los sitios web se rompan. Los desarrolladores tienen que pensar de antemano si vale la pena el esfuerzo para apoyarlos. –

+0

Postulo que si está agregando una característica que requiere javascript, no desaprueba totalmente el comportamiento de repliegue original. – garrow

+4

Sí, soy todo para la degradación elegante, pero a veces eso implica un código separado, y es un esfuerzo adicional que a veces no vale la pena, en mi humilde opinión. Lo mismo para IE6. –

Cuestiones relacionadas