¿Hay alguna razón para no usar el almacenamiento local HTML5 para el contenido?

9

En muchos sitios web estáticos, el tamaño total del contenido de texto real de las 20 páginas más populares llegaría a menos de 100 kb.

Me imagino que sería posible aprovechar el almacenamiento local HTML5 para descargar contenido a través de AJAX desde el servidor en un solo archivo, guardarlo en el almacenamiento local y usarlo con un marco JS basado en datos como angularJS. De hecho, podría estar descargando aún más contenido en silencio en segundo plano. Esto podría generar una experiencia de usuario muy rápida y receptiva.

A pesar de esto, no he visto ningún sitio web que funcione de esta manera. ¿Hay alguna razón por la que me estoy perdiendo que haga de esto una mala idea?

Matthew Dolman
fuente
1
No te olvides de hacer que el SEO funcione. Y, ¿realmente necesita reinventar el almacenamiento en caché del navegador?
jfriend00
Olvidas que el navegador hace mucho de esto. Una buena razón para no hacerlo sería: ¿qué pasaría si necesitara actualizar uno de esos recursos?
Neil
Es una mala idea porque es mucho más fácil proporcionar los encabezados de captura correctos para sus solicitudes GET y dejar que los navegadores hagan el trabajo pesado.
Esben Skov Pedersen
@ jfriend00, sí, también me preguntaba sobre el SEO. Creo que el rastreador de Google puede manejar algunos javascript básicos, pero esto probablemente estaría fuera del alcance de sus rastreadores.
Matthew Dolman
@Neil, supongo que podrías tener tiempos de expiración integrados dependiendo del recurso. Como mencioné en la publicación, estaba pensando más en sitios estáticos que no se someterían a actualizaciones de corto plazo
Matthew Dolman

Respuestas:

6

Creo que la respuesta breve a su pregunta es que la razón por la que no ve que suceda mucho como lo que describe es que el almacenamiento local HTML5 no está a la altura de la tarea, y hasta los últimos dos años nos faltó algo se especifica que proporcionaría una mejor solución.

Acerca del almacenamiento local HTML5 específicamente: tiene una condición de carrera y algunos otros problemas que impiden que sea adecuado para su uso en producción para cualquier aplicación en la que desee asegurarse de que no haya corrupción de datos y donde desee poder almacenar más que cadenas. .

Es posible que se solucionen esos problemas en el almacenamiento local, pero la realidad es que ninguno de los proveedores de motores de navegador tiene ningún interés en este momento en invertir más recursos en sus implementaciones de almacenamiento local. Todos preferirían que los desarrolladores web usen alternativas al almacenamiento local.

De todos modos, para el caso de uso que describe, afortunadamente hay soluciones más robustas en proceso. La pieza clave en el futuro será Service Worker y, en el contexto de esta pregunta, las interfaces Service Worker Cache y CacheStorage específicamente.

También IndexedDB es la solución de grado de producción que el tiempo de ejecución web ahora tiene para el caso general de almacenamiento robusto de datos en el cliente, con implementaciones eficientes y con un control más completo sobre el tipo de datos almacenados y cómo se almacenan.

sidehowbarker
fuente
"local storage is in no way up to the task"- , está listo para la tarea. puede volcar allí cualquier respuesta proveniente del servidor, y para aplicaciones simples no rayará el 5MBlímite. no estaba destinado a ello, pero aún así, se puede utilizar con mucho éxito para almacenar en caché las respuestas del servidor.
vsync