html5 manifest离线存储实用记录

本文介绍了如何通过配置服务器及创建manifest文件实现网页资源的离线缓存,并提供了监控缓存状态以确保最新资源被使用的JavaScript代码。同时,还探讨了离线存储的限制和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

notes:

1.使用manifest 需要配置服务器,在nginx中配置是在conf/mime.types中添加

text/cache-manifest                   appcache;

然后重启nginx。

2.实际运用中,新建name.appcache文件,结构为如下:

CACHE MANIFEST
#v1.0.0.0
#需要缓存的文件
./public/images/u1.png
./public/css/light7.css
./public/font/iconfont.css
./public/js/jquery-2.1.4.js
./public/js/config.js
./public/js/light7.js
./public/js/jquery.cookie.js
./public/js/template-web.js
./public/js/echarts.min.js
./public/js/jquery-ajax-cache.min.js
./public/js/jquery.i18n.properties.js
./public/js/language.js
./public/font/iconfont.css

#不需要缓存的页面
NETWORK:
*

#无法访问页面
FALLBACK
404.html
  • CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存
  • NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存
  • FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)

# 为注释,使用离线存储的时候,修改appcache文件中的文件,游览器会自动在缓存中读取文件,必须修改appcache中的内容才会重新缓存该文件中的所有资源,包括修改注释,所以可以修改注释中的版本号来更新manifest,其中如果某个资源请求失败,所有资源都会缓存失败,继续应用上一次的manifest(且因为manifest的加载对于游览器来说是晚于其他资源的,这就导致check manifest的过程是滞后的,从发现manifest改变,游览器都是先应用上一次的manifest,等手动刷新之后才会应用更新后的manifest,解决办法随后附出。)。

Html文件中的结构:

<html manifest="./6.cash.appcache">

由于运用manifest会默认缓存当前页,(网上查资料用iframe加载新的带有manifest入口的Html文件,实际测试发现还是会默认缓存当前页。)所以,最好的方式是只缓存静态资源,不缓存可以从后台更新的资源及html文件。

3.监控applicationCache的状态,当更新之后,自动刷新一次!

        var appCache = window.applicationCache;
        appCache.addEventListener('updateready', function(){
          window.location.reload();
        }, false);

4.404页面无法导入,暂时未解决!

5.注意:

  • 站点离线存储的容量限制是5M
  • 如果manifest文件,或者内部列举的某一个文件不能正常下载,整个更新过程将视为失败,浏览器继续全部使用老的缓存
  • 引用manifest的html必须与manifest文件同源,在同一个域下
  • FALLBACK中的资源必须和manifest文件同源
  • 当一个资源被缓存后,该浏览器直接请求这个绝对路径也会访问缓存中的资源。
  • 站点中的其他页面即使没有设置manifest属性,请求的资源如果在缓存中也从缓存中访问
  • 当manifest文件发生改变时,资源请求本身也会触发更新


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值