È necessario creare un'applicazione Web HTML5 offline per un dispositivo iPad/tablet in cui l'utente può scaricare un set di dati (tabella di dati) dal server e memorizzarlo sul dispositivo. L'utente può quindi disconnettersi dal server e visualizzare/modificare i dati localmente sul dispositivo. Questo è per le persone che lavorano in aree remote dove non c'è copertura cellulare e devono raccogliere/aggiornare i dati. Quando tornano in ufficio possono sincronizzare/caricare i dati sul server. La ragione per cui deve essere HTML5 è quindi la piattaforma agnostica, cioè può essere eseguita su iOS, Android ecc. Purché disponga di un browser Web moderno che supporti HTML5.Funzioni wrapper per IndexedDB
Ora ho già creato il sistema utilizzando la memoria locale HTML5 (per i dati) e la cache di applicazioni offline HTML5 (per le pagine/css/js/images) e funziona abbastanza bene con piccoli set di dati (posso vedere , modifica e salva offline e carica/sincronizza online). Ora ho bisogno di scalare fino a 10.000 file di dati. Funziona ma è piuttosto lento e blocca il browser per 10 secondi mentre carica su un computer Intel quad core da 8 GB.
Così Ho fatto ricerche alcune alternative migliori di archiviazione locale:
1) WebSQL: sarebbe in grado di interrogare i dati utilizzando il linguaggio SQL e fare si unisce, ecc Il problema è che è ora sconsigliato un no essere supportato più a lungo quindi non voglio investire tempo a costruire qualcosa per questo.
2) IndexedDB: utilizza un archivio oggetti (che tecnicamente sto già archiviando oggetti utilizzando l'API di archiviazione locale e l'archiviazione utilizzando JSON). Potenzialmente è più veloce in quanto utilizza gli indici con il backend SQL lite. C'è un sacco di codice boilerplate per svolgere compiti semplici come la creazione del database, aggiungendo ad esso, leggendo da esso, iterando su di esso. Voglio solo fare una semplice query come select(xyc, abc).where(abc = 123).limit(20)
ma invece devo scrivere un sacco di codice JavaScript per farlo. Come si scrive il proprio codice per fare join tra tabelle, qualche esempio dovunque?
Ho trovato uno jQuery plugin che potrebbe semplificare la vita. Ce ne sono altri in giro o altre librerie che allevia il dolore dell'uso di IndexedDB?
Grazie mille!
Credo che WebSQL sia stato abbandonato in favore di IndexedDB ... –
Attenzione per WebSQL, Apple 5.0.1 non persiste più dati WebSQL. In altre parole, questo danneggerà il database locale della tua app. PhoneGap ha una soluzione alternativa. https://issues.apache.org/jira/browse/CB-330 – Wytze