Heim  >  Artikel  >  Web-Frontend  >  HTML 5 应用程序缓存_html/css_WEB-ITnose

HTML 5 应用程序缓存_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-21 09:10:111141Durchsuche

HTML 5 应用程序缓存的介绍

http://www.w3school.com.cn/html5/html_5_app_cache.asp


接下来通过实际案例介绍HTML5应用程序缓存的介绍。


一 应用服务器

应用服务器使用tomcat.

在tomcat的web.xml 添加如下配置,因为manifest文件返回时MIME-type必须为 text/cache-manifest

  <mime-mapping>    <extension>appcache</extension>    <mime-type>text/cache-manifest</mime-type>  </mime-mapping>

二 页面

manifest文件default.appcache

缓存staticPage.html,不缓存 * 即所有文件。如果页面不存在或无法连接到网路,跳转到errorPage.html

CACHE MANIFEST              staticPage.html      NETWORK: * FALLBACK:/ errorPage.html


index.html 引入default.appcache 缓存文件

<!DOCTYPE html><html manifest="default.appcache"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>	this is the index page!</body></html>

staticPage.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>	this is the static page! eee</body></html>

randomPage.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>This is the random page!</body></html>

errorPage.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>	<h1>Error !!!</h1></body></html>

所有以上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

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html  manifest="default.appcache"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body></body></html>

修改index.html body内添加如下。

<iframe src="cachePage.html" style="display:none;"></iframe>

经测试,不可行


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做测试。 




Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn