隨著應用程序緩存它很容易使Web應用程序的離線版本,通過創建一個緩存清單文件。
什麼是應用程序緩存?
HTML5引入了應用程序緩存,這意味著Web應用程序緩存,並沒有連接到互聯網訪問。
應用程序緩存提供了一個應用三大優勢:
- 離線瀏覽 - 用戶可以使用該應用程序時,他們處於離線狀態
- 速度 - 緩存資源加載速度更快
- 從服務器瀏覽器將只下載更新/改變資源 - 降低服務器負載
背景
Web應用程序包含了需要從網絡下載的網頁。 為了做到這一點,必須有網絡連接。 然而,有些時候用戶無法連接到網絡,由於他們無法控制的情況下,許多實例。 HTML5提供即使不使用緩存清單的網絡連接來訪問Web應用程序的能力。
Web應用程序包括通過網址標識的資源。 這些可以是HTML,CSS,JavaScript,圖片或需要被渲染的web應用程序的任何其他來源。 它們的地址可以被複製到一個清單文件,它可以定期通過Web應用程序的作者進行更新,這說明添加或刪除任何新的網絡地址。 當連接到首次網絡,網絡瀏覽器將讀取HTML5 manifest文件,下載提供的資源,並將它們存儲在本地。 然後,在沒有網絡連接的,Web瀏覽器將轉移到本地副本,而不是和Web應用程序離線渲染。
瀏覽器支持
在表中的數字規定,完全支持應用程序緩存的第一個瀏覽器版本。
API | |||||
---|---|---|---|---|---|
Application Cache | 4 | 10.0 | 3.5 | 4 | 11.5 |
HTML緩存Manifest實施例
下面的例子示出了具有緩存清單的HTML文檔(for offline browsing) :
例
<!DOCTYPE HTML>
<html manifest="demo.appcache">
<body>
The content of the document......
</body>
</html>
試一試» 緩存清單基礎
為了使離線應用工作,緩存清單文件必須由Web開發人員創建。 如果Web應用程序超過一個以上的頁面,然後每個頁面都要有一個指向緩存清單的清單屬性。 引用清單的每一頁都將被存儲在本地。 緩存清單文件是位於服務器的另一部分的文本文件。 它必須包含以下內容類型提供:
text/cache-manifest
要啟用應用程序緩存,包括manifest在文檔的屬性<html>標籤:
<!DOCTYPE HTML>
<html manifest="demo.appcache">
...
</html>
與每一頁manifest當用戶訪問其指定的屬性將被緩存。 如果manifest沒有指定屬性,頁面不會被緩存(unless the page is specified directly in the manifest file) 。
建議的文件擴展的清單文件是: ".appcache"
清單文件需要與送達correct media type ,這是"text/cache-manifest" 。 必須在Web服務器上配置。
清單文件
清單文件是一個簡單的文本文件,它告訴瀏覽器緩存什麼(and what to never cache) 。
清單文件有三個部分:
- CACHE MANIFEST -他們正在下載的第一次後,該標題下所列的文件將被緩存
- NETWORK -文件該標題下的上市要求與服務器的連接,並且永遠不會被緩存
- FALLBACK -此標題下列出的文件指定備用頁面,如果頁面無法訪問
CACHE MANIFEST
第一行中,CACHE MANIFEST,是必需的:
CACHE MANIFEST
/theme.css
/logo.gif
/main.js
上面的清單文件列出了三個資源:一個CSS文件,GIF圖像和JavaScript文件。 當加載清單文件,瀏覽器就會從網站的根目錄下下載了三個文件。 然後,當用戶沒有連接到互聯網時,資源將仍然可用。
網絡
下面的網絡部分指定文件"login.asp"不應該被緩存,並且將無法使用脫機:
NETWORK:
login.asp
星號可用於指示所有其他資源/文件需要連接到互聯網:
NETWORK:
*
倒退
下面後備節指定"offline.html"將在發生在/ HTML /目錄下的所有文件的送達,如果互聯網連接不能建立:
FALLBACK:
/html/ /offline.html
注:第一個URI是資源,第二個是備用。
更新緩存
一旦應用程序緩存,它直到發生下列情況之一仍然緩存:
- 用戶清除瀏覽器的緩存
- 清單文件被修改(see tip below)
- 該應用程序緩存程序更新
示例 - 完整的緩存清單文件
CACHE MANIFEST
# 2012-02-21 v1.0.0
/theme.css
/logo.gif
/main.js
NETWORK:
login.asp
FALLBACK:
/html/ /offline.html
Tip:開始用行"#"是註釋行,但也可以用於其他目的。 一個應用程序的緩存,只有當它的清單文件的變化進行更新。 如果您編輯圖像或更改JavaScript函數,這些更改將不會重新緩存。 在更新註釋行日期和版本是使瀏覽器重新緩存文件的一種方式。
在應用程序緩存的注意事項
小心你什麼緩存。
一旦文件被緩存,瀏覽器將繼續顯示緩存的版本,即使您更改了服務器上的文件。 為了確保瀏覽器更新緩存,您需要更改清單文件。
注意:瀏覽器可能緩存的數據不同的大小限制(some browsers have a 5MB limit per site) 。