HTML5新特性之离线缓存技术php中文网html教程

HTML5之前的网页,都是无连接,必须联网才能访问,这其实也是web的特色,这其实对于PC是时代问题并不大,但到了移动互联网时代,

设备终端位置不再固定,依赖无线信号,网络的可靠性变得降低,比如坐在火车上,过了一个隧道(15分钟),便无法访问网站,十分不便。

而离线web应用允许我们在脱机时与网站进行交互。

二、什么是离线Web应程序?为什么要开发离线的Web应用程序?

离线web应用程序是指:当客户端本地与web应用程序的服务器没有建立连接时,也能正常在客户端本地使用该web应用程序进行有关操作。

Web应用程序已经变的越来越复杂,很多领域都在利用Web应用程序。但是,它有一个致命的缺点:如果用户没有和Internet建立连接,他就

不能利用这个web应用程序了。因此H5新增了一个API,它使用一个本地缓存机制很好的解决了这个问题,使离线应用程序的开发成为了可能。

要想使web应用程序在离线状态的时候也能正常工作,就必须把所有构成web应用程序的资源文件,如HTML文件、CSS文件、JavaScript脚本

文件等放在本地缓存中,当服务器没有和Internet建立连接时,也可以利用本地缓存中的资源文件正常运行web应用程序。

三、什么是本地缓存,本地缓存与浏览器网页缓存的区别。

Web应用程序的本地缓存与浏览器的网页缓存有许多方面都存在着明显的区别。

1.本地缓存为整个web应用程序服务的,而浏览器的网页缓存只服务于单个网页。任何网页都具有网页缓存。而本地缓存至缓存那些指定的缓存

的页面。

2.网页缓存不安全不可靠,因为我们不知道在网站中到底缓存了哪些网页,以及缓存了网页上的哪些资源。而本地缓存可靠,我们可以控制对

哪些内容进行缓存,

不对哪些内容进行缓存,开发人员还可以利用编程的手段来控制缓存的更新,利用缓存对象的各种属性、状态和事件来开发出更加强大的离线

应用程序。

3.(有些)浏览器会主动保存自己的缓存文件以加快网站加载速度。但是要实现浏览器缓存必须要满足一个前提,那就是网络必须要保持连接

。如果网络没有连接,

即使浏览器启用了对一个站点的缓存,依然无法打开这个站点。只会收到一条错误信息。而使用离线web应用,我们可以主动告诉浏览器应该

从网站服务器中获取或缓存哪些文件,并且在网络离线状态下依然能够访问这个网站。

四、如何实现HTML5应用程序缓存?什么是manifest文件,在文件中制定什么内容需要进行本地缓存,哪些内容不需要?

实现HTML5应用程序缓存非常简单,只需三步,并且不需要任何API。只需要告诉浏览器需要离线缓存的文件,并对服务器和网页做一些

简单的设置即可实现。

4-1、创建一个cache.manifest文件,并确保文件具有正确的内容。

4-2、在服务器上设置内容类型。

4-3、所有的HTML文件都指向cache.manifest。

具体实现:

4-1:首先我们建立一个名为cache.manifest的文件,Windows平台下用记事本即可(也可用其他的IDE)。文件内容如下:

注意事项:

1、第一行必须是”CACHEDMANIFEST”文字,以把本文件的作用告知浏览器,即对本地缓存中的资源文件进行具体设置。

2、在manifest文件中,可以加上注释来进行一些必要说明或解释。注释行以”#”文字开头。

3、在CACHE之后的部分为列出我们需要缓存的文件。

4、在FALLBACK之后的部分每一行中指定两个资源文件,第一个资源文件为能够在线访问时使用的资源文件,第二个资源文件为

不能在线访问时使用的备用资源文件。

5、在NETWORK之后可以指定在线白名单,即列出我们不希望离线存储的文件,因为通常它们的内容需要互联网访问才有意义。

另外,在此部分我们可以使用快捷方式:通配符*。这将告诉浏览器,应用服务器中获取没有在显示部分中提到的任何文件或URL。

4-2:服务器上设置内容类型。

真正运行或测试离线web应用程序的时候,需要对服务器进行配置,让服务器支持text/cache-manifest这个MIME类型(在h5中规定

manifest文件的MIME类型是text/cache-manifest)。例如对Apache服务器进行配置的时候,需要找到

{apache_home}/conf/mime.type这个文件(.htaccess),并在文件最后添加如下所示代码:

text/cache-manifest.manifest。在微软的IIS服务器中的步骤如下所示:

(1).右键选择默认网站或需要添加类型的网站,弹出属性对话框

