application cache和localstorage的区别

第一部分:Application Cache

1.Application Cache介绍

html5提供的一种应用缓存机制,使得基于web的应用程序可以离线运行。优点有如下几点:

离线浏览: 用户可以在离线状态下浏览网站内容。

更快的速度: 因为数据被存储在本地,所以速度会更快。

减轻服务器的负载: 浏览器只会下载在服务器上发生改变的资源。

 

2.如何使用ApplicationCache?

2.1开启应用缓存:在html标签制定manifest,manifest特性与 缓存清单(cache
manifest) 文件关联,这个文件包含了浏览器需要为你的应用缓存的资源(文件)列表。

2.2:编写缓存清单文件

 CACHE:
  这是缓存文件中记录所属的默认段落。在 CACHE段落标题后(或直接跟在 CACHE
MANIFEST
 行后)列出的文件会在它们第一次下载完毕后缓存起来。
 
NETWORK:
在 NETWORK: 需要与服务器连接的白名单资源。所有类似资源的请求都会绕过缓存,即使用户处于离线状态。可以使用通配符“*”代表除以上指定之外全部需要从服务器拉取。
 
FALLBACK:
FALLBACK: 段指定了一个后备页面,当资源无法访问时,浏览器会使用该页面。该段落的每条记录都列出两个
URI—第一个表示资源,第二个表示后备页面。两个 URI 都必须使用相对路径并且与清单文件同源。可以使用通配符,类似404.html。

   CACHE, NETWORK, 和 FALLBACK
段落可以以任意顺序出现在缓存清单文件中,并且每个段落可以在同一清单文件中出现多次。

3.下面详细描述Application Cache的流程:

3.1.当浏览器访问一个包含 manifest 特性的文档时,如果应用缓存不存在,浏览器会加载文档,然后获取所有在清单文件中列出的文件,生成应用缓存的第一个版本。

3.2.对该文档的后续访问会使浏览器直接从应用缓存(而不是服务器)中加载文档与其他在清单文件中列出的资源。此外,浏览器还会向 window.applicationCache 对象发送一个 checking 事件,在遵循合适的
HTTP 缓存规则前提下,获取清单文件。如果当前缓存的清单副本是最新的,浏览器将向 applicationCache
对象发送一个
 noupdate 事件,到此,更新过程结束。

3.3.如果清单文件已经改变,文件中列出的所有文件—也包括通过调用 applicationCache.add() 方法添加到缓存中的那些文件—会被获取并放到一个临时缓存中,遵循适当的
HTTP 缓存规则。对于每个加入到临时缓存中的文件,浏览器会向 applicationCache 对象发送一个 progress 事件。如果出现任何错误,浏览器会发送一个 error 事件,并暂停更新。

3.4.一旦所有文件都获取成功,它们会自动移送到真正的离线缓存中,并向  applicationCache
对象发送一个 
cached 事件。.

4.Application Cache的坑

41如果你在服务器修改了任何缓存资源,同时也应该修改清单文件,这样浏览器才能知道它需要重新获取资源。

4.2鉴于文档早已经被从缓存加载到浏览器中,所以更新后的文档不会重新渲染,也就是说你更新清单之后的第一次访问不是最新 数据,直到页面重新加载(可以手动或通过程序)。

4.3指定了“manifest”的页面不需要再清单里再指定,他是默认被缓存的。

4.4清单里的文件只要有一个文件缓存失败,就会放弃全部缓存,类似数据库“事务”机制。

第二部分:Localstorage

1.不同于sessionstorage:localstorage提供永久存储,而sessionstorage是会话存储,关闭会话随即清除。

2.不同于cookies:localstorage提供更大容量的存储,并且不会随http传输到服务器端

3.代码解释:正常的localstorage访问以及存储非常简单,只需要localstorage.getItem(key)和localstorage.setItem(key,value)即可

该代码定义prekey是为了给key增加前缀,以防止key冲突.return 块是暴露方法,让外部函数可以访问到。

以上所用实例代码是一个简单的webApp在线阅读器,是在学习过程中的练习代码,较为简单,但比较有代表意义;

演示地址:http://www.olivewind.com/cases/demo09_onlinereader/

源代码:https://github.com/olivewind/webAppOnlineReader

*************转摘:https://blog.csdn.net/kingliguo/article/details/52637087

原文地址:https://www.cnblogs.com/linybo/p/12097937.html

时间: 2024-10-03 15:47:56

application cache和localstorage的区别的相关文章

HTML5应用程序缓存Application Cache详解.RP

