1. 程式人生 > >HTML5 離線快取DEMO示例

HTML5 離線快取DEMO示例

1.index.manifest檔案配置

CACHE MANIFEST
#chrome瀏覽器支援,火狐瀏覽器支援度不夠好
#version 1
#author by guoquanyou

#CACHE:其後列出的是需要快取的內容
CACHE:
index.html
css/index.css
img/girl.jpg

#NETWORK:其後列出的是不進行快取的內容,每次都需要從伺服器端獲取
NETWORK:
*

FALLBACK:

img/pirate1.png img/pirate_back.png

2.index.html
<!DOCTYPE html>
<html manifest="index.manifest">
<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" href="css/index.css" />
<script type="text/javascript">
	//判斷瀏覽器是否能夠連線網際網路,online表示能夠聯網,offline表示不能聯網;根據瀏覽器狀態自動監聽並進行響應【通過斷開或開啟本地連線進行測試】
	window.addEventListener("online", function() {
		alert("您已變成線上狀態")
	}, true);
	window.addEventListener("offline", function() {
		alert("您已變成離線狀態")
	}, true);
	//手動判斷瀏覽器的聯網狀態
	/*	if(navigator.onLine){
		alert("線上");
	}else{
		alert("離線");
	} */
	//alert("navigator.onLine:"+navigator.onLine);
	//當index.manifest內容更新時,瀏覽器檢查到存在更新,並進行提示
	function init() {
		setInterval("toUpdateCache()", 3000);
	}
	function toUpdateCache() {
		//強制檢查伺服器上的manifest檔案是否有更新
		applicationCache.update();
	}
	applicationCache.onupdateready = function() {
		if (confirm("本地快取已被更新,需要重新整理頁面來獲取應用程式最新版本")) {
			//手動更新本地快取,只能在onupdateready事件觸發時呼叫
			applicationCache.swapCache();
			location.reload();
		}
	}
	//與上述寫法完全等效
	/* applicationCache.addEventListener("updateready",function(){
		if(confirm("本地快取已被更新,需要重新整理頁面來獲取應用程式最新版本")){
			//手動更新本地快取,只能在onupdateready事件觸發時呼叫
			applicationCache.swapCache();
			location.reload();
		}
	},true); */

	/* function test(){
	var msg=document.getElementById("msg");
	applicationCache.onchecking=function(){
		msg.innerHTML+="onchecking<br/>";
	}
	applicationCache.ondownloading=function(){
		msg.innerHTML+="ondownloading<br/>";
	}
	applicationCache.onprogress=function(){
		msg.innerHTML+="onprogress<br/>";
	}
	applicationCache.onupdateready=function(){
		msg.innerHTML+="onupdateready<br/>";
	}
	applicationCache.oncached=function(){
		msg.innerHTML+="oncached<br/>";
	}
	applicationCache.onerror=function(){
		msg.innerHTML+="onerror<br/>";
	}
	
	} */
</script>
</head>
<body onload="init()">
	<img src="img/girl.jpg" /><img src="img/pirate1.png" />
	<img src="img/pirate.png" /> 一個來自伺服器端的傳說。
	<div id="msg"></div>
</body>
</html>

3.專案結構


4.使用Tomcat伺服器,確認C:\apache-tomcat-8.0.28\conf目錄下的web.xml中已經包含以下配置:

    <mime-mapping>
        <extension>appcache</extension>
        <mime-type>text/cache-manifest</mime-type>
    </mime-mapping>
5.執行伺服器,並訪問index.html頁面:

1)斷開本地連線,然後啟用,檢視頁面的反應情況;

2)修改index.manifest檔案,檢視頁面的反應情況。