html5:离线存储:application cache

1.什么是应用程序缓存(Application Cache)?

HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。

应用程序缓存为应用带来三个优势:

  • 离线浏览 - 用户可在应用离线时使用它们
  • 速度 - 已缓存资源加载得更快
  •  减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。

        (以上文本摘选自w3school,以下文本也是)

所有主流浏览器均支持应用程序缓存,除了 Internet Explorer。

扯回正题,application cache是html5新增的,主要作用就是在离线的时候可以访问网页,当然,兼容性也是要考虑的

2.怎么使用

第一步,我们需要创建一个文件,当然后缀的名(文件格式)为appache;即a.appache;

第二步,我们要剖析下文件的结构组成:

CACHE MANIFEST
	# version xx.xx.xx
	CACHE:#需要缓存的文件的相对路径
	a.png
	a.js
	 
	NETWORK:#不缓存的文件的相对路径
	b.html
	b.css
	 
	FALLBACK:#缓存失败后的页面路径
	a.html

大体的结构就是上面这样的,然后再来一段w3school的文字:

需要注意的是其中的fallback,其他的都好说

第三步:

我们需要在页面中去使用他,比如:

	<html mainfest='cache.appache'></html>

第四步:

既然有使用的方法,那么肯定会提供事务监听的功能,即:

触发事件:
	//离线资源存储完成
	window.applicationCache.addEventListener('cached', function () {	});
	//离线资源更新检查完成
	window.applicationCache.addEventListener('checking', function () {	});
	//离线资源下载
	window.applicationCache.addEventListener('downloading', function () {});
		//下载每一个资源的时候会触发
	window.applicationCache.addEventListener('progress', function () {});
			//离线资源更新完成之后
	window.applicationCache.addEventListener('updateready', function () {});
	//检查更新之后发现没有资源更新的时候触发
	window.applicationCache.addEventListener('noupdate', function () {});
	//更新错误的时候触发
	window.applicationCache.addEventListener('error', function () {});

差不多就是这样子了

3.加载的过程:

  1. 当浏览器访问包含该manifest属性的文档时,如果不存在应用程序缓存,浏览器将加载该文档,然后获取清单文件中列出的所有条目,从而创建应用程序缓存的第一个版本。
  2. 对该文档的后续访问会导致浏览器从应用程序缓存(而不是从服务器)加载清单文件中指定的文档和其他资产。此外,浏览器还会向对象发送checking事件window.applicationCache,并根据相应的HTTP缓存规则获取清单文件。
  3. 如果清单的当前缓存副本是最新的,则浏览器会向对象发送noupdate事件applicationCache,并且更新过程完成。请注意,如果更改服务器上的任何缓存资源,则还必须更改清单文件本身,以便浏览器知道需要再次获取所有资源。
  4. 如果清单文件更改,则清单中列出的所有文件以及通过调用applicationCache.add()-are 添加到缓存中的文件都将按照相应的HTTP缓存规则提取到临时缓存中。对于提取到此临时缓存中的每个文件,浏览器会向对象发送一个progress事件applicationCache。如果发生任何错误,浏览器将发送一个error事件,并且更新将停止。
  5. 成功检索完所有文件后,它们将自动移入实际的脱机缓存中,并将cached事件发送到该applicationCache对象。由于文档已从缓存加载到浏览器中,因此在重新加载文档(手动或以编程方式)之前,不会呈现更新的文档。

备注:

        1.注意!每个浏览器的缓存的大小都是不一致的。比如通常都是5mb。所以最好不要乱来

         2.必须要全部加载完成才会进入到永久性的缓存,所以要注意了;

         3.如果你已经预加载了a.png。然后后面版本又换了这个图片,那你就要小心了。哈哈

         4.必须使用text/cache-manifestMIME类型提供缓存清单文件

参考资料:w3school关于application cache的介绍

                  mdn使用application cache

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值