2013-04-14 135 views
2

我正在運行DHTML頁面並希望緩存所引用的HTML,PHP文件和IMAGE文件。iPad上的應用程序緩存不會緩存網站數據或頁面

我在WWW.sitename.COM/sub-dir/

的.htaccess

AddType application/x-httpd-php .html 
AddType application/x-httpd-php .htm 
AddType text/cache-manifest .manifest 
AddHandler server-parsed .html 
AddHandler application/x-httpd-php .html .htm 
在這個

cache.manifest

CACHE MANIFEST 

# Cache manifest version 0.0.00002 

NETWORK: 

CACHE: 

http://WWW.sitename.COM/sub-dir/index.html 
http://WWW.sitename.COM/sub-dir/this.php 
http://WWW.sitename.COM/sub-dir/images/first.png 
http://WWW.sitename.COM/sub-dir/images/second.png 

FALLBACK: 

HTML清單參考以下所有文件。 PHP文件...

<html manifest="http://WWW.sitename.COM/sub-dir/cache.manifest"> 

腳本檢測緩存活動

<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+= ' (probably a syntax error in cache.manifest)'; 
} 
console.log(message); 
} 



window.applicationCache.addEventListener(
'updateready', 
function(){ 
    window.applicationCache.swapCache(); 
    console.log('swap cache has been called'); 
}, 
false 
); 

setInterval(function(){cache.update()}, 10000); 

</script> 

控制檯報告說,沒有什麼是被緩存。

任何和所有的援助感激地收到。

謝謝。

+0

我嘗試刪除HTML標記中的絕對路徑,並用其他網站上建議的替換它,然後重新構建清單文件。這些都沒有任何影響。控制檯報告「this.php(line 1603) online:yes,event:progress,status:uncached this。PHP(線1603) 「 – TJS101

+0

Firebug的控制檯 在線:是的,事件:檢查,狀態:未緩存 在線:是的,事件:下載,狀態:未緩存 在線:是的,事件:進步,狀態:未緩存 在線:是的,事件:進步,狀態:未緩存 在線:是的,事件:進步,狀態:未緩存 在線:是的,事件:進步,狀態:未緩存 在線:是的,事件:UPDATEREADY,狀態:未緩存 InvalidStateError:嘗試使用對象即不可用或不再可用 \t window.applicationCache.swapCache(); 在線:是的,事件:檢查,狀態:未緩存 在線:是的,事件:NOUPDATE,狀態:未緩存 – TJS101

回答

7

經過大量的研究,答案是...

  1. 不包括持有

    HTML清單= 「cache.manifest」

    標籤在該網頁的名稱cache.manifest文件。

  2. 確保cache.manifest文件僅使用相對URL而非ABSOLUTE。

  3. 確保您的iPad已在任何系統軟件更新後至少重新啓動一次。

  4. 正確的MIME類型在.htaccess文件清單文件是

    將AddType文本/緩存清單.manifest的

感謝比約恩在dev.bjorn.com/723爲幫助我到達那裏......一篇值得閱讀的好博客文章。

+1

ALSO - 作爲一個不給別人這個問題 - 確保您的文本編輯器保存cache.manifest文件ANSI標準TXT - 不是UTF-8或UNICODE。我只是修改並嘗試了幾種格式。只有ANSI TXT的作品。 – TJS101

+0

另外,在Chrome中打開控制檯,它會告訴您下載緩存時出現的錯誤。我不確定是否有一些錯誤會阻止所有緩存,但可能會發生。 –

+0

我剛剛確認一些錯誤會阻止所有緩存。例如,如果您的緩存指向返回404的url,則不會緩存任何內容。這裏給你一個#5:你的網址裏面沒有空格。用「%20」替換每個空格 –