在Web應(yīng)用中使用緩存的原因之一是為了支持離線應(yīng)用。在全球互聯(lián)的時代,離線應(yīng)用仍有其實用價值。當無法上網(wǎng)的時候,你會做些什么呢?有人可能會說如今網(wǎng)絡(luò)無處不在, 而且非常穩(wěn)定,不存在沒有網(wǎng)絡(luò)的情況。但事實果真如此嗎?下面這些問題,你考慮到了嗎?
a我們乘坐的所有航班都有Wi-Fi嗎?
b我們的移動網(wǎng)絡(luò)設(shè)備的信號好嗎(最后一次遇到無信號是什么時候)?
c我們?nèi)プ鲋v演時,一定能夠上網(wǎng)嗎?
越來越多的應(yīng)用移植到了Web上,我們傾向于認為用戶擁有24小時不間斷的網(wǎng)絡(luò)連接。但事實上,網(wǎng)絡(luò)連接中斷時有發(fā)生,例如在乘坐飛機的情況下,可預(yù)見的中斷時間一次就可能達到好幾個小時。
間斷性的網(wǎng)絡(luò)連接一直是網(wǎng)絡(luò)計算系統(tǒng)致命的弱點。如果應(yīng)用程序依賴于與遠程主機的通信,而這些主機又無法連接時,用戶就無法正常使用應(yīng)用程序了。不過當網(wǎng)絡(luò)連接正常時,Web應(yīng)用程序可以保證及時更新,因為用戶每次使用,應(yīng)用程序都會從遠程位置更新加載相關(guān)數(shù)據(jù)。
如果應(yīng)用程序只需要偶爾進行網(wǎng)絡(luò)通信,那么只要在本地存儲了應(yīng)用資源,無論是否連接網(wǎng)絡(luò)它都可用。隨著完全依賴于瀏覽器的設(shè)備的出現(xiàn),Web應(yīng)用程序在不穩(wěn)定的網(wǎng)絡(luò)狀態(tài)下還能夠持續(xù)工作就變得更加重要。在這方面,不需要持續(xù)連接網(wǎng)絡(luò)的桌面應(yīng)用程序歷來被認為比Web應(yīng)用程序更有優(yōu)勢。
HTML5的緩存控制機制綜合了Web應(yīng)用和桌面應(yīng)用兩者的優(yōu)勢:基于Web技術(shù)構(gòu)建的Web應(yīng)用程序,可在瀏覽器中運行并在線更新,也可在脫機情況下使用。然而,因為目前的Web服務(wù)器不為脫機應(yīng)用程序提供任何默認的緩存行為,所以要想使用這一新的離線應(yīng)用功能,你必須在應(yīng)用中明確聲明。