參考html
簡介web
APPCache的優點 chrome
APPCache的工做流程 編程
如何開啓APPCache? 瀏覽器
經過在頁面中的 元素上增長 manifest 屬性來開啓應用緩存,就像這樣:
```緩存
...服務器
```
a. manifest 屬性值是 緩存清單(cache manifest) 文件,這個文件包含了瀏覽器須要爲應用緩存的資源(文件)列表
b. 你應當在每個意圖緩存的頁面上添加 manifest 特性。瀏覽器不會緩存不帶有manifest 特性的頁面,除非這個頁面已經被寫在清單文件內的列表裏了。你沒有必要添加全部你意圖緩存的頁面的清單文件,瀏覽器會將用戶訪問過的並帶有 manifest 特性的全部頁面添加進應用緩存中。網絡
文檔加載和更新流程 session
使用了APPCache以後文檔加載是這樣的:app
- 當瀏覽器訪問一個包含 manifest 特性的文檔時,若是應用緩存不存在,瀏覽器會加載文檔,而後獲取全部在清單文件中列出的文件,生成應用緩存的第一個版本。
- 後續再次訪問時,瀏覽器直接從應用緩存(而不是服務器)中加載文檔與其餘在清單文件中列出的資源。同時,瀏覽器還會向 window.applicationCache 對象發送一個 checking 事件,在遵循合適的 HTTP 緩存規則前提下,獲取清單文件
- 把上面提到的checking事件後獲取到的服務器端的文件清單和當前瀏覽器緩存的清單副本比對,若是當前瀏覽器緩存的清單副本是最新的,瀏覽器將向 applicationCache 對象發送一個 noupdate 事件,到此,更新過程結束。注意,若是你在服務器修改了任何緩存資源,同時也應該修改清單文件,這樣瀏覽器才能知道它須要從新獲取資源。
- 若是清單文件已經改變,文件中列出的全部文件(也包括經過調用 applicationCache.add() 方法添加到緩存中的那些文件)會被獲取並放到一個臨時緩存中,遵循適當的 HTTP 緩存規則。對於每一個加入到臨時緩存中的文件,瀏覽器會向 applicationCache 對象發送一個 progress 事件。若是出現任何錯誤,瀏覽器會發送一個 error 事件,並暫停更新。
- 一旦全部文件都獲取成功,它們會自動移送到真正的離線緩存中,並向 applicationCache 對象發送一個 cached 事件。鑑於文檔早已經被從緩存加載到瀏覽器中,因此更新後的文檔不會從新渲染,直到頁面從新加載(能夠手動或經過程序) 這裏特別注意一下,當你在服務器端修改了文件同時也更新了清單文件,刷新頁面卻沒有顯示咱們的修改,這並無錯誤,好好理解前面那句說明,你要想看到你的修改,能夠簡單的再刷新一次。
上面狀態的變動,咱們能夠運行本示例,而後查看 console控制檯的輸出信息:
清除離線緩存
manifest清單文件
- 緩存清單文件是一個純文本文件,它列出了全部瀏覽器應該緩存起來的資源,以便可以離線訪問
- 示例:
CACHE MANIFEST
# v1 - 2011-08-13(註釋 「v1」頗有必要存在。只有當清單文件發生變化時,瀏覽器纔會去更新應用緩存。若是你要更改緩存資源(好比說,你使用了一張新的 header.png 圖片),你必須同時修改清單文件中的內容,以便讓瀏覽器知道它們須要更新緩存)
# This is a comment.
http://www.example.com/index.html
http://www.example.com/header.png
http://www.example.com/blah/blah
- 一個緩存清單文件能夠包含三段內容 (CACHE, NETWORK, 和 FALLBACK, 下面詳細討論)
- 資源可使用絕對或者相對 URL 來指定(例如 index.html)
- 重要:不要在清單文件中指定清單文件自己,不然將沒法讓瀏覽器得知清單文件有新版本出現。
- CACHE:
這是緩存文件中記錄所屬的默認段落。在 CACHE:段落標題後(或直接跟在 CACHE MANIFEST 行後)列出的文件會在它們第一次下載完畢後緩存起來。
- NETWORK:
在 NETWORK:段落標題下列出的文件是須要與服務器鏈接的白名單資源。全部相似資源的請求都會繞過緩存,即便用戶處於離線狀態。可使用通配符。
- FALLBACK:
FALLBACK:段指定了一個後備頁面,當資源沒法訪問時,瀏覽器會使用該頁面。該段落的每條記錄都列出兩個 URI—第一個表示資源,第二個表示後備頁面。兩個 URI 都必須使用相對路徑而且與清單文件同源。可使用通配符。
- CACHE, NETWORK, 和 FALLBACK 段落能夠以任意順序出如今緩存清單文件中,而且每一個段落能夠在同一清單文件中出現屢次。
一個複雜且完整的緩存清單文件示例:
CACHE MANIFEST
# v1 - 2015-05-6 12:18:00 (Version 版本號,強烈建議設置,由於只有更新了manifest清單文件,瀏覽器纔會進行update更新緩存的操做)
# 這是一個manifest清單文件,這裏CACHE段落中列出了須要緩存的文件.
cache_1.txt
cache_2.html
# 列出的文件是須要與服務器鏈接的白名單資源。全部相似資源的請求都會繞過緩存,即便用戶處於離線狀態。可使用通配符
NETWORK:
ApplicationCache筆記.md
#段指定了一個後備頁面,當資源沒法訪問時,瀏覽器會使用該頁面。該段落的每條記錄都列出兩個URI—第一個表示資源,第二個表示後備頁面。兩個 URI 都必須使用相對路徑而且與清單文件同源。可使用通配符
FALLBACK:
fallback.html fallback/fallback.html
緩存清單文件的結構
應用緩存中的資源
緩存狀態
應用緩存都有一個狀態,標示着緩存的當前情況
緩存陷阱
兼容性