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檔案其快取的內容是互不干擾的。這些特性應該有相關文件說明的,但可惜我沒有找到有,若大家找到有,請分享給我一下。