2012-04-19 55 views
0

我已經在這幾天了,現在變得越來越沮喪。我在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中,我已經按預期工作了幾次,但我沒有更改代碼。我明確刪除了脫機緩存,重新啓動了服務器,重新請求索引視圖,並且它神奇地工作。

+0

您的瀏覽器可能仍然認爲您在線。在FF中,通過單擊文件 - >脫機工作嘗試強制脫機。 還可以使用緩存api來檢查您的數據是否真正下載並可脫機使用。不要忘記在清單中包含.css和.js文件。 – ZippyV 2012-04-19 08:18:50

+1

@ZippyV無論瀏覽器是否認爲它在線,與應用程序緩存並不相關,重要的是[它是否可以聯繫服務器](http://lists.whatwg.org/htdig.cgi/ help-whatwg.org/2012-February/000980.html) – robertc 2012-04-19 10:01:47

+0

在做了一些額外的研發之後,這裏是我發現的。當我停止IIS並請求Car/Edit時,Car/EditOffline將從appCache中檢索並顯示給用戶。一旦頁面被提供,appCache檢查事件觸發器,隨後是過時的事件。我相信,由於瀏覽器無法檢索清單文件的狀態,因此會觸發過時事件,這反過來標記現有清單文件不再需要,應該刪除。因此,隨後對存儲在appCache中的資源的請求返回404結果。 – 2012-04-26 17:04:53

回答

1

它看起來像你最初的請求是http://localhost/Sandbox/Car,是你的網址然後得到404?清單按URL工作,但對默認頁面或任何其他服務器配置一無所知。就應用程序緩存而言,http://localhost/Sandbox/Car是與http://localhost/Sandbox/Car/Index不同的頁面。涉及的視圖在很大程度上與緩存無關,而不是包含對其中的清單文件的引用。

+0

是的,localhost/Sandbox/Car是我得到404的URL。在做了更多的研發之後,我發現如果我通過地址欄請求URL,我會得到404。如果我通過單擊由@ Html.ActionLink呈現的鏈接請求URL,則脫機資源將得到服務。是什麼賦予了? – 2012-04-26 19:31:17

+0

@ J.M。 「@ Html.ActionLink」呈現的網址是什麼? – robertc 2012-04-26 22:52:36

+0

/Sandbox/Car是呈現的網址。當我通過地址欄請求網址時,我再次混淆了它,並且它神奇地工作。我不知道我做了什麼,我確信除了添加@ Html.ActionLink之外,沒有任何代碼更改。無論如何,我最終將它運用起來。 – 2012-04-27 21:01:04

相關問題