2010-10-08 28 views
3
[i]ExpiresActive On 
ExpiresByType image/gif A2592000 
ExpiresByType image/jpeg A2592000 
ExpiresByType image/png A2592000 
BrowserMatch "MSIE" brokenvary=1 
BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1 
BrowserMatch "Opera" !brokenvary 
SetEnvIf brokenvary 1 force-no-vary[/i] 

最近在樣本.htaccess中看到了此代碼。ExpiresActive On .htaccess解釋

大概ExpiresByType設置圖像到期時間 - 是否與訪客瀏覽器緩存相關? A2592000翻譯成什麼?

「破壞者= 1」意味着什麼?我收集它正在尋找一個UserAgent,但然後呢?

謝謝!

回答

10

想必ExpiresByType設置在圖像到期時間 - 是與此相關的訪問者瀏覽器緩存?

是。 mod_expires允許基於類型輕鬆設置到期規則。

但是到期時間僅指定某個響應的新鮮度時間。這並不一定意味着response is cacheable。但in general, any successful response is cacheable unless there are restrictions

除非特別由高速緩存控制限制(部分14.9)指令,緩存系統總是可以存儲一個成功的響應(見13.8)作爲緩存條目,也可以返回它沒有驗證,如果它是新鮮,並且可以在成功確認後返回。

所以,除非你指定不(使用即no-store)存放在所有的響應,響應可以通過公共高速緩存(共享緩存)和私有的高速緩存(本地高速緩存)存儲。


又是什麼A2592000翻譯成?

響應的新鮮時間可以使用絕對時間值(例如「2010-10-09」)或相對時間值(例如「明天」)來表示。日期格式A2592000使用後一個時間值,因爲A表示訪問時間2592000是添加的秒數。所以A2592000的意思是「2592000秒,距離訪問時間爲」。


又是什麼的 「brokenvary = 1」 意味着什麼呢?我收集它正在尋找一個UserAgent,但然後呢?

的Apache有一些special purpose environment variables其中force-no-vary是其中之一:

這導致任何Vary字段以從響應報頭去除被髮送回給客戶機之前它。有些客戶不能正確解釋這個字段;設置這個變量可以解決這個問題。設置這個變量也意味着force-response-1.0

現在Vary header field用於指定一個list of header field names the server used to select the response among multiple representations

服務器應該使用Vary標頭欄位,通知什麼請求頭字段使用一個緩存的多個表示中選擇一個高速緩存受服務器驅動協商的響應。

因此,如果您使用了內容協商和要求通用網址就像/document.html請求並且有資源的多種表示(例如,在英語和德語)和你的服務器選擇德國的變體接受語言陳述值de,服務器將包括一個變化字段包含Accept-Language讓緩存知道選擇是基於值接受語言

但是一些用戶代理沒有得到這個權利。在這種情況下,不應發送可通過設置特殊用途環境變量force-no-vary來完成的頭字段。

+0

感謝您提供非常詳細的回覆+鏈接 – Ross 2010-10-08 12:50:06

2

ExpiresByType是mod_expires模塊的Apache指令,用於生成'Expires'和'Cache-control'http響應頭。這些標頭告訴瀏覽器它可以緩存資源一段特定的時間。

從documententation(http://httpd.apache.org/docs/2.0/mod/mod_expires.html):

'A' means the client's access time should be used. 

在同一頁面的一個例子或許可以解釋的事情:

# enable expirations 
ExpiresActive On 
# expire GIF images after a month in the client's cache 
ExpiresByType image/gif A2592000 
# HTML documents are good for a week from the 
# time they were changed 
ExpiresByType text/html M604800 
+0

也謝謝你! – Ross 2010-10-08 12:50:22