En un mundo cada vez más conectado, parecería paradójico que uno de los más importantes atributos del HTML5 sea la persistencia, que viene a ser la manera en la que los iniciados nos referimos a la capacidad de guardar datos que sobrevivan consistentemente entre sesiones, a nivel de aplicación.
El caso es que no es paradójico en absoluto, una de las grandes ventajas de la apps que pueblan los App Stores y Markets varios, es el funcionamiento offline, que nos abstrae de los vaivenes de nuestra conexión 3G.
Los intentos de "aplicativizar" la web no son nuevos, como hemos mencionado anteriormente en este blog, Google Gears tuvo bastantes buenos resultados, pero esta claro que lo que se necesitaba era algo más generalizable, no dependiente de plugins, y el que Google entendiera esto y decidiera cambiar su foco de atención al estándar, está siendo fundamental.
También puede que lo este siendo el constante tira y afloja entre los desarrolladores que alimentan los markets/stores y sus gestores, que está haciendo que muchos de los primeros estén echando un buen vistazo al HTML5.
Pero bueno, el objeto de este post es describir cuales son las opciones para conseguir la famosa persistencia, en principio contamos con cuatro características que nos van a ayudar en esa tarea:
- WebStorage
- Web SQL Database
- IndexedDB
- Application Cache
Lo primero es entender que es cada una de ellas, pero también, como iremos viendo, cual es el grado de adopción entre los diferentes navegadores. En la tarea del saber de que va esto, os recomiendo que leais este tutorial, muy bueno, un poco largo, pero muy bueno. Se centra en la idea de que lo que la persistencia consigue es el funcionamiento online-offline, yo creo que hay más puntos interesantes, pero es un buen comienzo.
Por resumir, WebStorage, es un metodo muy sencillo par almacena parejas de llave-valor (key-value) como sucede con los objetos javascript, el problema es que no soporta cosas tan básicas como las transacciones, y tiene por ello bastante peligro a la hora de utilizarlo. La cosa es que nos llevamos años volviendo locos con las cookies... y... ¿no tienen mucho más peligro y menos ventajas?
El Web SQL Database, es más profesional, es precisamente lo que anuncia, una base de datos SQL de toda la vida, basada en SQLite, pero el problema es que ni Microsoft ni Firefox parece que tienen planes de implementarlo... Esto nos lleva a IndexedDB, que antes se llamaba WebSimpleDB, y que tiene todavía menos soporte, pero parece que todos dicen que la van a soportar... porque el W3C se ha puesto borde.
Esta claro ¿no?... de momento, yo sólo me arriesgaría a desarrollar con WebStorage y, para apps muy orientadas a una plataforma, con Web SQL DB.
Harina de otro costal es almacenar la "lógica" de la aplicación, para eso está el AppCache, que al final lo que hace es almacenar los ficheros necesarios para ejecutar la App, esta si tiene un soporte más o menos generalizado, pero aún así todavía nos faltaría la última pata de la persistencia, la que se refiere a ficheros auxiliares, documentos, etc. esto es cosa de la File API, muy prometedora, pero aún poco soportada y con el estándar bastante verde.
La conclusión es que como en casi todo en HTML5, hay que andarse con cuidado, tener muy en cuenta cual es la plataforma objetivo, y decidir entonces como se ataca el desarrollo...
Hasta la próxima entrega.