Ammettiamolo, AppCache è fastidiosa e presenta problemi [1, 2, 3]. Un grande limite è il fatto che non è possibile memorizzare gli asset dinamicamente nella cache on demand. In pratica, è tutto o niente quando si tratta di mettere un'app offline. Tutti i contenuti del manifest vengono memorizzati nella cache in anticipo oppure nulla viene memorizzato nella cache.
L'API FileSystem HTML5 diventa una soluzione allettante per i difetti di AppCache. È possibile archiviare in modo programmatico file e gerarchie di cartelle nel file system locale (sandbox) e successivamente aggiungere/aggiornare/rimuovere singole risorse in base alle necessità. Il mio collega Boris Smus ha persino scritto un'ottima libreria per gestire questo tipo di memorizzazione nella cache offline nel contesto dei giochi. La stessa idea può essere estrapolata per funzionare con qualsiasi tipo di app web.
crbug.com/89271 è una correzione importante per l'API FileSystem, grazie alla quale i percorsi filesystem: URL relativi funzionano come un charm.
Supponiamo, ad esempio, di aver salvato index.html nella cartella principale del file system (fs.root
), creato una cartella img e salvato "test.png". L'URL filesystem:
per questi due file sarebbe rispettivamente filesystem:http://example.com/temporary/index.html
e filesystem:http://example.com/temporary/img/test.png
. Quindi, per utilizzare "test.png" per un img.src
, dovevo utilizzare il suo percorso assoluto completo: <img src="filesystem:http://example.com/temporary/img/test.png">
. Ciò significava riscrivere tutti gli URL relativi in index.html perché rimandino all'URL filesystem:
del file corrispondente. Non è niente male! Ora, con questa correzione di bug, posso mantenere il percorso relativo del file (<img src="img/test.png">
) perché verrà risolto correttamente in un'origine del file system.
Questa funzionalità rende semplice trascinare una pagina e salvare tutte le sue risorse offline, conservando al contempo la stessa struttura di cartelle della versione online.