最新的Web開發教程

HTML5應用程序緩存


隨著應用程序緩存它很容易使Web應用程序的離線版本,通過創建一個緩存清單文件。


什麼是應用程序緩存?

HTML5引入了應用程序緩存,這意味著Web應用程序緩存,並沒有連接到互聯網訪問。

應用程序緩存提供了一個應用三大優勢:

  1. 離線瀏覽 - 用戶可以使用該應用程序時,他們處於離線狀態
  2. 速度 - 緩存資源加載速度更快
  3. 從服務器瀏覽器將只下載更新/改變資源 - 降低服務器負載

背景

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)