程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> Apache如何啟用mod

Apache如何啟用mod

編輯:PHP基礎知識
 

mod_expires可以減少10%左右的重復請求,讓重復的用戶對指定的頁面請求結果都CACHE在本地,根本不向服務器發出請求。

在使用之前,首先要確認一下”mod_expires”模組是否有啟用.如果是自己安裝Apache來架設網頁主機的話,這裡我們可以透過編輯Apache的”httpd.conf”設定檔來處理.搜尋一下,你可能會找到這麼一行:

  1. #LoadModule expires_module modules/mod_expires.so

復制代碼

將該行前面的”#”字號刪除,然後將”httpd.conf”設定檔儲存後,重新啟動Apache來使這個更新生效.

當然如果我們是租用虛擬主機的話,”httpd.conf”設定檔我們一般用戶是接觸不到的,而在網站根目錄裡寫個”.htaccess”設定檔, 我想在運用上相對是較靈活的.”mod_expires”的設定資料除了可以寫在Apache的”httpd.conf”設定檔中,也可以寫 在”.htaccess”設定檔裡.

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

接下來我們直接由范例中來學習吧.
范例一:

  1. < IfModule mod_expires.c>
  2.     ExpiresActive On
  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_expires和mod_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>  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved