测试环境和工具   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

  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

  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

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

m.js

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

测试方法:

分别访问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

  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

  1. CACHE MANIFEST
  2. # VERSION
  3. # 直接缓存的文件dd
  4. CACHE:
  5. m.js
  6. m1.js
  7. # 需要在时间在线的文件
  8. NETWORK:
  9. # 替代方案
  10. 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文件其缓存的内容是互不干扰的。这些特性应该有相关文档说明的,但可惜我没有找到有,若大家找到有,请分享给我一下。

一、测试内容

1.manifest文件改动后,浏览器在什么时候更新缓存?

2.一个新页面使用已有的manifest文件(其他页面使用的,并且已经创建好缓存),初次访问时,会引起整个缓存更新吗?

二、详细测试

 1.manifest文件改动后,浏览器在什么时候更新缓存?

使用测试(一)的cache.html, m.js, m.manifest三个文件。js版本号1。

测试过程:

访问cache.html,确保缓存数据是最新的;

修改m.js让版本号为“2”,并修改m.manifest文件(改动一下注释即可);

刷新cache.html, 查看js版本是“1”,但chrom的console提示更新缓存了;

修改m.js让版本号为“3”,再次刷新cache.html, 查看js的版本号是“2”,chrom的console没有提示有缓存更新;

修改m.js让版本号为“4”,再次刷新cache.html, 查看js的版本号是“2”.

测试结论:浏览器检测到manifest文件有变化时,会更新缓存,但更新策略是先读取旧缓存显示出来,然后再更新。

      2.一个新页面使用已有的manifest文件(其他页面使用的,并且已经创建好缓存),初次访问时,会引起整个缓存更新吗?

在上一个测试的基础上,继续测试。

测试过程:

新建文件cache3.html,代码同cache.html;

访问cache3.html,查js版本号结果为“4”(最新文件的版本号);

修改m.js代码使版本号为“5”,刷新cache3.html,查看js版本号结果为“2”(缓存里的版本号);

测试结论:新页面使用旧manifest文件,初次访问时,不会造成旧缓存数据更新,并且加载的是实时加载线上资源的。再次访问时将使用旧缓存数据。

html5中manifest特性测试的更多相关文章

  1. HTML 5 应用程序缓存(Application Cache)cache manifest 文件使用 html5 中创建manifest缓存以及更新方法 一个manifest文件会创建一份缓存,不同的manifest文件其缓存的内容是互不干扰的

    HTML5 离线缓存-manifest简介 HTML 5 应用程序缓存 使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本. 什么是应用程序缓存(A ...

  2. HTML5中引入的关键特性

    新特性 描述 accesskey 定义通过键盘访问元素的快捷键 contenteditable 该特性设置为true时,浏览器应该允许用户编辑元素的内容.不指定变化后的内容如何保存 contextme ...

  3. HTML5 中的新特性:

    一,用于绘画的 canvas 元素,<canvas>标签替代Flash Flash给很多Web开发者带来了麻烦,要在网页上播放Flash需要一堆代码和插件.<canvas>标签 ...

  4. 测试开发之前端——No2.HTML5中的标签

    HTML5中的标签. 标签 描述 <!--...--> 定义注释. <!DOCTYPE>  定义文档类型. <a> 定义超链接. <abbr> 定义缩写 ...

  5. HTML5 中 40 个最重要的技术点

    介绍 我是一个ASP.NET MVC的开发者,最近在我找工作的时候被问到很多与HTML5相关的问题和新特性.所以以下40个重要的问题将帮助你复习HTML5相关的知识. 这些问题不是你得到工作的高效解决 ...

  6. HTML5中的DOMContentLoaded 和 touchmove

    Html5的出现确实解决了一部分页面交互的问题,同时它的一些特性还是没能被我们掌握,今天主要聊聊Html5中的DomcontenLoaded和touchmove事件的属性和使用: DomcontenL ...

  7. 小强的HTML5移动开发之路(2)——HTML5的新特性

    来自:http://blog.csdn.net/dawanganban/article/details/17592787 一.画布(Canvas) 画布是网页中的一块区域,可所以用JavaScript ...

  8. html5中script的async属性

    html5中script的async属性 我兴奋于html5的原因之一是一些久久未能实现的特性现在可以真正运用于实际项目中了. 如我们使用placeholder效果蛮久了但是那需要javascript ...

  9. 在HTML5中如何提高网站前端性能

    1.    用web storage替换cookiesCookie最大的问题是每次都会跟在请求后面.在HTML5中,用sessionStorage和localStorage把用户数据直接在客户端,这样 ...

随机推荐

  1. Leetcode 之Convert Sorted List to Binary Search Tree(55)

    和上题思路基本一致,不同的地方在于,链表不能随机访问中间元素. int listLength(ListNode* node) { ; while (node) { n++; node = node-& ...

  2. mysql in 子查询 效率慢 优化(转)

    mysql in 子查询 效率慢 优化(转) 现在的CMS系统.博客系统.BBS等都喜欢使用标签tag作交叉链接,因此我也尝鲜用了下.但用了后发现我想查询某个tag的文章列表时速度很慢,达到5秒之久! ...

  3. 搭建自己的SIP服务器:开源sip服务器opensips的搭建及终端TwInkle的使用

    搭建自己的SIP服务器:开源sip服务器opensips的搭建及终端TwInkle的使用 分类: linux编译相关2013-01-05 21:38 17983人阅读 评论(24) 收藏 举报 先下载 ...

  4. 使用Discuz关键词服务器实现PHP中文分词

    不同于使用自己的服务器进行分词,Discuz!在线中文分词服务是基于API返回分词结果的.在项目中,我们只需要一个函数即可方便地进行分词.关键词提取.以下是根据Discuz!在线分词服务API写的函数 ...

  5. 【Linux】/dev/null 2>&1 详解

     今天一个朋友突然在自己的维护的Linux中, /var/spool/cron/root 中看到了以下的内容: 30 19 * * * /usr/bin/**dcon.sh > /dev/nul ...

  6. 【云计算】Docker云平台—Docker进阶

    Docker云平台系列共三讲,此为第二讲:Docker进阶 参考资料: 五个Docker监控工具的对比:http://www.open-open.com/lib/view/open1433897177 ...

  7. Longest Consecutive Sequence

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence. C ...

  8. JS实现多附件上传(asp.net)

    前几天,用户提出一个需求-多附件上传,另外,每个上传文件要加一个别名,本人创新少,从网上收集了资料,稍微改写,满足了 客户的需求.在应用到程序之前,先做了个小测试,测试通过,小高兴,就记录下了这个小测 ...

  9. apache AllowEncodedSlashes 允许URL中对路径分隔符进行编码

    2013年11月29日 10:35:32 情景: 你想通过在当前的URL中记录来源页面的URL,以便处理完请求后再跳转回来源页: http://www.example1.com/refer/http: ...

  10. HDU1712周期

    ACboy needs your help Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...