html5以前的網頁,都是無鏈接,必須聯網才能訪問,這其實也是web的特點,這其實對於PC是時代問題並不大,但到了移動互聯網時代,設備終端位置再也不固定,依賴無線信號,網絡的可靠性變得下降,好比坐在火車上,過了一個隧道(15分鐘),便沒法訪問網站,這對於web的傷害是很大的。javascript
html5便引入了cache manifest 文件。那麼什麼是cache manifest呢,接下來會講到。css
首先manifest是一個後綴名爲minifest的文件,在文件中定義那些須要緩存的文件,支持manifest的瀏覽器,會將按照manifest文件的規則,像文件保存在本地,從而在沒有網絡連接的狀況下,也能訪問頁面。html
當咱們第一次正確配置app cache後,當咱們再次訪問該應用時,瀏覽器會首先檢查manifest文件是否有變更,若是有變更就會把相應的變得跟新下來,同時改變瀏覽器裏面的app cache,若是沒有變更,就會直接把app cache的資源返回,基本流程是這樣的。html5
全部主流瀏覽器均支持應用程序緩存,IE須要10+版本java
html新增了一個manifest屬性,能夠用來指定當前頁面的manifest文件。web
建立一個和html同名的manifest文件,好比頁面爲index.html,那麼能夠建一個index.manifest的文件,而後給index.html的html標籤添加以下屬性便可:瀏覽器
<html lang="en" manifest="index.manifest">
接下來詳細說說manifest的細節,一個典型的manifest文件代碼結構像下面這樣:緩存
CACHE MANIFEST #version 1.3 CACHE: test.css NETWORK: *
manifest文件,基本格式爲三段: CACHE, NETWORK,與 FALLBACK,其中NETWORK和FALLBACK爲可選項。服務器
而第一行CACHE MANIFEST爲固定格式,必須寫在前面。網絡
以#號開頭的是註釋,通常會在第二行寫個版本號,用來在緩存的文件更新時,更改manifest的做用,能夠是版本號,時間戳或者md5碼等等。
標識出哪些文件須要緩存,能夠是相對路徑也能夠是絕對路徑。
a.css http://yanhaijing.com/a.css
這一部分是要繞過緩存直接讀取的文件,可使用通配符*。
下面的代碼 「login.asp」 永遠不會被緩存,且離線時是不可用的:
NETWORK:
login.asp
可使用星號來指示全部其餘資源/文件都須要因特網鏈接:
NETWORK:
*
指定了一個後備頁面,當資源沒法訪問時,瀏覽器會使用該頁面。該段落的每條記錄都列出兩個 URI—第一個表示資源,第二個表示後備頁面。兩個 URI 都必須使用相對路徑而且與清單文件同源。可使用通配符。
下面的例子中,若是沒法創建因特網鏈接,則用 「404.html」 替代 /html5/ 目錄中的全部文件。
FALLBACK:
/html5/ /404.html
下面的例子中,則用 「404.html」 替代全部文件。
FALLBACK:
*.html /404.html
以下三種方式,能夠更新緩存:
html5中引入了js操做離線緩存的方法,下面的js能夠手動更新本地緩存。
window.applicationCache.update();
若是用戶清除了瀏覽器緩存(手動或用其餘一些工具)都會從新下載文件。