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 manifest="m.manifest">
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <script type="text/javascript" src="m.js"></script>
- </head>
- <body>
- ver:1<p>
- <input type="button" value="shwo_ver" onclick="show_ver();" /><p>
- <input type="button" value="load_js" onclick="load_js();" /><p>
- <input type="button" value="is_online" onclick="is_online();" /><p>
- </body>
- </html>
un_cache.html
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <script type="text/javascript" src="m.js"></script>
- </head>
- <body>
- ver:1<p>
- <input type="button" value="shwo_ver" onclick="show_ver();" /><p>
- <input type="button" value="load_js" onclick="load_js();" /><p>
- <input type="button" value="is_online" onclick="is_online();" /><p>
- </body>
- </html>
m.manifest
- CACHE MANIFEST
- # VERSION
- # 直接缓存的文件dd
- CACHE:
- m.js
- m1.js
- # 需要在时间在线的文件
- NETWORK:
- # 替代方案
- FALLBACK:
m.js
- var ver = "1";
- function show_ver() {
- alert(ver);
- }
- function load_js() {
- javascript:void((function(){var e=document.createElement('script');e.setAttribute('src','m1.js');document.body.appendChild(e);})())
- }
- function is_online() {
- alert(navigator.onLine);
- }
测试方法:
分别访问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 manifest="m1.manifest">
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <script type="text/javascript" src="m.js"></script>
- </head>
- <body>
- ver:1<p>
- <input type="button" value="shwo_ver" onclick="show_ver();" /><p>
- <input type="button" value="load_js" onclick="load_js();" /><p>
- <input type="button" value="is_online" onclick="is_online();" /><p>
- </body>
- </html>
m1.manifest
- CACHE MANIFEST
- # VERSION
- # 直接缓存的文件dd
- CACHE:
- m.js
- m1.js
- # 需要在时间在线的文件
- NETWORK:
- # 替代方案
- 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特性测试的更多相关文章
- HTML 5 应用程序缓存(Application Cache)cache manifest 文件使用 html5 中创建manifest缓存以及更新方法 一个manifest文件会创建一份缓存,不同的manifest文件其缓存的内容是互不干扰的
HTML5 离线缓存-manifest简介 HTML 5 应用程序缓存 使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本. 什么是应用程序缓存(A ...
- HTML5中引入的关键特性
新特性 描述 accesskey 定义通过键盘访问元素的快捷键 contenteditable 该特性设置为true时,浏览器应该允许用户编辑元素的内容.不指定变化后的内容如何保存 contextme ...
- HTML5 中的新特性:
一,用于绘画的 canvas 元素,<canvas>标签替代Flash Flash给很多Web开发者带来了麻烦,要在网页上播放Flash需要一堆代码和插件.<canvas>标签 ...
- 测试开发之前端——No2.HTML5中的标签
HTML5中的标签. 标签 描述 <!--...--> 定义注释. <!DOCTYPE> 定义文档类型. <a> 定义超链接. <abbr> 定义缩写 ...
- HTML5 中 40 个最重要的技术点
介绍 我是一个ASP.NET MVC的开发者,最近在我找工作的时候被问到很多与HTML5相关的问题和新特性.所以以下40个重要的问题将帮助你复习HTML5相关的知识. 这些问题不是你得到工作的高效解决 ...
- HTML5中的DOMContentLoaded 和 touchmove
Html5的出现确实解决了一部分页面交互的问题,同时它的一些特性还是没能被我们掌握,今天主要聊聊Html5中的DomcontenLoaded和touchmove事件的属性和使用: DomcontenL ...
- 小强的HTML5移动开发之路(2)——HTML5的新特性
来自:http://blog.csdn.net/dawanganban/article/details/17592787 一.画布(Canvas) 画布是网页中的一块区域,可所以用JavaScript ...
- html5中script的async属性
html5中script的async属性 我兴奋于html5的原因之一是一些久久未能实现的特性现在可以真正运用于实际项目中了. 如我们使用placeholder效果蛮久了但是那需要javascript ...
- 在HTML5中如何提高网站前端性能
1. 用web storage替换cookiesCookie最大的问题是每次都会跟在请求后面.在HTML5中,用sessionStorage和localStorage把用户数据直接在客户端,这样 ...
随机推荐
- 使用HTML5 Web存储的localStorage和sessionStorage方式
localStorage(本地存储),可以长期存储数据,没有时间限制,一天,一年,两年甚至更长,数据都可以使用.sessionStorage(会话存储),只有在浏览器被关闭之前使用,创建另一个页面时同 ...
- DICOM医学图像处理:storescp.exe与storescu.exe源码剖析,学习C-STORE请求
转载:http://blog.csdn.net/zssureqh/article/details/39213817 背景: 上一篇专栏博文中针对PACS终端(或设备终端,如CT设备)与RIS系统之间w ...
- BestCoder Round #60 题解链接
题解 题目 1001 GT and sequence 注意先特判000的情况:如果读入的数据有000,那么去掉所有的000且最后答案和000取一个max. 剩下的正数显然全部乘起来比较优. 对于负数 ...
- Python: 什么是*args和**kwargs
转自: http://blog.sina.com.cn/s/blog_65a8ab5d0101fglm.html http://blog.csdn.net/chenjinyu_tang/article ...
- ubuntu14.04安装OpenVirteX
官网链接: http://ovx.onlab.us/getting-started/installation/ step1: System requirements: Recommended 4 Co ...
- dhcp原理、安装、相关命令、疑惑
转自: http://blog.sina.com.cn/s/blog_642e41c20101tct3.html
- 【Hibernate】Hibernate系列3之配置文件详解
配置文件详解 3.1.配置文件 连接池性能优化:http://www.cnblogs.com/xdp-gacl/p/4002804.html
- 【SpringMVC】SpringMVC系列14之SpringMVC国际化
14.SpringMVC国际化 14.1.概述 14.2.用户切换选择语言
- [MySQL] - MySQL的Grant命令
本文实例,运行于 MySQL 5.0 及以上版本. MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删 ...
- Android 使用dip单位进行布局的一点知识
先看看怎么算出一个设备的dpi, 其实就是算出对角线上有多少个px,之后除上屏幕尺寸.比如,1280*720 的10.1寸设备,dpi = (sqrt(1280*1280+720*720)) / 1 ...