Apache啓用mod_expires模塊

 mod_expires能夠減小10%左右的重複請求,讓重複的用戶對指定的頁面請求結果都CACHE在本地,根本不向服務器發出請求。javascript

在使用以前,首先要確認一下」mod_expires」模組是否有啓用.若是是本身安裝Apache來架設網頁主機的話,這裏咱們能夠透過編輯Apache的」httpd.conf」設定檔來處理.搜尋一下,你可能會找到這麼一行:php

  1. #LoadModule expires_module modules/mod_expires.socss

複製代碼html

將該行前面的」#」字號刪除,而後將」httpd.conf」設定檔儲存後,從新啓動Apache來使這個更新生效.java

固然若是咱們是租用虛擬主機的話,」httpd.conf」設定檔咱們通常用戶是接觸不到的,而在網站根目錄裏寫個」.htaccess」設定檔, 我想在運用上相對是較靈活的.」mod_expires」的設定資料除了能夠寫在Apache的」httpd.conf」設定檔中,也能夠寫 在」.htaccess」設定檔裏.apache

咱們知道在使用瀏覽器瀏覽網頁時,瀏覽器會把網頁資料快取(Cache)下來儲存在本機端,用以加快下回瀏覽相同網頁時沒必要再從新由網站上下載,進 而有加速的效果.使用mod_expires模組來加速網頁瀏覽,這裏所謂的」加速」,實際上是利用」mod_expires」的功能,來設定網頁文件的過 期時間,加長網頁文件被瀏覽器快取(Cache)保存的時間.如此一來,只要網頁文件的過時時間未到,瀏覽器就會引用快取的資料,而不用花時間再去下載網 站上的資料.另外一方面帶給站長的好處是,能夠減小瀏覽者對網站的流量耗用(例若有些虛擬主機有限制網站可以使用的流量).瀏覽器

接下來咱們直接由範例中來學習吧.
範例一:緩存

  1. <IfModule mod_expires.c>服務器

  2.     ExpiresActive Onapp

  3.     ExpiresDefault 「access plus 10 days」

  4.     ExpiresByType text/css 「access plus 1 second」

  5. </IfModule>

複製代碼

範例二:

  1. <IfModule mod_expires.c>

  2. ExpiresActive On

  3. ExpiresDefault A86400

  4. ExpiresByType image/x-icon A2592000

  5. ExpiresByType application/x-javascript A2592000

  6. ExpiresByType text/css A2592000

  7. ExpiresByType image/gif A604800

  8. ExpiresByType image/png A604800

  9. ExpiresByType image/jpeg A604800

  10. ExpiresByType text/plain A604800

  11. ExpiresByType application/x-shockwave-flash A604800

  12. ExpiresByType video/x-flv A604800

  13. ExpiresByType application/pdf A604800

  14. ExpiresByType text/html A900

  15. </IfModule>

複製代碼

範例三:

  1. <IfModule mod_expires.c>

  2. ExpiresActive On

  3. ExpiresDefault A0

  4. # 1 年

  5. <FilesMatch 「\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$」>

  6. ExpiresDefault A9030400

  7. </FilesMatch>

  8. # 1 星期

  9. <FilesMatch 「\.(jpg|jpeg|png|gif|swf)$」>

  10. ExpiresDefault A604800

  11. </FilesMatch>

  12. # 3 小時

  13. <FilesMatch 「\.(txt|xml|js|css)$」>

  14. ExpiresDefault A10800″

  15. </FilesMatch>

  16. </IfModule>

複製代碼

使用<IfModule></IfModule>來包夾指令能夠避免在mod_expires模組沒有啓用的狀況下還要去 執行.若是mod_expires模組肯定已經啓用,那不寫<IfModule></IfModule>也沒關係.

ExpiresActive On是指啓用mod_expires功能,相對的Off就是關閉功能.

