2010-11-21 62 views
0

如果在.htaccess關於HTTP頭緩存的問題時,到期

<FilesMatch "\.(gif|png|jpg|jpeg|js|css|swf|ico)$"> 
    ExpiresActive On 
    ExpiresDefault "access plus 1 years" 
</FilesMatch> 

頭在瀏覽器中:

Cache-Control:maxage=5184000 
Expires:Thu, 20 Jan 2011 10:18:51 GMT 

然後瀏覽器不緩存HTML代碼,不是嗎?

而谷歌建議發送過期1個月,爲什麼YouTube發送頭

Expires:Tue, 27 Apr 1971 19:44:06 EST 

回答

1

您提供與給定的瀏覽器大約多久你想爲緩存數據的任何信息的配置指令都沒有。關於緩存HTML的決定將取決於發送的任何指令,如果您的問題和瀏覽器設置不在配置範圍內,

我從來沒有看到谷歌推薦一個月後過期的內容。緩存到期應基於內容更改的頻率。 (由於YouTube數據頻繁更改非常,隨着新視頻和評論被添加,那麼「已經過期」對於許多YouTube頁面而言是明智的價值)。

+0

「將過期期限設置爲至少一個月,最好是將來一年,(我們傾向於超過緩存控制:max-age,因爲它受到更廣泛的支持。)不要將其設置爲將來會超過一年,因爲這違反了RFC準則。「谷歌推薦 – meotimdihia 2010-11-21 11:32:00

+0

我不記得,但許多工具推薦> 1月>「<。我不知道如何 – meotimdihia 2010-11-21 11:37:43

+1

@meotimdihia:像樣式表,圖像或腳本的補充媒體並沒有經常改變,在大多數情況下,他們被創建一次,並沒有改變這就是爲什麼有些人建議設置這些文件永不過期(將來使用超過一年的過期日期),如果內容已更改,則使用不同的文件(有些使用版本信息或URL中的唯一標記使資源未知) – Gumbo 2010-11-21 11:40:59

1

不,您的配置不會影響HTML響應(假設您沒有使用列出的文件擴展名之一)。

除此之外,您的Cache-Control過期不說的響應是否可以被緩存或沒有什麼。他們只說如果存儲了響應,則存儲的響應只有在達到給定的到期日期之前纔是新鮮的;之後,存儲的響應被認爲是陳舊的。

但總的來說,every successful response may be cached unless there are restrictions

除非特別由緩存控制約束(section 14.9)指令,緩存系統總是可以存儲一個成功的響應(見section 13.8)作爲緩存條目,也可以返回它如果它是新鮮的,則不進行驗證,並且可以在驗證成功後返回。

服務器通常在過去使用過期日期來表示響應已過期。

+0

然後我應該設置過期的方式,當我的頁面視圖改變幾個小時一次 – meotimdihia 2010-11-21 11:26:43

+1

@meotimdihia:如果你知道你的頁面在固定的時間間隔內改變了,你可以設置頁面在當時過期(但這是不可能的指定mod_expires);或者將頁面設置爲從訪問開始一小時後過期。 – Gumbo 2010-11-21 11:35:00