html5中文学习网

您的位置: 首页 > html5教程 > 入门教程 » 正文

HTML5 离线应用之打造零请求、无流量网站的解决方法_html5教程技巧

[ ] 已经帮助:人解决问题
点评:今天Web应用程序已经很复杂了,以现在的发展,会将越来越复杂,但他有一个致命缺点,不能脱离internet链接,因此在HTML中新增了一API,它使用一个本地存储机制很好地解决了这个问题,为离线web应用铺平了道路

前言DqMHTML5中文学习网 - HTML5先行者学习网

今天Web应用程序已经很复杂了,以现在的发展,会将越来越复杂,但他有一个致命缺点,不能脱离internet链接,因此在HTML中新增了一API,DqMHTML5中文学习网 - HTML5先行者学习网

它使用一个本地存储机制很好地解决了这个问题,为离线web应用铺平了道路。DqMHTML5中文学习网 - HTML5先行者学习网
本地缓存于浏览器缓存DqMHTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
DqMHTML5中文学习网 - HTML5先行者学习网
本地缓存是为整个web应用程序服务DqMHTML5中文学习网 - HTML5先行者学习网
浏览器缓存只对单个网页服务</p><p>任何网页都具有网页缓存DqMHTML5中文学习网 - HTML5先行者学习网
本地缓存只缓存那些你指定缓存的页面</p><p>网页缓存不可靠、不安全,因为我们不知道网站中到底缓存了哪些页面、哪些资源DqMHTML5中文学习网 - HTML5先行者学习网
本地缓存可以控制对哪些内容进行缓存DqMHTML5中文学习网 - HTML5先行者学习网
DqMHTML5中文学习网 - HTML5先行者学习网
manifest文件DqMHTML5中文学习网 - HTML5先行者学习网

web应用程序本地缓存是通过每个页面的manifest文件来管理的,manifest是一简单文本,在该文件中以清单的形式列举了需要被缓存的不需要被缓存的文件的名字、路径。DqMHTML5中文学习网 - HTML5先行者学习网

可以为每个页面单独指定manifest也可以为整个应用程序指定,例我们为hello.htm的设置:DqMHTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
DqMHTML5中文学习网 - HTML5先行者学习网
CACHE MANIFESTDqMHTML5中文学习网 - HTML5先行者学习网
CACHE:DqMHTML5中文学习网 - HTML5先行者学习网
other.htmlDqMHTML5中文学习网 - HTML5先行者学习网
hellow.jsDqMHTML5中文学习网 - HTML5先行者学习网
images/myphoto.jpgDqMHTML5中文学习网 - HTML5先行者学习网
NETWORK:DqMHTML5中文学习网 - HTML5先行者学习网
http://LuLinniu/NotOfflineDqMHTML5中文学习网 - HTML5先行者学习网
NotOffline.aspDqMHTML5中文学习网 - HTML5先行者学习网
*DqMHTML5中文学习网 - HTML5先行者学习网
FALLBACK:DqMHTML5中文学习网 - HTML5先行者学习网
online.js locale.jsDqMHTML5中文学习网 - HTML5先行者学习网
CACHE:DqMHTML5中文学习网 - HTML5先行者学习网
newhellow.htmlDqMHTML5中文学习网 - HTML5先行者学习网
newhellow.jsDqMHTML5中文学习网 - HTML5先行者学习网
DqMHTML5中文学习网 - HTML5先行者学习网
在manifest文件中,第一行必须是CACHE MANIFEST,以把文本的作用告诉浏览器,即对本地缓存中的资源文件进行具体设置。DqMHTML5中文学习网 - HTML5先行者学习网
同时真正运行离线web应用程序时,需要对服务器进行配置,让服务器支持text/cache-manifest这个mime类型。DqMHTML5中文学习网 - HTML5先行者学习网

在指定文件源文件时可以把资源文件分为三类,CACHE、NETWORK、FALLBACKDqMHTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
</p><p>在CACHE类别中指定需要被缓存在本地的资源文件,为某个页面指定需要本地缓存的资源文件时,不需要把这个页面本身指定在CACHE类别中,DqMHTML5中文学习网 - HTML5先行者学习网
因为如果一个页面具有manifest文件,浏览器会自动对该页面进行本地缓存</p><p>NETWORK类别为显式指定不进行缓存的资源文件,这些文件只有建立服务器端链接才能访问,本例使用通配符*表示没有进行记录的都不缓存</p><p>FALLBACK类别中的每行中指定两个资源文件,第一个资源文件为能够在线访问时使用的资源文件,第二个为不能在线访问时使用的本地缓存文件DqMHTML5中文学习网 - HTML5先行者学习网
DqMHTML5中文学习网 - HTML5先行者学习网
浏览器与服务器交互过程DqMHTML5中文学习网 - HTML5先行者学习网

当使用离线web应用程序进行工作时,有必要了解浏览器与服务器之间的交互过程:DqMHTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
DqMHTML5中文学习网 - HTML5先行者学习网
比如一个http://LuLingniu,以index.htm为主页,该主页使用index.manifest,DqMHTML5中文学习网 - HTML5先行者学习网
在文件中缓存index.htm,hello.js,hello.jpg,首次访问时流程如下:DqMHTML5中文学习网 - HTML5先行者学习网
浏览器请求urlDqMHTML5中文学习网 - HTML5先行者学习网
服务器返回index.htm首页DqMHTML5中文学习网 - HTML5先行者学习网
浏览器解析index.htm网页,请求页面上所有资源文件DqMHTML5中文学习网 - HTML5先行者学习网
服务器返回资源文件DqMHTML5中文学习网 - HTML5先行者学习网
浏览器处理manifest文件,请求manifest中需要缓存的文件,即使请求过亦会再请求DqMHTML5中文学习网 - HTML5先行者学习网
服务器返回需要缓存的文件DqMHTML5中文学习网 - HTML5先行者学习网
浏览器对本地缓存进行更新,存入资源文件,并触发一个事件通知本地缓存更新</p><p>再次打开该URLDqMHTML5中文学习网 - HTML5先行者学习网
请求url DqMHTML5中文学习网 - HTML5先行者学习网
浏览器发现页面被缓存,于是使用本地缓存文件DqMHTML5中文学习网 - HTML5先行者学习网
解析文件DqMHTML5中文学习网 - HTML5先行者学习网
浏览器像服务器请求manifest文件DqMHTML5中文学习网 - HTML5先行者学习网
服务器返回304,通知manifest文件没有变化(若是改变将会有所不同)DqMHTML5中文学习网 - HTML5先行者学习网
DqMHTML5中文学习网 - HTML5先行者学习网
applicationCache对象DqMHTML5中文学习网 - HTML5先行者学习网

该对象代表了本地缓存,可以用它来通知用户本地缓存已经被更新,也允许手动更新本地缓存。DqMHTML5中文学习网 - HTML5先行者学习网

前面当浏览器对本地缓存做了更新装入新资源文件时,会触发applicationCache对象的updateready事件,通知本地缓存已被修改,然后提示用户手动刷新页面。DqMHTML5中文学习网 - HTML5先行者学习网
swapCacheDqMHTML5中文学习网 - HTML5先行者学习网

swapCache方法用来手动执行本地缓存的更新,它只能在applicationCache对象的updateReady事件触发时调用,DqMHTML5中文学习网 - HTML5先行者学习网

即当资源文件发生改变时,可使用此方法手工缓存更新。DqMHTML5中文学习网 - HTML5先行者学习网

DqMHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助