2013-01-24 33 views
6

設計HTML5脫機支持(AppCache)適用於客戶端設備處於脫機狀態或客戶端設備處於聯機狀態且服務器可訪問的情況。之後,我緩存應用程序,並在設備沒有互聯網訪問的情況下在瀏覽器中重新打開它(刷新它),瀏覽器從AppCache加載應用程序。在這種情況下,瀏覽器不會嘗試來獲取appcache清單(它明白我們處於脫機狀態)。HTML5 AppCache:如果服務器不可訪問但網絡可訪問,如何實現脫機模式

但讓我們來考慮一下當我的設備沒有脫機的情況。它仍然有互聯網連接。但我的服務器已關閉。可能有很多不同的原因(硬件故障,AppPool停止,IIS限制,DNS錯誤等)。在這種情況下,當我在瀏覽器中打開緩存的應用程序時,它會嘗試獲取appcache清單並獲取404錯誤(未找到)。之後,瀏覽器清除應用程序的AppCache!所以在下次運行時,它不會從AppCache加載它並顯示404頁面錯誤「頁面」。沒有更多的離線工作。

離線模式運作取決於服務器無法訪問的原因,這對我來說看起來很奇怪。爲什麼我應該關心用戶(它沒有互聯網連接或服務器關閉)?

所以我的問題是:有人知道任何方式使一個應用程序工作時,設備在線,但其服務器無法訪問?
理想情況下,我應該能夠捕獲window.applicationCache的錯誤事件並告訴它「沒關係,請繼續使用緩存,不要過時」。

+0

瀏覽器是什麼,我只是做這在Chrome和我的緩存清單仍然存在。關閉服務器但保持聯機狀態,出現錯誤:應用程序緩存錯誤事件:清單抓取失敗(-1),但Chrome並未刪除我的原始清單。 – mattdlockyer

+1

我使用的是Chrome 24.我在上一次Firefox中有相同的行爲。 當您關閉服務器時,瀏覽器獲得的http狀態是什麼?我得到404,我在提琴手中看到它。在瀏覽器的控制檯中,我看到以下內容: 文檔是使用清單http://localhost/ajax/manifest.appcache從應用程序高速緩存加載的應用程序高速緩存檢查事件 應用程序高速緩存過時事件 – Shrike

+1

有關此任務的消息?我現在面臨同樣的問題。 – Roland

回答

0

這是不可能的每application-cache specification

Otherwise, if fetching the manifest fails in some other way (e.g. the server returns another 4xx or 5xx response or equivalent, or there is a DNS error, or the connection times out, or the user cancels the download, or the parser for manifests fails when checking the magic signature), or if the server returned a redirect, or if the resource is labeled with a MIME type other than text/cache-manifest, then run the cache failure steps.