# HTML 5 應用程序緩存
**使用 HTML5,通過創建 cache manifest 文件,可以輕松地創建 web 應用的離線版本。**
## 什么是應用程序緩存(Application Cache)?
HTML5 引入了應用程序緩存,這意味著 web 應用可進行緩存,并可在沒有因特網連接時進行訪問。
應用程序緩存為應用帶來三個優勢:
* 離線瀏覽 - 用戶可在應用離線時使用它們
* 速度 - 已緩存資源加載得更快
* 減少服務器負載 - 瀏覽器將只從服務器下載更新過或更改過的資源。
## 瀏覽器支持
所有主流瀏覽器均支持應用程序緩存,除了 Internet Explorer。
## HTML5 Cache Manifest 實例
下面的例子展示了帶有 cache manifest 的 HTML 文檔(供離線瀏覽):
### 實例
```
<!DOCTYPE HTML>
<html manifest="demo.appcache">
<body>
The content of the document......
</body>
</html>
```
## Cache Manifest 基礎
如需啟用應用程序緩存,請在文檔的 <html> 標簽中包含 manifest 屬性:
```
<!DOCTYPE HTML>
<html manifest="demo.appcache">
...
</html>
```
每個指定了 manifest 的頁面在用戶對其訪問時都會被緩存。如果未指定 manifest 屬性,則頁面不會被緩存(除非在 manifest 文件中直接指定了該頁面)。
manifest 文件的建議的文件擴展名是:".appcache"。
請注意,manifest 文件需要配置_正確的 MIME-type_,即 "text/cache-manifest"。必須在 web 服務器上進行配置。
## Manifest 文件
manifest 文件是簡單的文本文件,它告知瀏覽器被緩存的內容(以及不緩存的內容)。
manifest 文件可分為三個部分:
* _CACHE MANIFEST_ - 在此標題下列出的文件將在首次下載后進行緩存
* _NETWORK_ - 在此標題下列出的文件需要與服務器的連接,且不會被緩存
* _FALLBACK_ - 在此標題下列出的文件規定當頁面無法訪問時的回退頁面(比如 404 頁面)
### CACHE MANIFEST
第一行,CACHE MANIFEST,是必需的:
```
CACHE MANIFEST
/theme.css
/logo.gif
/main.js
```
上面的 manifest 文件列出了三個資源:一個 CSS 文件,一個 GIF 圖像,以及一個 JavaScript 文件。當 manifest 文件加載后,瀏覽器會從網站的根目錄下載這三個文件。然后,無論用戶何時與因特網斷開連接,這些資源依然是可用的。
### NETWORK
下面的 NETWORK 小節規定文件 "login.asp" 永遠不會被緩存,且離線時是不可用的:
```
NETWORK:
login.asp
```
可以使用星號來指示所有其他資源/文件都需要因特網連接:
```
NETWORK:
*
```
### FALLBACK
下面的 FALLBACK 小節規定如果無法建立因特網連接,則用 "offline.html" 替代 /html5/ 目錄中的所有文件:
```
FALLBACK:
/html5/ /404.html
```
注釋:第一個 URI 是資源,第二個是替補。
## 更新緩存
一旦應用被緩存,它就會保持緩存直到發生下列情況:
* 用戶清空瀏覽器緩存
* manifest 文件被修改(參閱下面的提示)
* 由程序來更新應用緩存
### 實例 - 完整的 Manifest 文件
```
CACHE MANIFEST
# 2012-02-21 v1.0.0
/theme.css
/logo.gif
/main.js
NETWORK:
login.asp
FALLBACK:
/html5/ /404.html
```
重要的提示:以 "#" 開頭的是注釋行,但也可滿足其他用途。應用的緩存會在其 manifest 文件更改時被更新。如果您編輯了一幅圖片,或者修改了一個 JavaScript 函數,這些改變都不會被重新緩存。更新注釋行中的日期和版本號是一種使瀏覽器重新緩存文件的辦法。
## 關于應用程序緩存的注釋
請留心緩存的內容。
一旦文件被緩存,則瀏覽器會繼續展示已緩存的版本,即使您修改了服務器上的文件。為了確保瀏覽器更新緩存,您需要更新 manifest 文件。
注釋:瀏覽器對緩存數據的容量限制可能不太一樣(某些瀏覽器設置的限制是每個站點 5MB)。
- HTML 基礎
- HTML 簡介
- 基本的 HTML 標簽 - 四個實例
- HTML 元素
- HTML 屬性
- HTML 標題
- HTML 段落
- HTML 文本格式化
- HTML 編輯器
- HTML CSS
- HTML 鏈接
- HTML 圖像
- HTML 表格
- HTML 列表
- HTML <div> 和 <span>
- HTML 布局
- HTML 表單和輸入
- HTML 框架
- HTML Iframe
- HTML 背景
- HTML 顏色
- HTML 顏色名
- HTML 4.01 快速參考
- HTML 高級
- HTML <!DOCTYPE>
- HTML 頭部元素
- HTML 腳本
- HTML 字符實體
- HTML 統一資源定位器
- HTML URL 字符編碼
- HTML Web Server
- HTML 媒體
- HTML 多媒體
- HTML Object 元素
- HTML 音頻
- HTML 視頻
- HTML XHTML
- XHTML 簡介
- XHTML - 元素
- XHTML - 屬性
- HTML 5 教程
- HTML 5 簡介
- HTML 5 視頻
- HTML 5 Video + DOM
- HTML 5 音頻
- HTML 5 拖放
- HTML 5 Canvas
- HTML5 內聯 SVG
- HTML 5 Canvas vs. SVG
- HTML5 地理定位
- HTML 5 Web 存儲
- HTML 5 應用程序緩存
- HTML 5 Web Workers
- HTML 5 服務器發送事件
- HTML5 Input 類型
- HTML5 表單元素
- HTML5 表單屬性
- CSS 基礎
- CSS 簡介
- CSS 基礎語法
- CSS 高級語法
- CSS 派生選擇器
- CSS id 選擇器
- CSS 類選擇器
- CSS 屬性選擇器
- 如何創建 CSS
- CSS 樣式
- CSS 背景
- CSS 文本
- CSS 字體
- CSS 鏈接
- CSS 列表
- CSS 表格
- CSS 輪廓
- CSS 框模型
- CSS 框模型概述
- CSS 內邊距
- CSS 邊框
- CSS 外邊距
- CSS 外邊距合并
- CSS 定位
- CSS 定位 (Positioning)
- CSS 相對定位
- CSS 絕對定位
- CSS 浮動
- CSS 選擇器
- CSS 元素選擇器
- CSS 分組
- CSS 類選擇器詳解
- CSS ID 選擇器詳解
- CSS 屬性選擇器詳解
- CSS 后代選擇器
- CSS 屬性選擇器詳解
- CSS 后代選擇器
- CSS 子元素選擇器
- CSS 相鄰兄弟選擇器
- CSS 偽類 (Pseudo-classes)
- CSS 偽元素 (Pseudo-elements)
- CSS 高級
- CSS 水平對齊
- CSS 尺寸 (Dimension)
- CSS 分類 (Classification)
- CSS 導航條
- CSS 圖片庫
- CSS 圖像透明度
- CSS2 媒介類型
- CSS 注意事項
- CSS3 教程
- CSS3 簡介
- CSS3 邊框
- CSS3 背景
- CSS3 文本效果
- CSS3 字體
- CSS3 2D 轉換
- CSS3 3D 轉換
- CSS3 過渡
- CSS3 動畫
- CSS3 多列
- CSS3 用戶界面
- Firebug 教程
- Firebug 教程
- 使用Firebug查看和編輯HTML和CSS
- 使用 Firebug 調試 JavaScript
- Firebug頁面概況查看
- Firebug動態執行JavaScript
- Firebug記錄Javascript日志
- Firebug監控網絡情況
- 免責聲明