(3).在MIME映射下,单击文件类型按钮

(4).在打开的MIME类型对话框中单击新建按钮

(5).在关联扩展名文本中输入”manifest”,在内容类型文本框中输入”text/cache-manifest”,然后点击确定按钮。

4-3:设置HTML文件的指向。

(即使是在线状态也如此)。

1、网站的每一个html页面都必须设置html元素的manifest属性。Musttodo;

2、在你的整个网站应用中,只能有一个cache.manifest文件(建议放在网站根目录下);

3、部分浏览器(如IE8-)不支持HTML5离线缓存;

4、“#”开头的注释行可满足其他用途。应用的缓存会在其manifest文件更改时被更新。如果您编辑了一幅图片,或者修改了一个JavaScript函数,

这些改变都不会被重新缓存。更新注释行中的日期和版本号是一种使浏览器重新缓存文件的办法。

五、掌握进行本地缓存的applicationCache对象及其属性和事件:

(1)缓存的更新:

如果有更新,新的清单文件以及清单中的列举的所有文件都会下载下来重新保存到程序缓存中。但要注意浏览器只是检查清单文件,而不会

检查缓存的文件是否有更新,如果修改一个缓存的js文件,并且要想让该文件生效,就必须去更新下清单文件。由于应用程序依赖的文件列

表其实并没有变化,因此最简单的方式就是更新版本。

代码如下:

注意:

①、浏览器检查清单文件以及更新缓存的操作是异步的,可能是在从缓存中载入应用之前,也有可能是同时进行。因此对于简单的web应用

而言,在更新清单文件之后,用户必须载入应用两次才能保证最新的版本生效:第一次是从缓存中载入老版本随后更新缓存;第二次才是从

缓存中载入最新的版本。

②、浏览器在更新缓存过程中会触发一系列事件,可以通过注册处理程序来跟踪这个过程同时提供反馈用户。

不同的情况触发不同的事件。

事件列表:

(1).没有可用更新

如果应用程序已经缓存并且清单文件没有动,则浏览器会触发noupdate事件

(2).有可用更新

如果应用程序已经缓存并且清单元件有改动,则浏览器会触发downloading事件并开始下载和缓存清单文件中列举的所有资源。

随着下载过程的进行浏览器还会触发”progress”事件,在下载完成后,会触发”updateready”事件。

(3).首次载入新的应用程序

如果还未缓存应用程序,如上所述downloading,progress事件都会触发。但是,当下载完成后,浏览器会触发”cached”事件

而不是updateready事件

(4).浏览器处于离线状态

如果浏览器处于离线状态,它无法检查清单文件,同时它会触发“error”事件。

如果一个未缓存的应用程序引用了不存的清单文件,浏览器也会触发该事件

(5).清单文件不存在

如果浏览器处理在线状态,应用程序也已经缓存起来,但是清单文件不存在,浏览器会触发obsolete事件,并将该应用程序

从缓存中移除。

缓存状态:

缓存的状态可以通过window.applicationCache.status获得,其状态主要包括如下6种:

(1).update

显式调用了更新缓存算法以检测是否有最新版本的的应用程序。这导致浏览器检测同一个清单文件(并触发相同的事件),

这和第一次载入应用程序时的效果是一样的。

(2).swapCache

它告诉浏览器可以弃用老缓存,所有的请求都从新缓存中获取。注意,这并不会重新载入应用程序:所有已经载入的html文件

、图片、脚本等资源都不会改变。但是,之后的请求将从最新的缓存中获取。这会导致“版本错乱”的问题,因此一般不推荐使用

,除非应用程序设计得很好,确保这样的方式没有问题。只有ApplicationCache.UPDATEREADY和

ApplicationCache.ABSOLETE时调用swapCache()才有意义(当状态OBSOLETE时,调用它可以立即弃用废弃的缓存,

让之后所有的请求都通过网络获取)。如果状态属性是其他数值的时候调用swapCache()方法,它就会抛出异常。

七、如何判断在线还是离线状态?

离线web应用指的是将自己“安装”在应用程序缓存中的程序,使得哪怕在浏览器处于离线状态时依然可访问它。为了在离线状态可用,

Web应用需要可以告知别人自己是离线还是在线,同时当网络连接的状态发生改变时候也能“感知”到。通过navigator.onLine属性,

navigator.onLine是HTML5定义用来检测设备是在线还是离线。对应的值为false或true。但是不同浏览器表现并不一致。

IE6+和Safari5+能够正确的检测到网络已断开,并将navigator.onLine设为flase。