什么是Application Cache HTML5引入了应用程序缓存技术,意味着web应用可进行缓存,并在没有网络的情况下使用,通过创建cache manifest文件,可以轻松的创建离线应用. Application Cache带来的三个优势是: ① 离线浏览 ② 提升页面载入速度 ③ 降低服务器压力 而且主要浏览器皆以支持Application Cache,就算不支持也不会对程序造成什么影响 离线存储技术 HTML5提出了两大离线存储技术:localstorage与Application

HTML5离线缓存(Application Cache)

HTML5离线缓存又名Application Cache,是从浏览器的缓存中分出来的一块缓存区,要想在这个缓存中保存数据,可以使用一个描述文件(manifest file),列出要下载和缓存的资源. Manifest 文件 manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容). manifest 文件可分为三个部分: CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存 NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓

HTML5应用程序缓存Application Cache

HTML5应用程序缓存Application Cache 什么是Application Cache HTML5引入了应用程序缓存技术,意味着web应用可进行缓存,并在没有网络的情况下使用,通过创建cache manifest文件,可以轻松的创建离线应用. Application Cache带来的三个优势是: ① 离线浏览 ② 提升页面载入速度 ③ 降低服务器压力 而且主要浏览器皆以支持Application Cache,就算不支持也不会对程序造成什么影响 离线存储技术 HTML5提出了两大离线存

HTML5应用程序缓存Application Cache详解

什么是Application Cache HTML5引入了应用程序缓存技术,意味着web应用可进行缓存,并在没有网络的情况下使用,通过创建cache manifest文件,可以轻松的创建离线应用. Application Cache带来的三个优势是: ① 离线浏览 ② 提升页面载入速度 ③ 降低服务器压力 而且主要浏览器皆以支持Application Cache,就算不支持也不会对程序造成什么影响 离线存储技术 HTML5提出了两大离线存储技术:localstorage与Application

HTML5应用程序缓存Application Cache.RP

什么是Application Cache HTML5引入了应用程序缓存技术,意味着web应用可进行缓存,并在没有网络的情况下使用,通过创建cache manifest文件,可以轻松的创建离线应用. Application Cache带来的三个优势是: ① 离线浏览 ② 提升页面载入速度 ③ 降低服务器压力 而且主要浏览器皆以支持Application Cache,就算不支持也不会对程序造成什么影响 离线存储技术 HTML5提出了两大离线存储技术:localstorage与Application

html5离线储存,application cache,manifest使用体验

最近在APP里新增一个论坛模块,为了快速地完成,决定将整个论坛模块做成WEB APP,WEB APP最致命的就是用户体验问题,页面跳转和过多的请求,大大影响了加载速度和用户体验,这时候我想到了HTML5的离线储存. 经过简单的了解之后,觉得这个可以有,但很快我又就发现,HTML5离线储存并不适于这次的项目. 原因如下: 1. 一旦页面指定了manifest,那么这个页面就一定被储存下来.如果有一个动态页面,不想缓存页面的内容,只想缓存页面所引用的css,js,img,但抱歉,这个没有办法做到.我

Webkit关于HTML 5的Application Cache实现之研究

因为工作关系,研究了一段时间的ApplicationCache.首先介绍一下与它相关的SQL DB Table的几个基本概念, CacheGroups : 就是一组资源,例如html, css, js, image,他们与一个cache的manifest关联,CacheGroups表包含的每个cache项有自己的ID以及相应的manifest的URL. CacheEntries, CacheResources : 这俩个表存储一些资源的元数据(metadta),例如HTTP header, mi

转 html5离线储存,application cache,manifest使用体验

html5离线应用application cache 最近在APP里新增一个论坛模块,为了快速地完成,决定将整个论坛模块做成WEB APP,WEB APP最致命的就是用户体验问题,页面跳转和过多的请求,大大影响了加载速度和用户体验,这时候我想到了HTML5的离线储存. 经过简单的了解之后,觉得这个可以有,但很快我又就发现,HTML5离线储存并不适于这次的项目. 原因如下: 1.  一旦页面指定了manifest,那么这个页面就一定被储存下来.如果有一个动态页面,不想缓存页面的内容,只想缓存页面所

使用iFrame动态加载Application Cache

为了避免缓存主页面,一般使用动态iFrame的方式来加载Application Cache,方法如下: 1 updateImageCache: function () { 2 3 if (null == $("iframe")) { 4 5 } else { 6 $("iframe").remove(); 7 } 8 9 var iframe = document.createElement('iframe'); 10 iframe.setAttribute('wi