1. 程式人生 > >html5中manifest特性測試(一)

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