h5 離線緩存

由于在生活中,經(jīng)常會遇到有些時候手機(jī)沒有信號沒有網(wǎng)絡(luò)什么的,就訪問不了應(yīng)用了,但是我們應(yīng)用有很多東西又是不怎么變化的,所以這兩天看了下有關(guān)離線緩存方面的文章,自己簡單實(shí)現(xiàn)了下:
網(wǎng)上都是tomcat的方式的,我使用的是nodejs的方式。
1.創(chuàng)建index.html

<!DOCTYPE html>
<html lang="en" manifest="/cache/demo.appcache"> 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>測試緩存</title>
</head>
<body>
    <h2>文件緩存測試12345</h2>
    <a href="./a.html">去新頁面</a>
    <img src="/public/1.png" alt="">
    <img src="/public/2.png" alt="">
</body>
<script>
    applicationCache.onupdateready = function() {  
        if (confirm("本地緩存已被更新,需要刷新頁面來獲取應(yīng)用程序最新版本")) {  
            //手動更新本地緩存,只能在onupdateready事件觸發(fā)時調(diào)用  
            applicationCache.swapCache();  
            location.reload();  
        }  
    }  
</script>
</html>

其中看到第一行<html lang="en" manifest="/cache/demo.appcache">,manifest的屬性值是緩存的菜單文件,看看里面寫的是什么:

CACHE MANIFEST
# v1.0.7

CACHE:
/public/index.html
/public/a.html
/public/1.png

NETWORK: 
/public/2.png

CACHE MANIFEST是必選的,CACHE是需要緩存的資源(可選),NETWORK是需要網(wǎng)絡(luò)加載的資源(可選),因?yàn)闉g覽器解析到index.html的第一行時,會去讀這份緩存清單,先看該清單與沒有改變,沒有改變則使用緩存中的文件,否則更新緩存刷新頁面,流程是這樣的:

緩存流程

然后還有最重要的一步是:demo.appcache的返回首部字段mime必須是text/cache-manifest,如果你用PC端訪問的的話,記得不要勾選disable cache選項(xiàng)
不要勾選disable cache選項(xiàng)

你會發(fā)現(xiàn),在你的緩存中會有這些東西:
image.png

你此時把服務(wù)給關(guān)掉或者網(wǎng)絡(luò)斷掉就會發(fā)現(xiàn)還依然可以訪問網(wǎng)頁,但是b.png無法訪問,因?yàn)樗麤]有被緩存下來。
下面是瀏覽器對h5離線緩存的支持情況
h5離線緩存支持情況

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最近被問到你會離線緩存嗎,一頭霧水,所以決定自己寫一個demo來驗(yàn)證一些, 準(zhǔn)備工作:把demo放到了nginx服...
    竿牘閱讀 1,597評論 2 3
  • 轉(zhuǎn)載:H5緩存機(jī)制淺析-移動端Web加載性能優(yōu)化【干貨】 作者:賀輝超,騰訊游戲平臺與社區(qū)產(chǎn)品部 高級工程師 目錄...
    meng_philip123閱讀 11,677評論 6 48
  • 起源 大部分的網(wǎng)頁,必須聯(lián)網(wǎng)才能訪問,這其實(shí)也是web的特色,但對于現(xiàn)在的移動互聯(lián)網(wǎng)時代,設(shè)備終端位置不再固定,依...
    白水螺絲閱讀 2,660評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • Html5 引入了應(yīng)用程序緩存,這意味著web應(yīng)用可以進(jìn)行緩存,并且可以在沒有網(wǎng)絡(luò)連接的時候進(jìn)行訪問。1.1 什么...
    Victor細(xì)節(jié)閱讀 4,332評論 0 0

友情鏈接更多精彩內(nèi)容