ExpiresDefault指令是設定預設的過時時間.
從範例一和範例二中,各位能夠看到關於時間設定的方式有分兩種,一個是文字敘述型,一個是代碼加上秒數型.
文字敘述型:
「access plus 10 days」意指瀏覽時起算10天.依照Apache官方說明文件,過時起算時間有三種,分別是access、now 以及modification.其中access與now意義相同,而modification指的是網頁文件的」最後編輯時間」.因此若是要以檔桉的最 後編輯時間起算,能夠寫成這樣,」modification plus 10 days」.而時間的指定也很簡單,就是英文單字(years、months、weeks、days、hours、minutes、seconds).例 如,能夠寫成這樣,」access plus 1 month 15 days 2 hours」.

代碼加上秒數型: 
A86400意指瀏覽時起算1天.格式是代碼加上秒數.代碼有分兩種,」A」等同」access」,意指瀏覽時起算過時時間.使用代碼」A」比較適合應用 在不常變更的網頁文件類型,例如圖片.另一種代碼是」M」,其意義等同於」modification」,指的是網頁文件的」最後編輯時間」.使用代 碼」M」比較適合應用在常常變更的網頁文件類型,例如HTML頁面這類常常更新內容的資料.秒數資料我在文後附上參考資料,能夠供各位快速參考.

ExpiresByType指令是依照不一樣的網頁文件型態來作過時時間設定.
例如,ExpiresByType text/css A2592000,意指網站上的CSS風格檔3天后過時; ExpiresByType image/gif A604800,意指網站上的Gif圖檔在7天后過時.

範例三裏,使用了<FilesMatch></FilesMatch>來包夾各型態的網頁文件,而不是使用」ExpiresByType」指令,這也是一種用法.


利用Apache模塊mod_expires和mod_headers實現文件緩存,Add an Expires header|爲文件頭指定Expires


利用Apache模塊mod_expires和mod_headers實現文件緩存,Add an Expires header|爲文件頭指定Expires

你們在使用YSlow的網站速度優化,常會看到Add an Expires header這一條分值很低,搜索不少但還不知道怎麼該。下面就是答案。

Add an Expires header / 爲文件頭指定Expires
給靜態文件加上過時標誌。讓瀏覽器或者CDN服務器緩存起來,加速圖片和其餘靜態文件的加載。
Expires是瀏覽器Cache機制的一部分,瀏覽器的緩存取決於Header中的四個值: Cache-Control, Expires, Last-Modified, ETag。
優化這個選項,所要作的是對站內全部的文件有針對性的設置Cache-Control和Expires.

咱們要實現加上過時標誌能夠利用apache模塊mod_expiresmod_headers

經過配置.htaccess文件, 能夠輕易地按文件類別設置緩存時間。對提升網站速度有必定幫助。

1. 利用mod_expires
在.htaccess中添加以下語句:
<ifmodule mod_expires.c>
expiresactive on

#默認全部文件緩存時間設置爲300秒
expiresdefault a300

#html,plain-text緩存300秒
expiresbytype text/html a300
expiresbytype text/plain a300

#css, javascript緩存一個小時
expiresbytype text/css a3600
expiresbytype application/x-javascript a3600

#圖標文件緩存30天
expiresbytype image/x-icon a2592000

#image類緩存一個星期
expiresbytype image/jpeg a604800
expiresbytype image/gif a604800
expiresbytype image/png a604800

#其它文件緩存一個星期
expiresbytype application/x-shockwave-flash a604800
expiresbytype video/x-flv a604800
expiresbytype application/pdf a604800

</ifmodule>

但有一個問題是咱們經常使用的Apache主機常常不怎麼支持mod_expires,沒有關係,咱們用另外一個模塊使用mod_headers。

一樣在.htaccess文件中添加以下內容能夠實現緩存:

<ifmodule mod_headers.c>

# htm,html,txt類的文件緩存一個小時
<filesmatch 「\.(html|htm|txt)$」>

header set cache-control 「max-age=3600″
</filesmatch>

# css, js, swf類的文件緩存一個星期
<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>

相關文章
相關標籤/搜索