Firefox3+和Opera10.6+也支持navigator.onLine。但需要手动讲浏览器设置为脱机模式才能让浏览器正常工作。

Chrome11及以上版本始终将navigator.onLine设为true。(不过作者的Chrome21已经能正常使用了)

HTML5定义了online&offline事件用于监听网络状态变化。

window.addEventListener('online',callback);//离线到上线

window.addEventListener('offline',callback);//上线到离线

目前除了IE(IE只支持navigator.onLine属性)外,其他最新浏览器都支持这个事件。

八、离线Web应用实战。

通过一个简单的记事本程序——PermaNote,来解释如何使用。程序将用户的文本保存到localStorage中,并且在网络连接可用的时候,

将其上传到服务器,PermaNote只允许用户编辑单个笔记。

PermaNote应用包含3个文件,一个应用清单文件、一个html页面文件,一个实现逻辑的js文件。

①.premanote.appcache部分:

③.permanote.js部分

status()函数用于显示状态栏消息,save()函数将笔记本保存到服务器,sync()用于确保本地与服务器文本的同步。

(1).onload

尝试和服务器同步,一旦有新版本的笔记并且完成同步后,就启用编辑器窗口。

下载完成的提醒。

(2).onbeforeunload

在未上传前,把当前版本的笔记数据保存到服务器上。

(3).oninput

每当textarea输入框内容发生变化时,都将其内容保存到localStorage中,并启动一个计时器。当用户停止编辑超过5秒

,将自动把数据保存到服务器。

(4).onoffline

当浏览器进入离线状态时,在状态栏显示离线消息。

(5).ononline当浏览器回到在线状态时,同步服务器,检查是否有新版本的数据,并且保存当前版本的数据。

(6).onupdateready

如果新版本的应用已缓存,则在状态栏展示消息告知用户。

(7).onnoupdate

如果应用程序缓存没有发生变化,则同时用户仍在运行当前版本。

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

