2012-02-22 58 views
0

我對緩存的工作方式知之甚少,或者對託管服務器的nginx有很大的控制。但是,我確實有一個需要更改的現場網站,因此您的建議將非常感謝。瀏覽器會使用不同的ETag緩存頁面嗎?

目前,我有以下三個文件:

index.html 
my.js 
my.css 

所有文件都被服務(在我的瀏覽器)具有以下標題:

Date:Wed, 22 Feb 2012 23:17:49 GMT 
ETag:"b2c84d1-7551-4b995b0c89c0" 
Last-Modified:Wed, 22 Feb 2012 23:14:34 GMT 
Server:nginx 

有沒有任何其他的cache相關的標題。鑑於上述情況,如果我簡單地用新版本替換文件,我是否可以假設用戶的瀏覽器將不知道使用緩存版本? (我假設如果我替換文件,ETag將會改變。)

我想避免的情況是用戶的瀏覽器下載新版本index.html但繼續引用緩存版本my.js,因爲這很可能會破壞事物。我還想知道,如果我可以依靠用戶查看該網站的較新版本,或者某些用戶將繼續看到緩存版本。

感謝您的幫助。

回答

0

瀏覽器將發送If-Modified-Since:和(如果您有最新的瀏覽器)的If-None-Match:頭,第一個指的的Last-Modified:頭,包含ETag後者。如果修改日期比Last-Modified標題更新,服務器將發送新文件。 ETag如何改變將取決於你的服務器,但在大多數情況下,這將是對文件內容的散列。

所以,只要確保文件內容更改和修改日期是最新的(例如通過touch /var/www/your-file.js)。

+0

謝謝!我沒有看到我的瀏覽器(Chrome)發送了您提到的任一If- *標頭,至少在我查看Developer Tools時看不到它們附加到請求。但我會接受你的說法,即更改內容並觸摸該文件,這意味着不需要緩存。感謝您的幫助。 – Richard 2012-02-23 01:27:23