2010-08-25 57 views
2

我正在爲iPhone設計移動網站。我已經添加了一個緩存清單,並將其加載到離線功能所需的資源列表中。清單文件具有正確的內容類型。如果您查看文件的響應標頭,則內容類型爲text/cache-manifest。清單文件是在這裏:離線無法在移動Safari中使用緩存清單

http://hoodisgood.clientsit.es/cache.manifest

該網站是可見這裏(您需要承擔你的iPhone(或模擬器看看),或在用Safari瀏覽器的用戶代理設置爲iPhone

http://hoodisgood.clientsit.es/

在查看網站並將它加書籤到主屏幕後,我將iphone設置爲飛行模式,當我嘗試查看網站時,我無法獲取警報,因爲它無法打開,因爲它沒有連接到互聯網,我已經在緩存清單文件中指定了我需要用於脫機操作的所有文件。

另外,糾正我,如果我錯了,但有緩存清單,即使設備在線,瀏覽器是否不應該從緩存源讀取?當我查看該網站時,我沒有看到的照片將從服務器加載,因爲它應該是。當我關閉並重新打開時,之前查看的圖像仍然從服務器加載。

我做錯了什麼?我檢查並重新檢查,一切似乎都是正確的,只是不確定它爲什麼不起作用。

謝謝。

回答

1

我注意到你的標籤沒有引用清單。

<html manifest="cache.manifest"> 

此外,您需要確保清單文件使用「text/cache-manifest」MIME類型。

3

我注意到你的標籤沒有引用清單。

<html manifest="cache.manifest"> 

此外,您需要確保清單文件使用「text/cache-manifest」MIME類型。

還要確保清單具有UTF-8編碼,而不是某些瀏覽器難以理解的編碼。

另外我可以推薦你在Chrome中加載網站。如果您查看Chrome中的開發者日誌,Chrome會寫出非常有用的錯誤消息,指導您解決問題所在。

1

我有一個類似的問題:

嘗試引用清單檔案中的絕對路徑。這爲我做了訣竅,我也使用了子域。

也使在Safari開發者控制檯,並添加下面的JS

function logEvent(event) { 
    console.log(event.type); 
} 
window.applicationCache.addEventListener('checking', logEvent, false); 
window.applicationCache.addEventListener('noupdate', logEvent, false); 
window.applicationCache.addEventListener('downloading', logEvent, false); 
window.applicationCache.addEventListener('cached', logEvent, false); 
window.applicationCache.addEventListener('updateready', logEvent, false); 
window.applicationCache.addEventListener('obsolete', logEvent, false); 
window.applicationCache.addEventListener('error', logEvent, false); 

這樣你可以檢查在問候你的緩存清單在瀏覽器中會發生什麼,如果發生錯誤中學習。