1. 程式人生 > >LAMP架構十二( Apache靜態元素過期時間)

LAMP架構十二( Apache靜態元素過期時間)

十二、靜態元素過期時間
      對於短時間內的重複訪問,將靜態元素設定為僅在第一次下載,不僅可以減輕伺服器壓力,又可以提升使用者訪問體驗。但這個時間不能設定的過長,具體情況根據網站自身內容的更新頻率而定,對於使用者請求超過了設定的時間,客戶端會重新向伺服器請求靜態元素,以保證頁面最新。

配置靜態元素過期時間,配置的時候注意空格和拼寫:
[[email protected] ~]# vi /etc/httpd/conf.d/virtual.conf 
虛擬主機增加靜態元素規則:
<VirtualHost *:8090>                                                                                 80是http的服務埠,不用改
 ServerAdmin

[email protected]                                                        網站管理員郵箱,設定成自己的網站
 DocumentRoot "/var/www/html/a"                                                           虛擬主機根目錄放網站程式
    ServerName a.com                                                                                                網站名,域名                  
    ServerAlias www.a.com                                                                     網站別名,域名別名,可寫多個要用空格隔開 


    <IfModule mod_rewrite.c>                                                                     需要mod_rewrite模組支援
        RewriteEngine on                                                                                              開啟rewrite功能
        RewriteCond %{HTTP_HOST} !^www.a.com$                            將非www.test.com的域名請求跳轉至此
        RewriteRule ^/(.*)$ http://www.baidu.com/$1 [R=301,L]                     狀態碼301永久跳轉,L=last,跳一次
                                                   定義跳轉規則,將以^/(.*)$開頭結尾的域名請求跳轉,$1代表^/(.*)$
    </IfModule>


<IfModule mod_expires.c>                                                                 載入mod_expires.c有效期模組
    ExpiresActive on                                                                                             開啟有效期功能開關
    ExpiresByType image/gif  "access plus 1 days"                                                             有效期1天
    ExpiresByType image/jpeg "access plus 24 hours"                                                  有效期24小時
    ExpiresByType image/jpg "access plus 24 hours"                                                    有效期24小時
    ExpiresByType image/png "access plus 24 hours"                                                   有效期24小時
    ExpiresByType text/css "now plus 2 hour"                                                                  有效期2小時
    ExpiresByType application/x-javascript "now plus 2 hours"                                        有效期2小時
    ExpiresByType application/javascript "now plus 2 hours"                                           有效期2小時
    ExpiresByType application/x-shockwave-flash "now plus 2 hours"                             有效期2小時
    ExpiresDefault "now plus 0 min"                                                                   有效期0分鐘,不快取
</IfModule>


    ErrorLog "logs/test.com-error_log"                                                                     錯誤日誌儲存路徑
    SetEnvIf Request_URI ".*\.gif$" img                                             日誌記錄規則,變量表示.gif檔案
    SetEnvIf Request_URI ".*\.jpg$" img                                           日誌記錄規則,變量表示.jpg檔案
    SetEnvIf Request_URI ".*\.png$" img                                         日誌記錄規則,變量表示.png檔案
    SetEnvIf Request_URI ".*\.bmp$" img                                       日誌記錄規則,變量表示.bmp檔案
    SetEnvIf Request_URI ".*\.swf$" img                                          日誌記錄規則,變量表示.swf檔案
    SetEnvIf Request_URI ".*\.js$" img                                                日誌記錄規則,變量表示.js檔案
    SetEnvIf Request_URI ".*\.css$" img                                            日誌記錄規則,變量表示.cs檔案
    CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/test.com-access_%Y%m%d.log 86400" combined env=!img
</VirtualHost>  

確認有誤expires_module模組

測試語法並重新載入配置
[[email protected] ~]# /usr/sbin/apachectl -t
Syntax OK
[[email protected] ~]# /usr/sbin/apachectl  graceful
 

測試訪問:
[[email protected] ~]# touch /var/www/html/a/images/test.jpep
 我在日誌記錄規則裡未排除jpeg型別元素的記錄,但在有效期規則裡設定了jpeg型別元素的有效期

未配置過期時間之前:

配置了過期時間之後:

 

檢視訪問記錄:

狀態碼304,表示已快取在遠端客戶端,即訪問者的電腦,第一次訪問的狀態碼為200,表示獲取成功。