2012-01-04 136 views
0

我遇到了一個我正在處理的Web應用程序的問題,並且我發佈了一個問題here,這個問題有點含糊,可能不是很有幫助。我決定創建一個非常基本的網站,並將其構建爲主應用程序,並查看它的中斷位置。我已經做到了這一點,並立即與離線緩存卡住了。HTML5離線奇怪行爲

這是在IIS 7.5中本地託管的基本3頁靜態網站。我創建了文件夾c:\ inetpub \ wwwroot \ ManifestTesting,將它作爲Web應用程序添加到IIS中,併爲.appcache擴展添加了新的MIME類型的text/cache-manifest。我還使用FireFox 9.0進行測試,因爲它具有脫機模式功能。

我在3個HTML頁面,並將它們添加到該文件夾​​ManifestTesting:

  • 的index.htm - 此頁面包含2個鏈接page1.htm和page2.htm
  • page1.htm - 只包含一個頭,說第1頁
  • page2.htm - 只包含一個標頭,所以現在如果我瀏覽到http://localhost/manifesttesting如果得到的索引頁,並可以導航到2頁說2頁

然後我創建了一個名爲manifest.appcache文件,並將其添加到該文件夾​​ManifestTesting:

CACHE MANIFEST 

CACHE: 
index.htm 
page1.htm 
page2.htm 

,並添加了參考的index.htm清單文件:

<html manifest="manifest.appcache"> 

所以如果我清除所有歷史記錄並瀏覽到index.htm,FireFox會詢問我是否允許網站存儲數據以供離線使用。我點擊允許,將瀏覽器切換到離線模式,然後嘗試導航到page1.htm,它工作正常!所以目前爲止都是很好的。

現在的位,我不明白。然後,我在ManifestTesting文件夾中創建了一個名爲'pages'的新文件夾,並將page1和page2移入其中。我更新了索引中的鏈接以引用新的位置,如果我瀏覽沒有清單引用的網站,它就像以前一樣正常工作。然後我再引用清單文件索引並更新該清單是這樣的:

CACHE MANIFEST 

CACHE: 
index.htm 
pages/page1.htm 
pages/page2.htm 

我然後清除歷史記錄,刷新,Firefox的要求,允許網站保存離線數據,啓用離線模式,然後嘗試導航到第1頁 - 它不起作用! FireFox告訴我它處於離線模式,無法瀏覽網頁!

我在做什麼錯?

回答

1

可能有幾種可能性在這裏:

1)你可以嘗試把在 「/pages/page1.htm」,而不是 「頁/ page1.htm」

2)也確保所有的鏈接和你在瀏覽器上輸入的內容都是區分大小寫的。 ('pages/page1.htm'與'pages/Page1.htm'不一樣)

3)你提到你清除了歷史記錄......如果你這樣做是爲了測試,你需要要清除物理文件緩存,而不僅僅是歷史記錄。

4)這可能是最有可能的原因:當你更改了manifest文件,並刷新瀏覽器,這是發生了什麼(假設你是在線)

  • 瀏覽器首次加載回所有在緩存
  • 那麼瀏覽器在網上查詢您的清單文件中的文件
  • 它檢測到清單文件發生了變化,它就會繼續下載新的文件
  • 然而,在這個時候,你仍然會看着你的'舊文件',因爲使用瀏覽器已加載舊文件在上網前下載'新文件'
  • 如果在這一點上,如果你再次(第二次)刷新 ,你應該得到'新文件'(你會能夠在離線後進入第1頁和第2頁

這是目前的標準行爲。有些人把一些事件處理程序提示用戶再次刷新(在第一次刷新之後)