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.离线文件什么意思离线文件是指传送文件给对方用户不在线时,将在线文件转存到中间网络保存一定时间,当对方在线时主动发送给对方。 腾讯从QQ2007 正式版本起,为了满足QQ用户的离线后的文件传输需求,对全体QQ用户推出了离线传文件这一新功能。发送离线文件就是说对方不在线时,或者不在电脑前时,可以发送离线文件,然后会保存在电脑系统里,https://edu.iask.sina.com.cn/jy/lOK9i9ubvP.html
2.什么是QQ离线文件什么是QQ在线文件腾讯微信最近不少人有点迷糊这类问答,其实离线文件和在线文件的区别是在线发送文件是点对点的,就是文件的发收双方。离线文件是发送方先将文件上传至服务器,待接收方上线后会收到文件接收通知,直接从服务器进行下载。 什么是QQ离线文件: 1、离线文件是发送方先将文件上传至服务器;http://www.puhuahui.com/4363.html
3.android12下载离线文件到对应包名的目录下是不需要申请权限的一、什么是离线安装? 使用离线安装包进行软件安装的方式就叫离线安装。 离线安装包又叫做完整安装包,包含所有的安装文件。与其相对的是在线安装,即在条件允许且网络良好的条件下采用网络安装的方式。在线安装方式的缺点是在不太好的网络状况下容易出现长时间等待或安装失败的情况,这种情况下只能进行离线安装。 https://blog.51cto.com/u_16213669/7626478
4.qq离线文件如何接收怎样发送qq离线文件3、选择要发送的文件,点击确定,文件开始传送。 4、传送完成之后,聊天窗口提示离线文件上传成功,此时作为接收方也会收到提示。 QQ离线文件和在线文件有什么区别 1、文件处理方式不同 在线传送:文件是点对点的,就是文件的发收双方。 离线传送:发送方先将文件上传至服务器,待接收方上线后会收到文件接收通知,直接从服https://www.tianqi.com/toutiao/read/103521.html
5.什么是文件保密系统?一文了解文件保密系统什么是文件保密系统 “文件保密系统”是指采用计算机、网络通讯、密码加密技术对各类需要加密的文件(机要文件、研发文件、设计图纸、技术资料、财务报表、商业数据等)进行加密防止……https://www.ekongsoft.com/news/2023/3505.htm
6.什么是H5离线包,如何生成H5离线包在线生成 .amr 包 进入控制台的实时发布>离线包管理页面,将上一步中生成的.zip包上传到 MDS 发布平台,生成.amr包。具体操作步骤,参考实时发布 > 创建离线包。 重要 在新增离线包配置中,离线包客户端范围的 iOS 最低版本需低于 iOS 客户端 info.plist 文件中的Product Version字段(见下图),iOS 客户端的最低https://help.aliyun.com/document_detail/85627.html
7.在线帮助信息3.2.8.1 什么是离线策略 如果公司有笔记本电脑加入了绿盾终端,当操作员需要将电脑带回家工作或者出差时,需要使用的文件脱离了绿盾服务端就会显示为密文,操作员无法查看、使用。为此,绿盾信息安全管理软件提供了离线策略这一强大的功能。 注:即使是导入了离线策略的终端电脑也仅是本机可以查看、使用加密文件,无法外发。 http://www.amoisoft.com/onlinehelp_ld/328.htm
8.迅捷PDF转换器迅捷pdf转换器官网迅捷PDF转换器可以实现多种办公文档格式的转换,包括将PDF转换成Word、PPT、Excel、HTML、TXT、图片;将Word、图片、Excel、PPT等转换成PDF;分割合并PDF、压缩PDF文件、获取PDF文件图片、PDF解除密码以及多种电子书格式转换等.同时还可批量转换文档,实现一键轻松转换.https://www.xjpdf.com/
9.网盘文件离线存储和保存至设备有什么区别?离线存储和保存至设备是文件管理中常用的两种方式,它们在操作和功能上有一些区别。离线存储指的是将文件从网络上下载到本地设备的存储空间中,以便在没有网络连接时仍然可以访问和使用这些文件。保存至设备是将文件直接保存在设备的存储空间中,以便在任何时候都可以访问和使用这些文件。 https://yunpan.360.cn/cms/cjwt/171.html
10.腾讯QQ会员当好友不在线时,您依然可以向好友发送文件,文件会保存在我们的服务器中,当您的好友下次登录QQ时就能通过我们的提醒,立即获取您向他/她发送的文件了! C2C离线传文件扩容 离线传文件大扩容,流量步入T级时代!QQ会员独享特权,大文件统统秒传!离线文件传送功能面向所有QQ用户,QQ会员享受更大存储容量特权,会员的离线传文https://baike.sogou.com/v57414345.htm
11.百度网盘使用的是什么类型的服务器协议?百度网盘不是FTP服务器,而是一种基于云存储的文件托管服务。 百度网盘是一种云存储服务,不是FTP服务器。 百度网盘是由百度公司提供的在线存储服务,它允许用户将文件保存在互联网上的服务器上,而不是使用FTP(File Transfer Protocol)这种传统的文件传输协议,以下是对百度网盘相关信息的具体介绍: https://www.kdun.com/ask/1201053.html
12.usdoc文档在线预览解析如何实现Office文件的在线预览功能,如在线查看预览文件Word、OFD文件的在线预览查看、Excel文件的在线预览、以及PDF和PPT文件的在线预览。Office文件预览大全总结 2023-11-19 14:50:041568 原创Linux安装图形库libgdiplus,离线安装软件库 yum install安装完之后会自动清理安装包,如果只想通过yum下载软件的安装包,但是不需要https://me.csdn.net/blog/kiss_code
13.什么叫离线文件离线下载的文件!https://wenwen.soso.com/z/q405216472.htm
14.服务器拒绝了您发送离线文件是怎么回事怎么办?→MAIGOO知识总之,服务器拒绝了您发送离线文件的原因无非就是上述几种,当然购买腾讯QQ的会员功能可以免除许多限制带来的烦恼。 试试以下解决办法: 1.把文件名缩短。例如1.xls(改下后缀名,便能发了,下回来后又改回来就可以用了) 2.压缩一下再发。 3.检查QQ安全设置,降低安全等级---打开QQ的设置面板,将 “安全和隐私/安全https://www.maigoo.com/goomai/10279.html
15.10款适PC最佳文件共享软件:在线和离线传输文件当文件共享软件具有正确的功能和产品时,它们会很棒。为了帮助你找到合适的软件,我们添加了一些最佳选择。继续阅读以了解有关这些软件的更多信息。 如何在线和离线传输文件?文件共享软件是最重要的软件之一,换句话说,你甚至可以将其视为必备软件。无论你从事何种工作或工作,在某个时候你一定感到需要与他人共享文件或文档https://www.lsbin.com/15222.html