怎样启用javascri初学者使用Application Cache指南
2012-04-27 21:47 linux svn 命令 mac svn svn merge 阅读(170) 评论(0) 收藏 举报对于webapp来说,离线应用功能已经越来越重要。诚然,浏览器本身就有缓存机制,但是,这些缓存机制不够可靠,可能并不会按你所想要的方式运行。HTML5则通过ApplicationCache接口处理了离线应用中的一些问题。
AD:
对于webapp来说,离线应用功能已经越来越重要。诚然,浏览器本身就有缓存机制,但是,这些缓存机制不够可靠,可能并不会按你所想要的方式运行。HTML5则通过ApplicationCache接口处理了离线应用中的一些问题。
使用这个接口让你的应用拥有三方面的优势:
◆离线浏览——用户在不能联网的时候依然能浏览整个站点
◆高速——缓存资源是存储在本地的,因此能更快加载。
◆更小的服务器负载——浏览器只需要从服务器端下载有改变的资源即可,相同资源不需要重复下载。
ApplicationCache(或AppCache)让一个开发者可以指定浏览器需要保存哪个文件。当用户在离线情况下时,即使他们按了刷新按钮,你的应用也能正确加载和工作。
CACHEMANIFEST文件
cachemanifest文件是一个简单的文本文件,其中列出了浏览器需要缓存的资源。
引用一个MANIFEST文件
为了让一个应用能启用applicationcache,需要在文档的html标签中包含manifest属性,如下怎样启用javascri初学者使用Application Cache指南所示:
你需要在你想要缓存的webapp的每一页中都包含manifest属性。如果一个页面没有manifest属性,它将不会被缓存(除非在manifest文件中显式指定了这个页面)。这意味着只要用户访问的页面包含manifest属性,它都将会被加入applicationcache中。这样,就不用在manifest文件中指定需要缓存哪些页面了。
Manifest属性可以指定一个绝对URL或是一个相对径,但是,一个绝对URL需要和webapp是同源的。一个manifest文件可以是任何扩展文件类型,但必须有正确的mime-type。如下所示:
以“#”开头的都是注释,这些注释还可以起到另外的作用。一个应用只有在manifest文件发生变化时才会更新cache。例如,如果你编辑了图像或是改写了一个Javascript函数,cache并不会发生更新。你必须改写manifest文件本身来通知浏览器需要更新cache文件了。通过在manifest文件中添加一行注释,在其中写上版本号,或者文件hash值,或者时间戳,货到付款的亲子装你都可以确保用户拥有你的软件的最新版本。如果有新版本出现,你同样可以以编程的方式更新cache,就跟在Updatingthecache中所讨论的那样。
一个manifest文件可能包括三个部分:CACHE,NETWORK以及FALLBACK.
CACHE:
这是默认部分,列在这个条目下的文件(或者紧跟在CACHEMANIFEST字符串之后的)都会在第一次被下载后进入cache。
怎样启用javascriptNETWORK:
这一部分中所列出的资源都是需要联网使用的资源。它们都不会进入cache中,即使用户处于离线状态。这部分可能会使用Wildcards。
FALLBACK:
可选部分,指定了如果资源获取失败,将会呈现怎样的页面。第一个URL是资源,第二个就是llback页面。两个URL都必须是相对地址,并且由同一个manifest文件指定。可以使用Wildcards。
注意:这三部分可以以任何顺序在manifest文件中出现,并且每部分都可以在一个manifest文件中出现多次。
下面的manifest文件定义了一个“catch-all”页面(offline.html),这个页面将会在用户试图离线访问网站根节点时显示。它还指明了需要联网使用的其他资源(如远程站点上的资源)。
注意:引用了你的manifest文件的HTML文件都会自动被缓存,因此,没有必要在你的manifest文件中再指定这个文件,但是,在manifest文件中指定这个文件是一种更好的做法。
注意:页面上基于SSL的HTTPcacheheaders以及cachingrestrictions都会被cachemanifests重写。因此,基于https的页面也能离线工作。
更新缓存(CACHE)
如果一个应用是在离线情况下,那么它会保持它的缓存状态,除非有以下事件发生:
◆用户清除了浏览器中存储有你的站点的数据。
◆manifestfile被修改了。注意:修改了在manifest文件中列出的某个文件并不会让浏览器重新缓存资源。必须是manifest文件本身改变了,才会重新进行缓存。
◆appcache通过编程更新了。
缓存状态CACHESTATUS
在程序中,你可以通过window.applicationCache对象来访问浏览器的appcache。你可以查看status属性来获取cache的当前状态:
注意:像这样使用update()和swapCache()并不会将更新后的资源呈现给用户。这仅仅是让浏览器检查manifest文件是否发生了更新,然后下载指定的更新内容,重新填充appcache。因此,要让用户看到更新后的内容,需要两次页面下载,一次是更新appcache,一次是更新页面内容。
好消息是,你可以避免两次页面下载带来的麻烦。为了让用户能看到你的站点的最新版本,设置一个来页面加载时的updateready事件。
APPCACHE事件(APPCACHEEVENTS)
也许你已经想到了,还有更多事件可以反映出cache的状态。在诸如下载、appcache更新、出现错误等事件都会让浏览器触发相应事件。下面的代码片段为每一类cacheevent都设置了:

























浙公网安备 33010602011771号