Linux課程筆記 Apache常用模塊的介紹
1. mod_expires模塊介紹
1.1 mod_expires介紹
mod_expires允許通過apache配置文件控制HTTP的”Expires:”和”Cache-Control:”頭內容,這個模塊控制服務器應答時的Expires頭內容和Cache-Control頭的max-age指令。有效期可以設置為相對於源文件的最後修改時刻或客戶端的訪問時刻。
這些HTTP頭向客戶端表明了內容的有效性和持久性。如果客戶端本地有緩存,則內容就可以從緩存而不是從服務器讀取。然後客戶端會檢查緩存中的副本,看看是否過期或者是小,已決定是否從新從服務器獲得內容更新。
1.2模塊安裝方法
常規安裝方法:
(1) 編譯時可加入如下參數:
--enable-expires
(2) mod_expires DSO安裝方法
cd /root/tools/httpd-2.2.25/modules/metadata ç切到apache軟件目錄mod_expires程序下 #這個是解壓軟件包的路徑 /application/apache/bin/apxs -c -i -a mod_expires.c ç以dso的方式編譯到apache中 ll /application/apache2.2.25/modules/mod_expires.so ç檢查mod_expires |
(3) mod_expires DOS安裝出錯一例
註意:如果使用.config的方式編譯了mod_expires,又以DSO的方式安裝mod_expires模塊,檢查apache的雨法會出現如下報錯提示:(可以在httpd.conf文件中,註釋該模塊)
[[email protected] metadata]# /application/apache/bin/apachectl -t
httpd: Syntax error on line 54 of /application/apache2.2.25/conf/httpd.conf: module expires_module is built-in and can‘t be loaded
1.3 mod_expires在apache中的應用
[[email protected] extra]# cat httpd-vhosts.conf--- NameVirtualHost *:80 NameVirtualHost *:8091 NameVirtualHost *:8092
#<VirtualHost *:80> #DocumentRoot "/var/html/tmp" #</VirtualHost>
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/var/html/blog" ServerName blog.etiantian.org ServerAlias etiantian.org ErrorLog "/app/logs/blog-error_log" #CustomLog "/app/logs/blog-access_log" common CustomLog "|/usr/local/sbin/cronolog /app/logs/access_blog_%w.log" combined ExpiresActive on ExpiresDefault "access plus 12 month" ExpiresByType text/html "access plus 12 months" ExpiresByType text/css "access plus 12 months" ExpiresByType image/gif "access plus 12 months" ExpiresByType image/jpeg "access plus12 12 months" ExpiresByType image/jpg "access plus 12 months" ExpiresByType image/png "access plus 12 months" EXpiresByType application/x-shockwave-flash "access plus 12 months" EXpiresByType application/x-javascript "access plus 12 months" ExpiresByType video/x-flv "access plus 12 months" #這一串代碼可以加在httpd.conf文件的最後,也可以加在httpd-vhost.conf文件中虛擬主機配置的後面 <ifmodule mod_deflate.c> DeflateCompressionLevel 9 SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text/html text/plain text/xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE text/css </ifmodule>
</VirtualHost>
<VirtualHost *:8091> ServerAdmin [email protected] DocumentRoot "/var/html/bbs" ServerName bbs.etiantian.org ServerAlias etiantian.org ErrorLog "/app/logs/bbs-error_log" # CustomLog "/app/logs/bbs-access_log" common CustomLog "|/usr/local/sbin/cronolog /app/logs/access_bbs_%w.log" combined </VirtualHost> |
使用curl -I URL的方式查看該文件的過期時間
1.4 生產環境mod_expire優點
(1) 提升用戶體驗
(2) 節約網站帶寬成本
(3) 節約網站服務器及維護成本
1.5 expires失效條件
(1) 用戶主動清空緩存
(2) 設置的緩存時間到期
1.6 控制expires方法
如果網站更新功能或更新文件後,用戶再訪問時的內容還是舊的,怎麽解決這個問題
解答:
1) 首先,對於大多數公司業務來說,圖片等資源一般很少會去修改,因此可以修改為10年
2) 對於js,css偶爾會變化的資源,一般expires設置時間比較短,比如1-30天
3) 在更新文件上采取策略,如,更新後以新的文件名發布
2 mod_deflate模塊介紹
mod_deflate模塊提供了DEFLATE輸出過濾器,允許服務器在將輸出內容在發送到客戶端之前進行壓縮,以節約帶寬。
兩種安裝方式:
- 靜態編譯,即在編譯的時候加上--enable-deflate(bin/apachectl -l 查看是否安裝)
- 以DSO的方式執行安裝(bin/apachectl -M查看是否安裝)
只需要把下面的配置復制到http.conf結尾保存,即可讓所有的虛擬主機生效
<ifmodule mod_deflate.c> DeflateCompressionLevel 9 #壓縮的等級,越大壓縮等級越高,消耗CPU越高 SetOutputFilter DEFLATE #啟用壓縮 AddOutputFilterByType DEFLATE text/html text/plain text/xml #這三行設置壓縮類型 AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE text/css </ifmodule>
同樣適用curl -I URL的方式查看,還可以使用firefox插件查看 |
Linux課程筆記 Apache常用模塊的介紹