Necesito construir una aplicación web HTML5 fuera de línea para un iPad/dispositivo de tableta donde el usuario puede descargar un conjunto de datos (tabla de datos) del servidor y almacenarlo en el dispositivo. El usuario podría desconectarse del servidor y ver/editar los datos localmente en el dispositivo. Esto es para personas que trabajan en áreas remotas donde no hay cobertura celular y necesitan recopilar/actualizar datos. Cuando vuelven a la oficina, pueden sincronizar/cargar los datos nuevamente al servidor. La razón por la que debe ser HTML5 es que es independiente de la plataforma, es decir, puede ejecutarse en iOS, Android, etc. siempre que tenga un navegador web moderno que admita HTML5.Wrapper functions for IndexedDB
Ahora ya he creado el sistema utilizando el almacenamiento local HTML5 (para los datos) y el caché de aplicaciones sin conexión HTML5 (para las páginas/css/js/images) y funciona bastante bien con pequeños conjuntos de datos (puedo ver , edite y guarde sin conexión y cargue/sincronice mientras está en línea). Ahora necesito escalar hasta 10,000 filas de datos. Funciona, pero es bastante lento y bloquea el navegador durante 10 segundos mientras se carga en una máquina Intel quad core de 8GB.
Así que he estado investigando unos mejores alternativas que el almacenamiento local:
1) WebSQL: sería capaz de consultar los datos utilizando el lenguaje SQL y hacer une etc. El problema es que ahora está en desuso una no lo hará ser apoyado por más tiempo, así que no quiero invertir tiempo construyendo algo para ello.
2) IndexedDB: Utiliza un almacén de objetos (que técnicamente ya estoy almacenando objetos usando la API de almacenamiento local y almacenando usando JSON). Potencialmente es más rápido ya que usa índices con el servidor SQL lite. Hay muchos códigos repetitivos para realizar tareas sencillas, como crear la base de datos, agregarla, leerla, iterar sobre ella. Solo quiero hacer una consulta simple como select(xyc, abc).where(abc = 123).limit(20)
, pero en su lugar tengo que escribir una gran cantidad de código JavaScript para hacerlo. ¿Cómo se puede escribir su propio código para hacer combinaciones entre tablas, algún ejemplo en cualquier lugar?
He encontrado un jQuery plugin que puede hacer la vida más simple. ¿Hay otras alrededor u otras bibliotecas que alivien el dolor de usar IndexedDB?
¡Muchas gracias!
Creo que WebSQL ha sido abandonado a favor de IndexedDB ... –
Cuidado con WebSQL, Apple 5.0.1 ya no persiste Datos de WebSQL. En otras palabras, esto lisiará la base de datos local de su aplicación. Phonegap tiene una solución alternativa. https://issues.apache.org/jira/browse/CB-330 – Wytze