html 5 (manifest )离线缓存使用以及坑

项目需求,当网络缺失时,使用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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章