L'
HTML 5 possiede un meccanismo di caching che permette di memorizzare localmente (sul client) i file necessari al funzionamento di una applicazione web-based (html, image, font...) anche quando questa è
senza connessione di rete (
offline).
Per abilitare un'applicazione web-based al funzionamento offline è necessario specificare nell'header della pagina,tramite l'attributo
manifest, un file definito appunto
manifest:
<!DOCTYPE html>
<html manifest="/cache.manifest">
...
successivamente va creato il file manifest con l'elenco delle risorse che devono essere messe in cache dal client. Questo è un esempio:
CACHE MANIFEST
# ver 8
CACHE:
/TestHtmlOffline.html
/app.js
/contents/angular.min.js
/contents/css/bootstrap.min.css
/contents/fonts/glyphicons-halflings-regular.eot
/contents/fonts/glyphicons-halflings-regular.svg
/contents/fonts/glyphicons-halflings-regular.ttf
/contents/fonts/glyphicons-halflings-regular.woff
/contents/fonts/glyphicons-halflings-regular.woff2
Non includere il file manifest
Il file deve iniziare con le keyword
CACHE MANIFEST successivamente l'elenco dei file da tenere in cache. Se non sono presenti altre sezioni la sezione
CACHE: può essere omessa.
Eventualmente può essere indicata anche una sezione
NETWORK: dove vanno indicati i file che devono
sempre essere recuperati dalla rete.
CACHE MANIFEST
...
NETWORK:
/api
Esiste un altra sezione
FALLBACK: dove è possibile indicare uno o più file alternativi da visualizzare nel caso non si riesca a recuperare una risorsa:
CACHE MANIFEST
...
FALLBACK:
/* offline.html
Attenzione il file manifest deve essere ritornato dal web server con content type uguale a text/cache-manifest.
Quando si vuole forzare un aggiornamento bisogna apportare una modifica al file manifest, ad esempio modificando un commento:
CACHE MANIFEST
# ver 9
CACHE:
/TestHtmlOffline.html
...
La prima volta che si visita l'applicazione il browser legge il file
cache.manifest e memorizza sul client tutti i file elencati in esso.
Le volte successive rilegge solo il file manifest dalla rete e preleva le altre risorse elencate dalla cache a meno che il file cache non sia variato, in questo caso viene aggiornata la cache ricaricando tutti i file.
Se non è presente la connessione di rete i file vengono letti dalla cache.
Vedi anche
MDN: Utilizzare l'application cache