HTML 5 应用程序缓存

简介:

HTML 5 应用程序缓存的介绍

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


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


一 应用服务器

应用服务器使用tomcat.

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

1
2
3
4
   < mime-mapping >
     < extension >appcache</ extension >
     < mime-type >text/cache-manifest</ mime-type >
   </ mime-mapping >

二 页面

manifest文件default.appcache

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

1
2
3
4
5
6
7
8
9
10
CACHE MANIFEST
               
staticPage.html    
 
   
NETWORK: 
 
FALLBACK:
/ errorPage.html


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

1
2
3
4
5
6
7
8
9
10
11
12
<!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

1
2
3
4
5
6
7
8
9
10
<!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

1
2
3
4
5
6
7
8
9
10
11
<!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

1
2
3
4
5
6
7
8
9
10
<!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

结果如下

wKiom1WnkmXAMwV0AAE3tKxAg6k407.jpg

从控制台上的信息,可知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 的页面在用户对其访问时都会被缓存


有如下一个方案针对以上问题。

1. 添加cachePage.html

1
2
3
4
5
6
7
8
9
10
<!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 >

2. 修改index.html,删除html标签内 manifest="default.appcache",并且在body标签内添加如下。

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

3. 清除浏览器的缓存。(我这里是先重命名服务器端default.appcache文件,刷新任意缓存页面,还原服务器端manifest文件为default.appcache)

经测试,可行,nice!


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




 本文转自 antlove 51CTO博客,原文链接:http://blog.51cto.com/antlove/1675431

相关文章
|
8天前
|
搜索推荐 定位技术 UED
HTML定位技术:种类、特点与应用
HTML定位技术:种类、特点与应用
|
23天前
|
存储 缓存 算法
【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能
【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能
111 0
|
1月前
|
移动开发 前端开发 HTML5
【基于HTML5的网页设计及应用】——工字型布局
【基于HTML5的网页设计及应用】——工字型布局
59 0
|
1月前
|
移动开发 HTML5 容器
【基于HTML5的网页设计及应用】——固定宽度布局
【基于HTML5的网页设计及应用】——固定宽度布局
28 0
|
1月前
|
移动开发 前端开发 数据安全/隐私保护
【基于HTML5的网页设计及应用】——用户注册
【基于HTML5的网页设计及应用】——用户注册
21 0
|
1月前
|
移动开发 前端开发 HTML5
【基于HTML5的网页设计及应用】——实现个人简历表格和伪类选择器应用
【基于HTML5的网页设计及应用】——实现个人简历表格和伪类选择器应用
46 0
|
2月前
|
缓存 Java 数据库
优化您的Spring应用程序:缓存注解的精要指南
优化您的Spring应用程序:缓存注解的精要指南
42 0
|
25天前
|
存储 缓存 移动开发
HTML5 应用程序缓存
HTML5的离线缓存(Application Cache)允许网页存储资源以实现离线访问。通过manifest文件指定缓存内容和更新规则,比如列出要缓存的HTML、CSS、JS和图片。在HTML中引用manifest文件后,浏览器会根据文件变化更新缓存。但要注意,应用缓存不自动更新,需手动修改manifest触发,并且现代Web开发更多使用服务工作者(Service Workers)替代,以获得更优的离线体验和更新策略。
|
30天前
|
移动开发 HTML5
HTML5表格简单应用案例之[招聘需求表]
HTML5表格简单应用案例之[招聘需求表]
11 0
|
1月前
|
移动开发 前端开发 HTML5
【基于HTML5的网页设计及应用】——float实现页面布局
【基于HTML5的网页设计及应用】——float实现页面布局
25 0