項目需求,當網絡缺失時,使用html5 離線緩存技術,展示某個頁面。(應用程序緩存Application Cache)
html5離線緩存是通過創建cache manifest 文件,輕鬆創建web應用的離線版本。
剛開始使用的時候好些坑,因爲沒有很詳細的文檔或者資料,只能一點點的測試和開發;
使用步驟和遇到的坑如下:
1,新建一個以.appcache 爲後綴的文件,這個文件最好和你需要緩存的html頁面目錄一致,內容如下
CACHE MANIFEST
#chrome瀏覽器支持,火狐瀏覽器支持度不夠好
#version 1
#author by guoquanyou
#CACHE 其後列出的是需要緩存的內容
CACHE:
404.html
# NETWORK 其後列出的是不進行緩存的內容,每次都需要從服務器端獲取
NETWORK:
*
#離線狀況下代替文件 fallback 是如果無法建立因特網連接時加載的頁面
FALLBACK:
indexcode.html 404.html
2,在html文件html標籤中添加一行manifest="cache.appcache",告訴瀏覽器要加載的內容。
<!DOCTYPE html>
<html manifest="index.appcache">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
</body>
</html>
3,如何更新緩存
- 用戶清空瀏覽器緩存
- 修改manifest文件
- 由程序來更新應用緩存
在修改manifest 文件之後,就可以更新緩存了,但是這個只是更新,當前訪問的頁面或者文件還是取的已經緩存中的數據,下一次訪問的時候纔可以看到最新的代碼。
我們可以使用代碼刷新:
window.addEventListener('load', function(e) {
window.applicationCache.addEventListener('updateready', function(e) {
if (window.applicationCache.status === window.applicationCache.UPDATEREADY) {
window.applicationCache.swapCache()
window.location.reload()
} else {
// Manifest didn’t changed. Nothing new to server.
}
}, false)
}, false)
監控到manifest 刷新之後,刷新緩存,並實時調用最新代碼。4,部分文件緩存不下來
我在緩存項目中使用緩存,現在本地調試代碼,但是發現其中有一個文件是https://****.js一直緩存不下啦,
大概原因是http協議和https協議證書之間的一個問題,
就是http://localhost 不能緩存https的文件,可以使用gitHub 查看demo是可以緩存的
https://qinyuhua.github.io/jQueryCode/main.html