HTML 5 应用程序缓存的介绍
http://www.w3school.com.cn/html5/html_5_app_cache.asp
接下来通过实际案例介绍HTML5应用程序缓存的介绍。
一 应用服务器
应用服务器使用tomcat.
在tomcat的web.xml 添加如下配置,因为manifest文件返回时MIME-type必须为 text/cache-manifest
appcache text/cache-manifest
二 页面
manifest文件default.appcache
缓存staticPage.html,不缓存 * 即所有文件。如果页面不存在或无法连接到网路,跳转到errorPage.html
CACHE MANIFEST staticPage.html NETWORK: * FALLBACK:/ errorPage.html
index.html 引入default.appcache 缓存文件
Insert title here this is the index page!
staticPage.html
Insert title here this is the static page! eee
randomPage.html
Insert title here This is the random page!
errorPage.html
Insert title here Error !!!
所有以上html及缓存文件(default.appcache)都在同一目录下。
现在让我们看看测试结果如何.
访问 http://localhost:8080/webapp/index.html
结果如下
从控制台上的信息,可知staticPage.html,errorPage.html已被缓存.
停止服务器。
访问 http://localhost:8080/webapp/staticPage.html 正常。缓存起效
访问 http://localhost:8080/webapp/randomPage.html 返回errorPage.html内容。yes,FALLBACK配置起效.
访问 http://localhost:8080/webapp/index.html 正常. no, 这不是我们想要的,因为我们并没有设置这个页面要缓存。 从w3cshcool介绍中可知 每个指定了 manifest 的页面在用户对其访问时都会被缓存。
有如下一个方案针对以上问题。
添加cachePage.html
Insert title here
修改index.html body内添加如下。
经测试,不可行。
summary:
如果应用有A,B,C,D 页面。
A 页面中引入了一个manifest文件,该manifest文件,缓存B文件,C文件作为错误页面。
当请求A页面是,浏览器会缓存A,B,C页面,及manifest文件。
如果A、B、C页面有跟新,要刷新文件,就对服务器端的manifest文件做任意修改(或者删除服务器端的manifest文件, 如果这样当用户访问任意缓存页面时,浏览器会尝试同步manifest文件,发现文件不存在,然后删除所有客户端缓存)。
每次访问A,B,C(缓存页面),浏览器都会对manifest文件做一次同步。
访问非缓存的文件,则manifest文件不会同步。
也就是说,每次访问缓存文件,浏览器会去同步manifest文件,
如果manifest文件有跟新,则刷新缓存文件列表(更新缓存文件、删除缓存文件、添加缓存文件)。
然后再次访问缓存文件时就可以看到更新的内容了。
以上都在chrome版本41.0.2272.118做测试。
已抢16841个
抢已抢49822个
抢已抢184147个
抢已抢66024个
抢已抢350327个
抢已抢664020个
抢