2010-12-21 164 views
1

我試圖強制瀏覽器緩存不同的資源,如CSS,圖像,js等永遠。瀏覽器從不嘗試刷新圖像/ css是很重要的,因爲在頁面上可能會有成千上萬的小圖像,並且當瀏覽器嘗試刷新它時會轟炸服務器,並且不必要地將頁面保持爲刷新模式。 images/css永遠不會改變請求路徑的變化。如何強制瀏覽器在刷新時不重新請求資源?

現在我有路徑圖像/ CSS設置爲一個腳本通過URL:

"http://example.com/img/get.php?n=someimage.jpg&v=7" 

和腳本在發送資源之前發送這些標題:

header("Cache-Control: public"); 
header("Expires: Tue, 19 Jan 2037 00:00:00 GMT"); 
header("Last-Modified: Sat, 01 Jan 2000 00:00:00 GMT"); 

但是,如果刷新按鈕被擊中,則Chrome和Firefox都會重新請求圖像/ css。 Chrome瀏覽器似乎也發送請求,如果您點擊地址欄上的Enter,不像Firefox。

我的問題是爲什麼他們這樣做,因爲過期頭文件應該使其不再執行請求,直到2037年,即使用戶按下刷新。我做錯了什麼,或者錯過了什麼?

+1

我把刷新按鈕稱爲「刷新我的緩存」。如果瀏覽器沒有這樣做,我會生氣! – Stephen 2010-12-21 23:12:07

回答

4

你不行。正如您已經注意到的,一些瀏覽器將「刷新」定義爲「刷新並刷新緩存」。

服務器只能提供關於緩存的Web瀏覽器的指導,他們不能執行它。

+0

正確。手動刷新將覆蓋服務器指定的緩存指令。 – EricLaw 2010-12-22 19:04:05