HTML5的離線儲(chǔ)存怎么使用?

隨著Web App的發(fā)展,越來(lái)越多的移動(dòng)端App使用HTML5的方式來(lái)開(kāi)發(fā),除了一些HybridApp以外, 其他一部分Web App還是通過(guò)瀏覽器來(lái)訪問(wèn)的,通過(guò)瀏覽器訪問(wèn)就需要聯(lián)網(wǎng)發(fā)送請(qǐng)求,這樣就使得用戶在離線 的狀態(tài)下無(wú)法使用App,同時(shí)Web App中一部分資源并不是經(jīng)常改變,并不需要每次都向服務(wù)器發(fā)出請(qǐng)求,出于 這些原因,HTML5提出的一個(gè)新的特性:離線存儲(chǔ)。通過(guò)離線存儲(chǔ),我們可以通過(guò)把需要離線存儲(chǔ)在本地的文件 列在一個(gè)manifest配置文件中,這樣即使在離線的情況下,用戶也可以正常使用App。

使用方法:

在html標(biāo)簽中引入manifest文件:

HTML5的離線存儲(chǔ)是基于一個(gè)新建的.appcache文件的,通過(guò)這個(gè)文件上的解析清單離線存儲(chǔ)資源 ,這些資源就會(huì)像cookie一樣被存儲(chǔ)了下來(lái)。之后當(dāng)網(wǎng)絡(luò)在處于離線狀態(tài)下時(shí),瀏覽器會(huì)通過(guò)被離線存儲(chǔ)的數(shù)據(jù) 進(jìn)行頁(yè)面展示

緩存流程:

利用一個(gè)manifest清單文件告知服務(wù)器需要離線的網(wǎng)頁(yè)文件。

在第一次訪問(wèn)網(wǎng)站時(shí)服務(wù)器響應(yīng)manifest文件進(jìn)行緩存。

在第二次訪問(wèn)該網(wǎng)址時(shí),檢測(cè)是否達(dá)到更新緩存的條件,否則直接使用緩存文件(即使你修改了服務(wù)器上的文件)。

這個(gè)文件中存儲(chǔ)了服務(wù)器希望緩存的文件列表:

CACHE MANIFEST

上面一句必須

#v1.0.1

CACHE:當(dāng) manifest 文件加載后瀏覽器會(huì)從網(wǎng)站的根目錄下載文件,無(wú)論用戶何時(shí)與因特網(wǎng)斷開(kāi)連接,這些資源依然是可用的。

test.html

test.js

doraemon.jpg

NETWORK:

#列出的文件需要與服務(wù)器的連接,且不會(huì)被緩存

test.css

FALLBACK:

#規(guī)定當(dāng)頁(yè)面無(wú)法訪問(wèn)時(shí)的回退頁(yè)面(比如 404 頁(yè)面)

404.html

更新緩存:

一旦應(yīng)用被緩存,它就會(huì)保持緩存直到發(fā)生下列情況

用戶清空瀏覽器緩存

manifest 文件被修改

由程序來(lái)更新應(yīng)用緩存

離線存儲(chǔ)有什么優(yōu)缺點(diǎn)?

優(yōu)點(diǎn)

離線瀏覽 - 用戶可在應(yīng)用離線時(shí)使用它們

速度 - 已緩存資源加載得更快

減少服務(wù)器負(fù)載 - 瀏覽器將只從服務(wù)器下載更新過(guò)或更改過(guò)的資源。

2.知識(shí)剖析

這個(gè)文件中存儲(chǔ)了服務(wù)器希望緩存的文件列表:

CACHE MANIFEST

上面一句必須

#v1.0.1

CACHE:當(dāng) manifest 文件加載后瀏覽器會(huì)從網(wǎng)站的根目錄下載文件,無(wú)論用戶何時(shí)與因特網(wǎng)斷開(kāi)連接,這些資源依然是可用的。

test.html

test.js

doraemon.jpg

NETWORK:

#列出的文件需要與服務(wù)器的連接,且不會(huì)被緩存

test.css

FALLBACK:

#規(guī)定當(dāng)頁(yè)面無(wú)法訪問(wèn)時(shí)的回退頁(yè)面(比如 404 頁(yè)面)

404.html

更新緩存:

一旦應(yīng)用被緩存,它就會(huì)保持緩存直到發(fā)生下列情況

用戶清空瀏覽器緩存

manifest 文件被修改

由程序來(lái)更新應(yīng)用緩存

離線存儲(chǔ)有什么優(yōu)缺點(diǎn)?

優(yōu)點(diǎn)

離線瀏覽 - 用戶可在應(yīng)用離線時(shí)使用它們

速度 - 已緩存資源加載得更快

減少服務(wù)器負(fù)載 - 瀏覽器將只從服務(wù)器下載更新過(guò)或更改過(guò)的資源。

缺點(diǎn)

更新的資源,需要二次刷新才會(huì)被頁(yè)面采用

不支持增量更新,只有manifest發(fā)生變化,所有資源全部重新下載一次

缺乏足夠容錯(cuò)機(jī)制,如果manifest文件,或者內(nèi)部列舉的某一個(gè)文件不能 正常下載,整個(gè)更新過(guò)程將視為失敗,瀏覽器繼續(xù)全部使用老的緩存

注意

在此刻使用這里描述的應(yīng)用程序緩存功能高度 正在處于從Web平臺(tái)中被刪除的過(guò)程。雖然一些瀏覽器 目前仍然支持它,但也許會(huì)在未來(lái)的某個(gè)時(shí)間停止支持,請(qǐng)盡量不要使用該特性。

存儲(chǔ)網(wǎng)頁(yè)數(shù)據(jù)的方式?

localStorage - 沒(méi)有時(shí)間限制的數(shù)據(jù)存儲(chǔ)(永久),對(duì)于同一個(gè)瀏覽,當(dāng)用戶關(guān)閉瀏覽器窗口后,數(shù)據(jù)不會(huì)被刪除。

sessionStorage - 針對(duì)一個(gè) session 的數(shù)據(jù)存儲(chǔ)(sesion/),當(dāng)用戶關(guān)閉瀏覽器窗口后,數(shù)據(jù)會(huì)被刪除。

cookie:不適合大量數(shù)據(jù)的存儲(chǔ),因?yàn)樗鼈冇擅總€(gè)對(duì)服務(wù)器的請(qǐng)求來(lái)傳遞,這使得 cookie 速度很慢而且效率也不高。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容