Apache HTTP Server 版本2.2
說明 | 允許通過配置文件控制HTTP的"Expires "和"Cache-Control "頭內(nèi)容 |
---|---|
狀態(tài) | 擴(kuò)展(E) |
模塊名 | expires_module |
源文件 | mod_expires.c |
這個模塊控制服務(wù)器應(yīng)答時的Expires
頭內(nèi)容和Cache-Control
頭的max-age
指令。有效期(expiration date)可以設(shè)置為相對于源文件的最后修改時刻或者客戶端的訪問時刻。
這些HTTP頭向客戶端表明了文檔的有效性和持久性。如果有緩存,文檔就可以從緩存(除已經(jīng)過期)而不是從服務(wù)器讀取。接著,客戶端考察緩存中的副本,看看是否過期或者失效,以決定是否必須從服務(wù)器獲得更新。
要修改Cache-Control
頭中max-age
(參見RFC 2616 section 14.9)項(xiàng)之外的內(nèi)容,你還可以使用Header
指令。
ExpiresDefault
和ExpiresByType
指令同樣能夠用易懂的語法格式進(jìn)行定義:
ExpiresDefault "<base> [plus] {<num>
<type>}*"
ExpiresByType type/encoding "<base> [plus]
{<num> <type>}*"
其中<base>是下列之一:
access
now
(等價于'access
')modification
plus
關(guān)鍵字是可選的。<num>必須是整數(shù)[可以被atoi()
接受的],<type>是下列之一:
years
months
weeks
days
hours
minutes
seconds
例如,下列3個指令都表示文檔默認(rèn)的有效期是一個月:
ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"
有效期可以通過增加"<num> <type>"子句進(jìn)一步調(diào)整:
ExpiresByType text/html "access plus 1 month 15
days 2 hours"
ExpiresByType image/gif "modification plus 5 hours 3
minutes"
注意,如果你使用基于最后修改日期的設(shè)置,"Expires:"頭將不會被添加到那些并非來自于磁盤文件的內(nèi)容。這是因?yàn)檫@些內(nèi)容并不存在"最后修改時間"的屬性。
說明 | 啟用或禁用產(chǎn)生"Expires: "和"Cache-Control: "頭的功能 |
---|---|
語法 | ExpiresActive On|Off |
作用域 | server config, virtual host, directory, .htaccess |
覆蓋項(xiàng) | Indexes |
狀態(tài) | 擴(kuò)展(E) |
模塊 | mod_expires |
這個指令對其作用范圍內(nèi)的文檔啟用或禁用產(chǎn)生Expires
和Cache-Control
頭的功能。若設(shè)置為 Off
則不會為其作用范圍內(nèi)的任何文檔生成Expires
和Cache-Control
頭(除非被更低一層的規(guī)則改寫,比如.htaccess
文件)。若設(shè)置為 On
則會按照ExpiresByType
和ExpiresDefault
指令定義的標(biāo)準(zhǔn)為其作用范圍內(nèi)的文檔生成Expires
和Cache-Control
頭。
注意,這個指令并不保證Expires
或Cache-Control
頭一定會產(chǎn)生。如果定義的標(biāo)準(zhǔn)不規(guī)范,將不會產(chǎn)生這兩個頭,其效果是好像從未設(shè)置過這個指令一樣。
說明 | 由MIME類型配置的Expires 頭的值 |
---|---|
語法 | ExpiresByType MIME-type <code>seconds |
作用域 | server config, virtual host, directory, .htaccess |
覆蓋項(xiàng) | Indexes |
狀態(tài) | 擴(kuò)展(E) |
模塊 | mod_expires |
這個指令定義了為指定MIME類型的文檔(如text/html
)生成的Expires
頭的值和Cache-Control
頭的max-age
指令。seconds參數(shù)設(shè)置了添加到基準(zhǔn)時間以構(gòu)造有效期限的秒數(shù)。Cache-Control: max-age
的計算方法是從有效期減去當(dāng)前請求時間并轉(zhuǎn)化為秒數(shù)。
基準(zhǔn)時刻可以是源文件的最后修改時刻或者客戶端對源文件的訪問時刻,至于使用那一個則由<code>
指定。"M
"表示源文件的最后修改時刻,"A
"表示客戶端對源文件的訪問時刻。需要注意的是<code>
和seconds
之間沒有空格。
這兩種基準(zhǔn)的差別是很微妙的。如果使用"M
",所有當(dāng)前緩存中的文檔副本都將在同一時刻過期,這個可能對定期更新的URL(比如位于同一位置的每周通告)很有好處。如果使用"A
",則每個客戶端所得到的有效期是不一樣的,這個可能對那些幾乎不更新的圖片文件很有好處,特別是對于一組都引用了相同圖片的相關(guān)文檔。
# 啟用有效期控制
ExpiresActive On
# GIF有效期為1個月
ExpiresByType image/gif A2592000
# HTML文檔的有效期是最后修改時刻后的一星期
ExpiresByType text/html M604800
注意,這個指令只有在"ExpiresActive On
"的條件下才有效。它只對指定的MIME類型文檔改寫由ExpiresDefault
指令設(shè)置的有效期。
你也可以使用前面講述的alternate syntax指定有效期的計算方法。
說明 | 默認(rèn)有效期的計算方法 |
---|---|
語法 | ExpiresDefault <code>seconds |
作用域 | server config, virtual host, directory, .htaccess |
覆蓋項(xiàng) | Indexes |
狀態(tài) | 擴(kuò)展(E) |
模塊 | mod_expires |
該指令設(shè)置了其作用范圍內(nèi)的所有文檔的默認(rèn)有效期的計算方法,它可以被ExpiresByType
指令基于MIME類型被改寫。詳情請參見ExpiresByType
指令和那個alternate syntax的描述。