THE END
1.QQ状态之谜,频繁在线离线引发网友热议生活3、调整系统设置:检查并调整系统设置,确保没有设置导致QQ状态异常的选项。 4、加强账号安全:注意账号安全,避免账号被盗或异常登录导致的问题。 5、养成良好操作习惯:尽量减少频繁切换设备或网络环境的操作,避免因此导致的QQ状态变化。 QQ状态一会在线一会离线的问题可能是由多种原因导致的,为了确保QQ状态的稳定,用户需要http://app.gxstnypt.cn/post/17989.html
2.重新定义数字时代的差距与连接,探索在线与离线的新境界2、工作方面:“差不在线”也能帮助我们更好地调整工作状态,在工作中,我们时常需要处理各种紧急任务,回复各种邮件和消息,这使得我们无法真正地专注于工作,而“差不在线”的状态能让我们暂时远离这些干扰,让我们有更多的时间去思考,去专注于重要的任务,这种短暂的离线状态有助于我们恢复精力,提高工作效率。 https://hnjwwzy.cn/post/223.html
3.QQ中的4G在线标志,技术原理与含义解析五金交电摘要:,,本文探讨了QQ上4G在线的含义及其技术原理。4G在线是QQ状态的一种显示,表示用户当前使用的设备正在通过4G网络连接到QQ。背后的技术原理涉及到移动网络的演进和QQ软件的功能设计。通过了解4G网络的高速数据http://xjxygt.cn/post/15467.html
4.qq离线请留言什么意思(qq显示的离线请留言和离线有什么区别)今天来给大家分享一下关于qq离线请留言什么意思的问题,以下是对此问题的归纳整理,让我们一起来看看吧。 qq离线请留言什么意思 qq离线请留言的意思是好友不在线,但是已经设置接收离线消息了,即使不在线也可以收到;但不超过24小时没有登录QQ。QQ离线的意思是好友不在线,且超过24小时没有登录QQ。 http://www.wengnai.com/html/706009.html
5.探究脱机状态,挑战与机遇并存的时代个人学习脱机状态对我们的生活和工作产生了深远的影响,从个人层面来看,脱机状态有助于提高我们的生活质量,离开网络,我们可以更好地关注自己的身心健康,与家人和朋友共度美好时光,脱机状态也有助于我们培养独立思考的能力,提高应对挑战的能力。 从社会层面来看,脱机状态有助于缓解网络压力和网络依赖症,在数字化时代,越来越多的http://css.boxpond.cn/post/9.html
6.QQ全天WiFi在线背后的故事与深意定制义眼摘要:一整天QQ显示WiFi在线,背后蕴含着用户的行为习惯和心理状态。这可能意味着用户整天都在使用无线网络,享受高速的网络体验。这也可能反映出用户的工作状态和生活习惯,如在家办公或频繁使用社交媒体。QQ的在线状态还可能涉及到社交互动的意义,如向他人展示自己的活跃状态或等待他人的联系。总体而言,这一现象背后涵盖用户http://anshan.wuhanym.com/post/11890.html
7.目前在线状态:基于心跳机制的状态检测简书社会新闻时事1:太阳之泪1080p在线观看 12月19日,偶遇希林娜依高泉州簪花,原神八重神子被捅流口水_凤凰网,飞燕外传TXT最新章节免费阅读飞燕外传TXT一十九章,不复(高干)唐堇免费阅读最新章节列表-美文小说网,小玩具戴一晚上会怎么样,怎样生双胞胎99健康网,老王儿媳妇秦雨的小说,全网独家终结者4高清完整版,无http://www.lieren2000.com/wap/colormethod_view.asp?www/control/20241219/5200615683.shtml
8.前端面试题详细整理总结在离线状态时,操作window.applicationCache进行需求实现 CACHE MANIFEST #v0.11CACHE:js/app.js css/style.css NETWORK:resourse/logo.png FALLBACK://offline.html 11、浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢 在线的情况下,浏览器发现html头部有manifest属性,它会请求manifest文件,如果是第一次访问apphttps://www.imooc.com/article/309425
9.常见问题·国产操作系统麒麟操作系统——麒麟软件官方网站③ 离线安装(获取到相关的软件包):sudo dpkg -i 软件包名8) 银河系统都能安装安卓模拟器么? A: 现在只有飞腾和鲲鹏版本的系统能安装安卓模拟器。9) 可以安装apk应用软件吗? A: 不可以安装,只能使用软件商店已有的“手机APP”的应用。10) deb和rpm有什么区别? https://www.kylinos.cn/support/problem
10.京东客服离线和挂起的区别是什么店查查京东客服离线和挂起的区别是挂起状态会接入部分前面接待过的客户;离线状态不接客户。京东客服离线就是指账号下线了,这时候是无法收到消息的,而账号挂起的状态是指客服暂时离开的状态,还可以收到消息,一般临时有事就会挂起,然后客服会马上就回来处理各种消息的。https://www.dianchacha.com/news/info/id/17962
11.Skype软件在线状态有几种?总之,Skype软件在线状态有五种,分别是在线状态、离线状态、忙碌状态、请勿打扰状态和隐身状态。每种状态都有各自的特点和用途,用户可以根据自己的需要进行选择。如果你需要专注于工作或者静心休息,可以将在线状态更改为请勿打扰状态;如果你需要隐私保护,可以将在线状态更改为隐身状态。无论选择哪种状态,都可以更好地控制https://www.iskypeu.com/notice/574.html
12.微信能设置「离线」状态了!还能一键切换「在线」和「忙碌」!我觉得是没有状态提醒! 就像QQ那样的状态提醒: 「在线」、「请勿打扰」、「忙碌」和「离开」 ↓↓↓ (QQ状态栏) 平时用微信的时候这些情况你肯定很熟: 突然有事,没法及时回复消息; 想安静打会游戏,消息却振个不停; 心情极差时,消息老是接二连三; http://www.360doc.com/content/20/1105/09/72269104_944197092.shtml
13.设备在线/离线状态的缓存方案——实践类业务系统从表格存储/Redis中快速查询设备当前在线/离线状态 1.设备在线/离线状态变更消息 当设备连接到IoT物联网平台,设备离线,在线状态变更会生成特定topic的消息,我们服务端可以通过订阅这个topic获得设备状态变更信息。 ** 设备的在线/离线状态流转的Topic格式: https://blog.itpub.net/70017009/viewspace-2937803/
14.快手关闭自己在线状态朋友为啥也显示离线6条回答:【推荐答案】在快手中,有时候我们的好友可能无法看到我们最新的动态。这种情况通常是因为我们关闭了在线状态,而好友在刷新之前只能看到我们之前的动态。如果别人不允许你查看他们的动态,那么你将永远无法查看它们。但是,如果是自己关闭了在线状态,则可以通过https://wap.zol.com.cn/ask/x_16015733.html
15.qq在线状态怎么设置离线离线在线状态设置方法qq的在线状态是可以设置成离线的,但是有的小伙伴却没有找到这个在线状态在哪里,一直设置不了。那么qq在线状态怎么设置离线呢?下面小编就为大家带来了具体的设置方法介绍,我们一起来看看吧! qq在线状态怎么设置离线? 1、打开手机QQ,点击头像,然后点击侧边栏下方的“设置”。 https://app.3dmgame.com/mip/gl/257356.html
16.如何在《悟空分身》中设置分身的在线和离线状态?5. 点击“离线状态”选项,同样有三种选项可供选择:始终离线、仅在工作时间内在线离线和自定义离线时间。用户可以根据自己的需求选择合适的离线时间安排。 6. 确认选择后,分身的在线和离线状态将会生效,并应用到所有分身中。 三、使用技巧 1. 合理设置在线状态:根据实际需求,选择合适的在线状态可以避免不必要的打扰和https://www.sousou.com/bk/220619.html
17.繁易FBox明明处于在线状态,在云组态上却显示离线状态新闻中心繁易繁易FBox明明处于在线状态,在云组态上却显示离线状态 有以下三种处理方法: 1)选择设备中心的设备管理页面,然后选择有问题的设备操作标题下方的“更多”这个下拉箭头,点击刷新设备状态选项。 2)选择设备中心的设备管理页面,然后选择有问题的设备操作标题下方的“更多”这个下拉箭头,点击强制同步数据。 http://m.gongboshi.com/index.php?moduleid=4&username=flexem-cn&action=news&itemid=107626
18.BossBreaker离线状态能玩吗?探索离线游玩的可能性与玩法详解在现代游戏中,许多玩家都期望能够在没有互联网连接的情况下也能畅玩自己喜爱的游戏。对于《Boss Breaker》这款动作冒险类游戏,离线状态是否能继续游玩成为了不少玩家关心的问题。本文将详细探讨《Boss Breaker》在离线状态下的玩法、限制以及如何最大化游戏体验。 http://www.kinghai.co/zxinfo/22913.html
19.设备接入IoTDA物联网平台如何切换设备的在线/离线状态?NB-IoT设备上报数据后为状态为在线,距离上次上报数据25小时内未上报数据,会刷新状态为异常。超过49小时未上报数据,平台会将设备置为“离线”状态。 MQTT设备连接到平台后状态为在线,断开连接后平台1分钟内会自动刷新状态为离线。如果手动点击状态刷新按钮,则可实时刷新为离线状态。https://ecloud.10086.cn/op-help-center/doc/article/43631
20.JS判断客服QQ号在线还是离线状态的方法要使用JavaScript判断客服QQ号的在线状态,首先需要了解原来QQ官方提供的在线离线状态代码可能不再准确。因此,为了实现此功能,可以通过调用腾讯提供的API接口来获取QQ号码的在线状态信息,并据此判断QQ是否在线。 以下是实现该功能所需的知识点概述: 1. HTML结构准备:需要在HTML页面上创建对应的客服显示元素。使用`div`元素https://download.csdn.net/download/weixin_38746574/13037904
21.拼多多客服下班了怎么设置电商运营客服状态有哪些? 1. 当客服账号状态设置为在线时:该账号可正常接待消费者。 2. 当客服账号状态设置为忙碌时:该账号不会被分配新的客户,但可与之前接待过的客户互发消息。 3. 当客服账号状态设置为离线时:该账号不会被分配新的客户,且无法网络推广工程师与之前接待过的客户互发消息。https://m.jb51.net/zimeiti/875101.html
22.淘宝的在线状态准吗?在线有显示吗?简单来说,当您登录淘宝后,在屏幕右上角会显示用户状态,比如“在线”、“离线”等。 其次,淘宝在线状态也是可以设置的,支持“在线”、“离线”、“忙碌”、“隐身”等多个状态。这也意味着,即使一个用户登录了淘宝…https://m.sohu.com/a/681147002_120750978
23.服务器离线,如何应对和恢复在线状态?由于您的服务器已经处于离线状态,您将无法访问互联网或进行在线活动。请检查网络连接或联系服务提供商以解决问题。在服务器恢复在线之前,您可以使用本地资源或预先下载的内容继续工作。 服务器离线的原因与影响 (图片来源网络,侵删) 服务器离线,即服务器无法通过互联网或局域网进行通信,可能由多种原因造成,这通常意味https://www.kdun.com/ask/887885.html
24.拼多多客服离线状态解读若店铺没有客服在线,买家给您店铺发送消息时,会收到您设置的离线自动回复(每天仅一次)。 3、主账号处于离线状态,但显示有消息未回复? 商家客服的分流逻辑和“千牛”类似。在买家来咨询时,会自动分流至其他在线状态下的客服子账号上。若子账号选择忙碌或者离线状态时,该消息会自动分流至主账号上。此时主账号需要手动https://www.mmker.cn/article/13040.html