2013-03-01 75 views
4

當設置prefer-online設置我希望瀏覽器在每次刷新瀏覽器時都請求頁面,但情況並非如此。緩存清單「prefer-online」設置問題

這裏是我的清單:

CACHE MANIFEST 

SETTINGS: 
prefer-online 

NETWORK: 
* 

然而,當我刷新瀏覽器,它只要求清單到服務器。它只在我更新清單時請求頁面...

並且頁面上沒有設置標題(過期或最大年齡)。

(對鉻& Firefox的測試)

注意:當更新清單,瀏覽器重新下載資產,但仍顯示舊版本...這是隻在瀏覽器使用的下一個負荷新資產。爲什麼?

+0

同樣在這裏的問題。如果可能的話,主實體應該自動重新下載,但至少在Chrome中似乎不起作用。 – kuncajs 2013-05-09 23:06:48

回答

0

我沒有看到AppCache清單的用途,因爲您想繞過緩存並只使用網絡。請記住,無論AppCache清單如何,常規高速緩存可能仍然適用,因此請檢查ExpiresLast-Modified及類似標頭。

至於你的問題:

注意:當更新清單,瀏覽器重新下載資產,但仍顯示舊版本...這是隻在瀏覽器使用的下一個負荷新資產。爲什麼?

這是因爲用戶代理將立即使用資產的最新緩存版本,然後開始檢查清單中列出的鏈接資源以進行更新。當用戶代理檢測到清單已更改,並且因此必須檢查更新時,它將觸發checking事件。

當更新檢查過程完成時(並且可能需要很長時間,如果您擁有大量資源),它將觸發一個updateready事件。在之後,只有的資源被取出(這就是爲什麼通常建議使用window.applicationCache.swapCache()來告訴瀏覽器將舊緩存替換爲下一頁加載的新緩存,或者只是重新加載頁面並完成用它)。

你會發現關於這些話題在這裏更詳細的解釋:http://www.html5rocks.com/en/tutorials/appcache/beginner/

+0

關於「這是因爲用戶代理將立即使用最新的緩存版本的資產」:使用「prefer-online」設置標誌時,這不應該是真實的。 – stolsvik 2014-04-29 13:14:56