发表于: 2017-05-16 20:13:01

1 961


css-15HTML5的离线储存怎么使用?

小课堂【武汉第171期】

分享人:肖浩宇

1.背景介绍

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

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

 

2.知识剖析

a.使用方法:

html标签中引入manifest文件:

<html manifest="test.appcache">

这个文件中存储了服务器希望缓存的文件列表:

CACHE MANIFEST
#上面一句必须
#v1.0.1

#需要缓存的文件
CACHE:
test.html
test.js
doraemon.jpg

#不需要缓存的文件
NETWORK:
test.css

#无法访问页面
FALLBACK:
404.html

b.更新缓存:

在有网时,以下条件触发缓存的更新

1.用户清空浏览器缓存

2.manifest 文件被修改

3.由程序来更新应用缓存

c.缓存流程:

利用一个manifest清单文件告知服务器需要离线的网页文件。

在第一次访问网站时服务器响应manifest文件进行缓存。

在第二次访问该网址时,检测是否达到更新缓存的条件,否则直接使用缓存文件(即使你修改了服务器上的文件)。

d.注意

HTML5应用缓存特性已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性。

点击查看详情

https://developer.mozilla.org/zh-CN/docs/Web/HTML/Using_the_application_cache



3.常见问题

离线存储有什么优缺点?

优点

1.离线浏览 - 用户可在应用离线时使用它们

2.速度 - 已缓存资源加载得更快

3.减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。

缺点

1.更新的资源,需要二次刷新才会被页面采用

2.不支持增量更新,只有manifest发生变化,所有资源全部重新下载一次

3.缺乏足够容错机制,当清单中任意资源文件出现加载异常,都会导致整个manifest策略运行异常


4.编码实战

这里是一个离线存储的demo

<a href="http://59.110.174.154/task/manifest/test.html">demo</a>


5.扩展思考

存储网页数据的方式?

1.localStorage - 没有时间限制的数据存储(永久),对于同一个浏览,当用户关闭浏览器窗口后,数据不会被删除。

2.sessionStorage - 针对一个 session 的数据存储(sesion/),当用户关闭浏览器窗口后,数据会被删除。

3.cookie:不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。

6.参考文献

1.参考一:慕课网-manifest 

http://www.w3school.com.cn/html5/html_5_app_cache.asp

2.参考二:MDN-manifest  

https://developer.mozilla.org/zh-CN/docs/Web/HTML/Using_the_application_cache

3.参考三:知乎-关于前端缓存优化,为什么没人用manifest

https://www.zhihu.com/question/35130316

7.更多讨论

浏览器对离线存储的大小有限制吗?

浏览器对缓存数据的容量限制可能不太一样(某些浏览器设置的限制是每个站点 5MB)。

 

 

鸣谢

感谢大家观看

BY

武汉-肖浩宇



返回列表 返回列表
评论

    分享到