2011-05-26 398 views
5

我沒有完全掌握的一件事是,如果緩存清單在所有列出的文件聯機時也充當預取。HTML5緩存清單和預取

例如,可以說我今天要參觀:

/page1.html 

每一個在我的網站上的網頁都會有相同的聲明:

<html manifest="/cache.manifest"> 

在緩存清單文件,我有:

CACHE MANIFEST 
/page2.html 
/page3.html 
/page4.html 

那麼會發生什麼事是我訪問/page1.html第一,當我在線上我的瀏覽器就會知道緩存p 2-4歲也。當我斷開連接並訪問第2-4頁時,所有內容都會正常加載,因爲它已被緩存。

問題:如果我訪問/page1.html,我還在網上連接,並參觀了/page2.html,將我的瀏覽器仍然要求了/page2.html,還是會不會再拍請求服務器並使用它從/cache.manifest文件緩存的內容?基本上就像firefox使用的預取鏈接一樣?

回答

1

那麼,spec說「所有文件」,沒有任何例外的HTML文件,所以我認爲它適用於HTML文件就像任何其他文件,它從緩存中取得,而不是服務器。但是,我沒有做任何測試來證實這一點。我會做到以下幾點:

創建以下緩存清單文件:

CACHE MANIFEST 
/page1.html 
/page2.html 
/page3.html 
/page4.html 

包括在四個緩存清單文件。然後:

  1. 訪問page1.html
  2. 編輯page2.html,使其不同於你page1.html
  3. 訪問page2.html
  4. 訪問之前看看你是哪個版本。

請確保您在所有瀏覽器上試用。我會很樂意看到你的結果。

0

我認爲它從清單文件,即使你在線:)。你不能通過上傳文件然後導航到頁面來試試嗎?

1

當我們使用緩存清單時,它會在每次加載頁面時從緩存中獲取文件。 有一個解決方案。

您必須更改清單文件中的版本號,如果您完成對HTML文件的任何更改。以便您的清單從服務器中獲取最新版本的HTML並將其存儲在緩存中。

CACHE MANIFEST 

#v01 
/page1.html 
/page2.html 
/page3.html 
/page4.html 

您可以只遞增的V01到02,03 ......等等,這將確保您的緩存將有最新版本的HTML頁面