2010-12-06 14 views
5

Me gustaría usar localStorage para 'almacenar en caché' algunos archivos JS y CSS en una aplicación web que se usa principalmente en dispositivos móviles (es decir, restricciones de ancho de banda). Estoy pensando que iba a funcionar algo como esto:Guarde todos los archivos utilizando localStorage

  1. Las cargas de la página con un pequeño código que contiene setup.js que comprueba para ver si localStoragebigScriptFile.js se ha almacenado previamente.
    1. Si no está almacenado, bigScriptFile.js se descarga y almacena para la próxima visita.
    2. Si se ha almacenado, a continuación, bigScriptFiles.js se lee desde localStorage y se carga/correr como si se ha descargado como un archivo normal (es decir, <script src="http://example.com/bigScriptFile.js"></script>)

lo que no estoy seguro de cómo do es el paso 1.1 - almacenar el archivo JS. (Sé que puedo sólo cadenas de tiendas en localStorage y sé cómo utilizar JSON.stringify().)

Seguro que no es tan simple como usar de escape():
localStorage.setItem('bigScriptFile', escape('myJScode')) para almacenar y
unescape(localStorage.getItem['bigScriptFile']) al recuperar

Incluso si es así de fácil, ¿cómo uso JS para obtener los contenidos de bigScriptFile.js como una cadena? ¿Tal vez haciendo una llamada ajax a un script PHP que devuelve los contenidos?

Respuesta

11

Debería colocar los encabezados de caché correcto en los archivos js o mirar el HTML5 cache manifest.

W3C specification.

+0

Si he entendido bien, el manifiesto sólo controla los archivos de la caché del navegador. Si se elimina la caché, entonces los archivos deben ser descargados nuevamente. Dado que esta aplicación está destinada principalmente para ejecutarse en dispositivos iOS donde, entre otras cosas, las páginas abiertas en Safari a veces se vacían para reclamar memoria, estoy buscando algo más permanente. Me doy cuenta de que esto significa que necesitaré una forma de verificar que la versión 'localStorage' esté desactualizada (y si es así, descargue y almacene deliberadamente la nueva versión) pero eso no debería ser demasiado difícil. Estoy más preocupado por cómo almacenar de manera confiable un archivo JS completo como una cadena – craigpatik

+1

No, los archivos en el manifiesto de caché se almacenan para uso fuera de línea/posterior. Puede cerrar el navegador y el único archivo que se vuelve a descargar es el archivo de manifiesto de caché. Me reservo el derecho de que no sé cómo se implementa esto en Safari en IOS –

+0

El manifiesto de caché está destinado a webapps sin conexión: si se cambia el manifiesto, el navegador debe validar todos los recursos. Mientras su manifiesto no se modifique, los archivos se mantendrán vivos y su sitio también funcionará cuando el navegador no pueda conectarse a Internet. – olliej

Cuestiones relacionadas