2012-03-15 59 views
1

下載所有文件和緩存,默認情況下,html5緩存的工作方式是在manifest中提及的file/page/js/css/image文件在加載時被緩存第一,但我要求所有的文件應該從我的主頁一次緩存....有沒有辦法從緩存清單文件

回答

0

我得到了腳本來緩存您在清單文件中提到的所有文件。

<!DOCTYPE html> 
<html manifest='../cache.manifest'>// reference path of your manifest file 
<head> 

<title>Untitled Document</title> 
<script type="text/javascript"> 
    var cacheStatusValues = []; 
    cacheStatusValues[0] = 'uncached'; 
    cacheStatusValues[1] = 'idle'; 
    cacheStatusValues[2] = 'checking'; 
    cacheStatusValues[3] = 'downloading'; 
    cacheStatusValues[4] = 'updateready'; 
    cacheStatusValues[5] = 'obsolete'; 

    var cache = window.applicationCache; 
    cache.addEventListener('cached', logEvent, false); 
    cache.addEventListener('checking', logEvent, false); 
    cache.addEventListener('downloading', logEvent, false); 
    cache.addEventListener('error', logEvent, false); 
    cache.addEventListener('noupdate', logEvent, false); 
    cache.addEventListener('obsolete', logEvent, false); 
    cache.addEventListener('progress', logEvent, false); 
    cache.addEventListener('updateready', logEvent, false); 

    function logEvent(e) { 

     var online, status, type, message; 
     online = (navigator.onLine) ? 'yes' : 'no'; 
     status = cacheStatusValues[cache.status]; 
     type = e.type; 
     message = 'online: ' + online; 
     message += ', event: ' + type; 
     message += ', status: ' + status; 
     if (type == 'error' && navigator.onLine) { 
      message += ' (prolly a syntax error in manifest)'; 
     } 
     alert(message); 
     document.getElementById("lblEvents").value = message; 

    } 

     window.applicationCache.addEventListener(
     'updateready', 
     function() { 
      window.applicationCache.swapCache(); 
    window.location.reload(); 
     }, 
     false 
    ); 
     // end Script 
</script> 
</head> 

<body> 
<!-- 
Your body tags 
--> 
</body> 
</html> 
+0

如果你只是讓瀏覽器緩存中的文件本身同樣的事情會發生,整個清單將被原子更新。 – robertc 2012-04-04 16:34:13

1

Appcache更新是原子。在下載清單中引用的所有文件之前,appcache不用於爲它們提供服務。如果您需要加載所有內容,請將所有內容放入清單中。使用腳本生成清單文件,而不是使用通配符。

相關問題