zoukankan      html  css  js  c++  java
  • 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 plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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文件其缓存的内容是互不干扰的。这些特性应该有相关文档说明的,但可惜我没有找到有,若大家找到有,请分享给我一下。

    一、测试内容

          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文件,初次访问时,不会造成旧缓存数据更新,并且加载的是实时加载线上资源的。再次访问时将使用旧缓存数据。

  • 相关阅读:
    CentOS安装配置Tomcat-7
    CentOS搭建VSFTP服务器
    使用DDMS测试安卓手机APP的性能(android)
    Linux常见问题及解决方案
    数据库版本控制工具:NeXtep Designer
    身份证号码编码规则
    无网络安装mysql步骤
    HTTP协议详解
    Jenkins持续集成构建
    Gulp和Webpack对比
  • 原文地址:https://www.cnblogs.com/sunshq/p/4221177.html
Copyright © 2011-2022 走看看