Apache启用mod_expires模块
在使用之前,首先要確認(rèn)一下”mod_expires”模組是否有啟用.如果是自己安裝Apache來架設(shè)網(wǎng)頁主機(jī)的話,這里我們可以透過編輯Apache的”httpd.conf”設(shè)定檔來處理.搜尋一下,你可能會(huì)找到這么一行:
- #LoadModule expires_module modules/mod_expires.so
復(fù)制代碼
將該行前面的”#”字號(hào)刪除,然后將”httpd.conf”設(shè)定檔儲(chǔ)存后,重新啟動(dòng)Apache來使這個(gè)更新生效.
當(dāng)然如果我們是租用虛擬主機(jī)的話,”httpd.conf”設(shè)定檔我們一般用戶是接觸不到的,而在網(wǎng)站根目錄里寫個(gè)”.htaccess”設(shè)定檔, 我想在運(yùn)用上相對(duì)是較靈活的.”mod_expires”的設(shè)定資料除了可以寫在Apache的”httpd.conf”設(shè)定檔中,也可以寫 在”.htaccess”設(shè)定檔里.
我們知道在使用瀏覽器瀏覽網(wǎng)頁時(shí),瀏覽器會(huì)把網(wǎng)頁資料快取(Cache)下來儲(chǔ)存在本機(jī)端,用以加快下回瀏覽相同網(wǎng)頁時(shí)不必再重新由網(wǎng)站上下載,進(jìn) 而有加速的效果.使用mod_expires模組來加速網(wǎng)頁瀏覽,這里所謂的”加速”,其實(shí)是利用”mod_expires”的功能,來設(shè)定網(wǎng)頁文件的過 期時(shí)間,加長網(wǎng)頁文件被瀏覽器快取(Cache)保存的時(shí)間.如此一來,只要網(wǎng)頁文件的過期時(shí)間未到,瀏覽器就會(huì)引用快取的資料,而不用花時(shí)間再去下載網(wǎng) 站上的資料.另一方面帶給站長的好處是,可以減少瀏覽者對(duì)網(wǎng)站的流量耗用(例如有些虛擬主機(jī)有限制網(wǎng)站可使用的流量).
接下來我們直接由范例中來學(xué)習(xí)吧.
范例一:
- <IfModule mod_expires.c>
- ? ? ExpiresActive On
- ? ? ExpiresDefault “access plus 10 days”
- ? ? ExpiresByType text/css “access plus 1 second”
- </IfModule>
復(fù)制代碼
范例二:
- <IfModule mod_expires.c>
- ExpiresActive On
- ExpiresDefault A86400
- ExpiresByType image/x-icon A2592000
- ExpiresByType application/x-javascript A2592000
- ExpiresByType text/css A2592000
- ExpiresByType image/gif A604800
- ExpiresByType image/png A604800
- ExpiresByType image/jpeg A604800
- ExpiresByType text/plain A604800
- ExpiresByType application/x-shockwave-flash A604800
- ExpiresByType video/x-flv A604800
- ExpiresByType application/pdf A604800
- ExpiresByType text/html A900
- </IfModule>
復(fù)制代碼
范例三:
- <IfModule mod_expires.c>
- ExpiresActive On
- ExpiresDefault A0
- # 1 年
- <FilesMatch “\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$”>
- ExpiresDefault A9030400
- </FilesMatch>
- # 1 星期
- <FilesMatch “\.(jpg|jpeg|png|gif|swf)$”>
- ExpiresDefault A604800
- </FilesMatch>
- # 3 小時(shí)
- <FilesMatch “\.(txt|xml|js|css)$”>
- ExpiresDefault A10800″
- </FilesMatch>
- </IfModule>
復(fù)制代碼
使用<IfModule></IfModule>來包夾指令可以避免在mod_expires模組沒有啟用的情況下還要去 執(zhí)行.如果mod_expires模組確定已經(jīng)啟用,那不寫<IfModule></IfModule>也沒關(guān)係.
ExpiresActive On是指啟用mod_expires功能,相對(duì)的Off就是關(guān)閉功能.
ExpiresDefault指令是設(shè)定預(yù)設(shè)的過期時(shí)間.
從范例一和范例二中,各位可以看到關(guān)于時(shí)間設(shè)定的方式有分兩種,一個(gè)是文字?jǐn)⑹鲂?一個(gè)是代碼加上秒數(shù)型.
文字?jǐn)⑹鲂?
“access plus 10 days”意指瀏覽時(shí)起算10天.依照Apache官方說明文件,過期起算時(shí)間有三種,分別是access、now 以及modification.其中access與now意義相同,而modification指的是網(wǎng)頁文件的”最后編輯時(shí)間”.所以如果要以檔桉的最 后編輯時(shí)間起算,可以寫成這樣,”modification plus 10 days”.而時(shí)間的指定也很簡單,就是英文單字(years、months、weeks、days、hours、minutes、seconds).例 如,可以寫成這樣,”access plus 1 month 15 days 2 hours”.
代碼加上秒數(shù)型:?
A86400意指瀏覽時(shí)起算1天.格式是代碼加上秒數(shù).代碼有分兩種,”A”等同”access”,意指瀏覽時(shí)起算過期時(shí)間.使用代碼”A”比較適合應(yīng)用 在不常變動(dòng)的網(wǎng)頁文件類型,例如圖片.另外一種代碼是”M”,其意義等同于”modification”,指的是網(wǎng)頁文件的”最后編輯時(shí)間”.使用代 碼”M”比較適合應(yīng)用在經(jīng)常變動(dòng)的網(wǎng)頁文件類型,例如HTML頁面這類經(jīng)常更新內(nèi)容的資料.秒數(shù)資料我在文后附上參考資料,可以供各位快速參考.
ExpiresByType指令是依照不同的網(wǎng)頁文件型態(tài)來做過期時(shí)間設(shè)定.
例如,ExpiresByType text/css A2592000,意指網(wǎng)站上的CSS風(fēng)格檔3天后過期; ExpiresByType image/gif A604800,意指網(wǎng)站上的Gif圖檔在7天后過期.
范例三里,使用了<FilesMatch></FilesMatch>來包夾各型態(tài)的網(wǎng)頁文件,而不是使用”ExpiresByType”指令,這也是一種用法.
利用Apache模塊mod_expires和mod_headers實(shí)現(xiàn)文件緩存,Add an Expires header|為文件頭指定Expires
利用Apache模塊mod_expires和mod_headers實(shí)現(xiàn)文件緩存,Add an?Expires?header|為文件頭指定Expires
大家在使用YSlow的網(wǎng)站速度優(yōu)化,常會(huì)看到Add an?Expires header這一條分值很低,搜索很多但還不知道怎么該。下面就是答案。
Add an Expires header / 為文件頭指定Expires
給靜態(tài)文件加上過期標(biāo)志。讓瀏覽器或者CDN服務(wù)器緩存起來,加速圖片和其他靜態(tài)文件的加載。
Expires是瀏覽器Cache機(jī)制的一部分,瀏覽器的緩存取決于Header中的四個(gè)值: Cache-Control, Expires, Last-Modified, ETag。
優(yōu)化這個(gè)選項(xiàng),所要做的是對(duì)站內(nèi)所有的文件有針對(duì)性的設(shè)置Cache-Control和Expires.
我們要實(shí)現(xiàn)加上過期標(biāo)志可以利用apache模塊mod_expires和mod_headers。
通過配置.htaccess文件, 可以輕易地按文件類別設(shè)置緩存時(shí)間。對(duì)提高網(wǎng)站速度有一定幫助。
1. 利用mod_expires
在.htaccess中添加如下語句:
<ifmodule mod_expires.c>
expiresactive on
#默認(rèn)所有文件緩存時(shí)間設(shè)置為300秒
expiresdefault a300
#html,plain-text緩存300秒
expiresbytype text/html a300
expiresbytype text/plain a300
#css, javascript緩存一個(gè)小時(shí)
expiresbytype text/css a3600
expiresbytype application/x-javascript a3600
#圖標(biāo)文件緩存30天
expiresbytype image/x-icon a2592000
#image類緩存一個(gè)星期
expiresbytype image/jpeg a604800
expiresbytype image/gif a604800
expiresbytype image/png a604800
#其它文件緩存一個(gè)星期
expiresbytype application/x-shockwave-flash a604800
expiresbytype video/x-flv a604800
expiresbytype application/pdf a604800
</ifmodule>
但有一個(gè)問題是我們常用的Apache主機(jī)經(jīng)常不怎么支持mod_expires,沒有關(guān)系,我們用另一個(gè)模塊使用mod_headers。
同樣在.htaccess文件中添加如下內(nèi)容可以實(shí)現(xiàn)緩存:
<ifmodule mod_headers.c>
# htm,html,txt類的文件緩存一個(gè)小時(shí)
<filesmatch “\.(html|htm|txt)$”>
header set cache-control “max-age=3600″
</filesmatch>
# css, js, swf類的文件緩存一個(gè)星期
<filesmatch “\.(css|js|swf)$”>
header set cache-control “max-age=604800″
</filesmatch>
# jpg,gif,jpeg,png,ico,flv,pdf等文件緩存一年
<filesmatch “\.(ico|gif|jpg|jpeg|png|flv|pdf)$”>
header set cache-control “max-age=29030400″
</filesmatch>
</ifmodule>
以下為樣本代碼:
<FilesMatch “\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$”>Header set Cache-Control “max-age=604800, public”
</FilesMatch>
<FilesMatch “\.(xml|txt)$”>
Header set Cache-Control “max-age=18000, public, must-revalidate”
</FilesMatch>
<FilesMatch “\.(html|htm|php)$”>
Header set Cache-Control “max-age=3600, must-revalidate”
</FilesMatch>
總結(jié)
以上是生活随笔為你收集整理的Apache启用mod_expires模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 花生焖猪脚怎样做才好吃?
- 下一篇: 重新来过你会不会爱我是什么歌呢?