2011-01-27 20 views
0

您是否曾經在Chrome中使用過HTML緩存清單?我把一個小項目放在一起,顯然它不能很好地工作。它工作 - 是啊!Chrome中的顯示行爲不穩定

我創建了一個HTML頁面是這樣的:

<html manifest="cache.manifest"> 
<body> 
test - <img src="img1.jpg" width="100" height="100"> 
</body> 
</html> 

的清單是這樣的:在同一文件夾

CACHE MANIFEST 
#V1.0.22 
img1.jpg 

NETWORK: 
* 

而且2圖像:img1.jpg和img2.jpg。

當我交換圖像時,img2 => img1並更新清單的版本號,Chrome會下載新版本併發送更新就緒事件。當我重新加載頁面時,我在屏幕上顯示了我期望的第二張圖像。不過,如果我用原始圖像覆蓋img1,請更新清單中的版本號並重新加載,但Chrome會下載新的清單和新文件,但即使我一再刷新頁面,它也不會顯示正確的圖像! !如果我在那時清除緩存,我會得到正確的,這也是我期望的。我已經做了10次,它不起作用。這真讓我抓狂!看起來緩存替換不能正常工作!

如果您有關於此的線索,請告訴我。如果您願意,我甚至可以通過電子郵件向您發送我的文件。

乾杯。

+0

嗨,你有沒有得到這個地方?我遇到同樣的問題... – Journeyman 2011-05-03 17:13:29

回答

0

這很可能是cache.manifest緩存和普通瀏覽器緩存之間的不良交互。在使用cache.manifest時,瀏覽器仍然會遵循HTTP標頭中的正常瀏覽器緩存規則。所以會發生什麼是你提供一個圖像,它的標題說可以緩存幾個小時或幾天。它也被cache.manifest緩存。您更新服務器上的映像,並更改您的cache.manifest版本號。瀏覽器看到版本更改,清除cache.manifest,並再次請求圖像正常。但正常情況下,當請求圖像時,它首先檢查瀏覽器緩存,並將舊圖像從那裏拉出,而不是抓住服務器上的圖像。然後它將這個舊圖像粘貼回cache.manifest。因此,即使在瀏覽器緩存中圖像的緩存時間到期之後,圖像仍然不會更新,因爲它現在再次緩存在cache.manifest中。

簡而言之,cache.manifest和普通的瀏覽器緩存是非常糟糕的組合,所以你需要禁用瀏覽器緩存來存放你放入cache.manifest文件的任何東西。您可以通過更改緩存標頭在服務器上執行此操作。