使用場景:一個網頁的不少靜態圖片、css/js文件,若是記錄到日誌中會使日誌特別大,但這些圖片文件等屬於靜態文件,沒有記錄的必要,所以咱們能夠修改配置文件設置不記錄指定的類型的訪問日誌;咱們平常須要的是看用戶訪問過哪些頁面,而不是看這些頁面的哪些圖片javascript
一、修改虛擬主機配置文件css
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.confjava
在文件中CustomLog行上方加入如下內容:正則表達式
SetEnvIf Request_URI ".*\.gif$" img
SetEnvIf Request_URI ".*\.jpg$" img
SetEnvIf Request_URI ".*\.png$" img
SetEnvIf Request_URI ".*\.bmp$" img
SetEnvIf Request_URI ".*\.swf$" img
SetEnvIf Request_URI ".*\.js$" img
SetEnvIf Request_URI ".*\.css$" img
apache
上面命令中引號內容是正則表達式,img屬於前述內容的標記vim
再在CustomLog行末尾加入內容env=!img ,表示只要符合上面條件的請求都不會記錄到日誌裏瀏覽器
二、從新加載配置文件緩存
在從新加載前,配置文件還未生效,咱們先來實驗看下服務器
從上圖咱們能夠看到在未配置的狀況下,默認是會記錄jpg文件的訪問日誌的app
下面咱們來加載更新後的配置文件
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
此時再來測試
上圖能夠看到並未增長新的日誌記錄
固然上面實驗的圖片並不是真實存在的,咱們也能夠放一張真實存在的圖片來訪問實驗,從本機傳輸huawei.jpg
如今咱們再來訪問新放進來的這張圖片,發現並無記錄日誌
目的:通常狀況下,都應該對日誌作切割,一方面是防止日誌寫滿磁盤,二是讓咱們更方便的管理日誌,須要配合日誌過時時間使用
一、編輯配置文件
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
加入下圖框中的內容
|/usr/local/apache2.4/bin/rotatelogs 指定日誌切割工具,rotatelogs這個工具是apache2.4自帶的日誌切割工具
-l 表示以系統的時間爲準,若是不指定,它就會以UTC/CST(美國時間/中國時間)格式的時間爲基準
%Y%m%d 表示年月日
86400 表示切割間隔時間爲86400s,即1分鐘
二、從新加載配置文件
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
三、訪問查看下
從上圖能夠看到,在通過一次訪問後,logs目錄下新增了一個以今天時間命名的日誌文件,其內容就是
剛纔訪問留下的日誌
設置靜態元素過時時間後,當用戶訪問某個靜態元素超過必定時間,瀏覽器就會自動將下載到本地的這些靜態元素清空,若是不設置,可能不會清空,或者瀏覽器按照本身的設定來清空
先來作個小測試:
瀏覽器第一次訪問下圖鏈接,返回狀態碼爲200 OK
瀏覽器第二次訪問同一鏈接,返回狀態碼爲304 Modified沒有修改,它表示瀏覽器檢測到所訪問的這個圖片從下載後到如今沒有修改過,所以不須要從服務器從新下載
一、增長配置
在虛擬主機配置文件中加入如下內容:
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hours"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
ExpiresActive on表示打開此功能
ExpiresByType表示類型
ExpiresDefault表示其餘類型文件的過時時間
now plus 0 min表示不過時或者不理會過時時間
二、檢測配置文件語法錯誤
# /usr/local/apache2.4/bin/apachectl -t
三、查看expire模塊是否開啓
# /usr/local/apache2.4/bin/apachectl -M |grep expire
上圖表示沒有打開,此時須要編輯主配置文件打開expire模塊
# vim /usr/local/apache2.4/conf/httpd.conf
去掉expires模塊前面的#號,以下
從新加載配置文件
# /usr/local/apache2.4/bin/apachectl graceful
再來查看expire模塊已經開啓
四、驗證
刷新原來的網頁,能夠看到狀態碼爲200 O,K,緩存保留時間爲1天,過時時間,
再次刷新網頁,狀態碼及過時時間發生了變化,緩存保留時間仍是1天
推薦連接
apache日誌記錄代理IP以及真實客戶端IP http://ask.apelearn.com/question/960
apache只記錄指定URI的日誌 http://ask.apelearn.com/question/981
apache日誌記錄客戶端請求的域名 http://ask.apelearn.com/question/1037
apache 日誌切割問題 http://ask.apelearn.com/question/566