我已經在這幾天了,現在變得越來越沮喪。我在Chrome,FF中獲得了不一致的脫機功能結果,而且我剛開始使用Safari。HTML 5脫機功能是否適用於瀏覽器?
我正在開發使用的ASP.NET MVC 3中的沙盒應用程序下面是我的應用程序的結構:
- 控制器/ CarController
- 查看/汽車/編輯
- 查看/汽車/ EditOffline
- 查看/汽車/索引
在對3次,指數已經manifest屬性定義的唯一。索引是最初請求的視圖。以下是我的清單內容:
CACHE MANIFEST
FALLBACK:
Car/Edit Car/EditOffline
#Version 1
在索引的第一次請求時,瀏覽器在應用程序緩存中創建3個條目。它們是:
- 本地主機/沙箱/汽車,類型=主
- 本地主機/沙箱/汽車/ EditOffline,類型=後備
- 本地主機/沙箱/離線,類型=清單
我一直在模擬所有3個瀏覽器的脫機行爲的方式是通過明確地停止IIS。之後,索引已被請求。我關閉IIS並向Edit動作發出請求。結果是EditOffline得到了服務。現在,當我再次查看Index時,出現404錯誤,但是爲什麼?我以爲瀏覽器會提供該頁面的緩存版本?當我重新設置編輯視圖時(仍處於離線狀態)時,我也遇到了404錯誤,但是爲什麼?瀏覽器先前提供了EditOffline視圖,爲什麼我現在得到404?在FF中,我已經按預期工作了幾次,但我沒有更改代碼。我明確刪除了脫機緩存,重新啓動了服務器,重新請求索引視圖,並且它神奇地工作。
您的瀏覽器可能仍然認爲您在線。在FF中,通過單擊文件 - >脫機工作嘗試強制脫機。 還可以使用緩存api來檢查您的數據是否真正下載並可脫機使用。不要忘記在清單中包含.css和.js文件。 – ZippyV 2012-04-19 08:18:50
@ZippyV無論瀏覽器是否認爲它在線,與應用程序緩存並不相關,重要的是[它是否可以聯繫服務器](http://lists.whatwg.org/htdig.cgi/ help-whatwg.org/2012-February/000980.html) – robertc 2012-04-19 10:01:47
在做了一些額外的研發之後,這裏是我發現的。當我停止IIS並請求Car/Edit時,Car/EditOffline將從appCache中檢索並顯示給用戶。一旦頁面被提供,appCache檢查事件觸發器,隨後是過時的事件。我相信,由於瀏覽器無法檢索清單文件的狀態,因此會觸發過時事件,這反過來標記現有清單文件不再需要,應該刪除。因此,隨後對存儲在appCache中的資源的請求返回404結果。 – 2012-04-26 17:04:53