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