Il Web è disconnesso e dobbiamo tenerne conto. L’approccio Offline First è importante.
Siamo tutti convinti di vivere in un mondo connesso dove tutto è sempre disponibile. Stiamo dicendo questo da anni, ma siamo sicuri che questo sia vero?
La realtà è molto diversa perché viviamo in un mondo in cui le connessioni non sono così stabili come sembra. Sappiamo che in alcuni paesi Internet non è ne veloce e ne affidabile, ma anche nei paesi, cosiddetti avanzati, la disponibilità di connessioni Internet stabili è un’utopia.
Sappiamo che siamo sempre più connessi attraverso i dispositivi mobili e quindi dipendenti dalle reti mobili (3G, 4G) che in alcuni contesti possono lasciarci senza connessione. Ad esempio quando andiamo in campagna, in montagna oppure quando siamo in viaggio in aereo oppure quando siamo in un altro paese e disattiviamo il servizio di rete a causa dei costi alti del roaming.
Pensando a tutti questi problemi è nata una discussione tra gli addetti ai lavori che negli ultimi due anni è diventata trend topic, soprattutto tra gli sviluppatori web. Con il tempo questa discussione ha preso il nome di Offline First.
Cosa significa Offline First?
Con questo termine è stata lanciata una sfida soprattutto agli sviluppatori di applicazioni web.
L’obiettivo è quello di creare applicazioni web che possano funzionare anche in assenza della connessione Internet.
La cosa importante è pensare fin dalla progettazione che l’applicazione dovrà essere utilizzata anche senza connessione di rete.
Per fare questo la prima cosa da fare è pensare all’architettura e alle tecnologie da utilizzare per rendere questo possibile. Sappiamo che la tendenza degli ultimi anni è quello di spostare gran parte dell’applicazione al client (pc) utilizzando librerie JavaScript per distribuire il carico di lavoro tra il server e il client. Questo approccio ha creato applicazioni performanti e quindi più efficienti.
Per creare applicazioni offline è necessario prendere in considerazione l’uso di sistemi di caching locali e meccanismi di sincronizzazione dei dati.
Cache e sincronizzazione
Se l’applicazione web che dobbiamo implementare risulta essere un insieme di pagine e contenuti statici risulta relativamente semplice assicurarsi che funzioni anche una volta disconnessi. Tutto si complica quando parliamo di un’applicazione dinamica.
Tra le applicazioni più note basate su questo concetto troviamo Google Gmail, che consente agli utenti di continuare a leggere i messaggi di posta elettronica scaricati anche una volta persa la connessione a Internet.
Per creare applicazioni web dinamiche che funzionino offline, bisogna prima di tutto salvare i dati o parte dei dati a livello locale. Ci sono diversi approcci per salvare i dati nella cache locale, ma consiglio di utilizzare una libreria che fornisce le API per salvare facilmente su IndexedDB, WebSQL o storage locale.
Una delle librerie più utilizzate è localForage ed è disponibile su GitHub. Con questa libreria, è possibile salvare vari tipi di dati come, oggetti, array o file media.
I dati memorizzati nella cache locale quando la connessione Internet è nuovamente disponibile dovranno poi essere sincronizzati. Un’altra libreria molto interessante è PouchDB che non solo rende disponibile API per il salvataggio dei dati in locale come localForage ma in più fornisce un potente sistema di sincronizzazione dei dati tra client e server.
PouchDB è un database JavaScript open source progettato per lavorare con i browser ed è stato pensato per aiutare gli sviluppatori web a creare applicazioni che funzionino offline. La libreria è disponibile su GitHub.
Conclusione
Grazie alla capacità dei browser di supportare la navigazione offline e grazie a tecnologie come quelle citate, oggi è molto più facile progettare e realizzare applicazioni web che funzionino anche offline.
Offline First è diventato un argomento di discussione ma è ancora raro vedere le applicazioni web funzionare davvero una volta offline. Non è un problema tecnico, ma la sensibilità e la diffusione del concetto e la cultura di accessibilità che non è diffusa come dovrebbe essere.
Oggi è comune a tutti i livelli l’importanza di realizzare applicazioni che siano fruibili correttamente su dispositivi mobile e tutti ben conoscono il valore del Responsive Design. Mi auguro che lo stesso possa accadere per Offline First.
Per ulteriori informazioni sugli standard da adottare, si prega di visitare il W3C.
Questo articolo è stato pubblicato originariamente qui in lingua Inglese.