html5 中创建manifest缓存以及更新方法

测试环境和工具   chromium  18.0.1025.151 (开发编译版 130497 Linux) Ubuntu 11.04


一、测试内容

         1.A页面manifest缓存的js文件,B页面不设manifest是否能使用缓存的js文件

       2.A页面和B页面分别使用两个不同的manifest文件,但都缓存了同一个js文件,两页面更新缓存时,是否会相互影响?

       3.两个页面使用同一个manifest文件,是否是共用一份缓存?


二、详细测试

      1、A页面manifest缓存的js文件,B页面不设manifest是否能使用缓存的js文件 ?

先上文件

cache.html

[html]  view plain copy
  1. <html manifest="m.manifest">  
  2. <head>  
  3.     <meta http-equiv="Content-Type" content="text/html;charset=utf-8">  
  4.     <script type="text/javascript" src="m.js"></script>  
  5. </head>  
  6. <body>  
  7. ver:1<p>  
  8. <input type="button" value="shwo_ver" onclick="show_ver();" /><p>  
  9. <input type="button" value="load_js" onclick="load_js();" /><p>  
  10. <input type="button" value="is_online" onclick="is_online();" /><p>  
  11. </body>  
  12. </html>  

un_cache.html

[html]  view plain copy
  1. <html>  
  2. <head>  
  3.     <meta http-equiv="Content-Type" content="text/html;charset=utf-8">  
  4.     <script type="text/javascript" src="m.js"></script>  
  5. </head>  
  6. <body>  
  7. ver:1<p>  
  8. <input type="button" value="shwo_ver" onclick="show_ver();" /><p>  
  9. <input type="button" value="load_js" onclick="load_js();" /><p>  
  10. <input type="button" value="is_online" onclick="is_online();" /><p>  
  11. </body>  
  12. </html>  

m.manifest

[plain]  view plain copy
  1. CACHE MANIFEST  
  2. # VERSION  
  3.   
  4. # 直接缓存的文件dd  
  5. CACHE:  
  6. m.js  
  7. m1.js  
  8.   
  9. # 需要在时间在线的文件  
  10. NETWORK:  
  11.   
  12. # 替代方案  
  13. FALLBACK:  

m.js
[javascript]  view plain copy
  1. var ver = "1";  
  2.   
  3. function show_ver() {  
  4.     alert(ver);  
  5. }  
  6.   
  7. function load_js() {  
  8.     javascript:void((function(){var e=document.createElement('script');e.setAttribute('src','m1.js');document.body.appendChild(e);})())  
  9. }  
  10.   
  11. function is_online() {  
  12.     alert(navigator.onLine);  
  13. }  


测试方法:

分别访问cache.html和un_cache.html, 查看js版本都是为“1”. 

 然后修改m.js的版本为“2”.

刷新两个页面再次查看,cache.html显示为“1”, 而un_cache.html显示为“2”

测试结论:manifest建立的缓存文件,不会被没有manifest的页面读取。


2.A页面和B页面分别使用两个不同的manifest文件,但都缓存了同一个js文件,两页面更新缓存时,是否会相互影响?

新增两个文件

cache1.html

[html]  view plain copy
  1. <html manifest="m1.manifest">  
  2. <head>  
  3.     <meta http-equiv="Content-Type" content="text/html;charset=utf-8">  
  4.     <script type="text/javascript" src="m.js"></script>  
  5. </head>  
  6. <body>  
  7. ver:1<p>  
  8. <input type="button" value="shwo_ver" onclick="show_ver();" /><p>  
  9. <input type="button" value="load_js" onclick="load_js();" /><p>  
  10. <input type="button" value="is_online" onclick="is_online();" /><p>  
  11. </body>  
  12. </html>  

 

m1.manifest

[plain]  view plain copy
  1. CACHE MANIFEST  
  2. # VERSION   
  3.   
  4. # 直接缓存的文件dd  
  5. CACHE:  
  6. m.js  
  7. m1.js  
  8.   
  9. # 需要在时间在线的文件  
  10. NETWORK:  
  11.   
  12. # 替代方案  
  13. FALLBACK:  


测试方法:

改动一下两个manifest文件,访问cache.html和cache1.html,确保都建立新缓存,并且显示js版本号一致;

修改m.js的版本号,并改动一下m.manifest文件;

刷新cache.html和cache1.html,并再次查看js版本号,发现cache.html的版本号变了,但cache1.html的版本号没有变化。

测试结论:不同manifest文件的缓存,不会相互之间有影响


3.两个页面使用同一个manifest文件,是否是共用一份缓存?

新增cache2.html代码完全同cache.html.

测试方法:

访问cache.html和cache2.html,并确保都是显示最新js版本“4”;

修改js版本为“5”,并改动没m.manifest文件;

刷新cache.html,显示js版本为“5”;

修改js版本为“6”, 然后刷新cache2.html,显示js版本为“5”,而不是“6”.

测试结论:同一manifest文件的缓存只有一份,被多个页面使用时也是如此


三、总结

     通过以上测试,我们有理由可以这么认为:一个manifest文件会创建一份缓存,不同的manifest文件其缓存的内容是互不干扰的。这些特性应该有相关文档说明的,但可惜我没有找到有,若大家找到有,请分享给我一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值