歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網

Apache mod

日期:2017/2/27 15:43:30   编辑:Linux教程

Apahce使用mod_deflate壓縮模塊,客戶端(如浏覽器)每次都會去服務器取數據(ps:Expires沒有過期等情況下),即http請求頭的狀態碼永遠為200,而不會訪回 304 Not Modified。

304 Not Modified?

如果客戶端發送了一個帶條件的GET請求且該請求已被允許,而文檔的內容(自上次訪問以來或者根據請求的條件)並沒有改變,則服務器應當返回這個狀態碼。304響應禁止包含消息體(會節省帶寬和開銷),因此始終以消息頭後的第一個空行結尾。

問題

F5刷新,狀態永遠200,如下圖:

這是Apahce本身的一個bug。Apache同時使用gzip壓縮和緩存,etag名字會自動變成“******-gzip”,當存在gzip時就會出現問題。

解決方法

如果使用了《OneinStack》和《lnmp一鍵安裝包》(ps:最新下載的已解決這個問題)選擇安裝了lamp模式,將會自動打開的壓縮功能,需要通過如下方法解決此問題:

將文件/usr/local/apache/conf/httpd.conf最後幾行將:

ServerTokens ProductOnly
ServerSignature Off
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
DeflateCompressionLevel 6
SetOutputFilter DEFLATE
Include conf/vhost/*.conf

替換為:

<IfModule mod_headers.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
<FilesMatch "\.(js|css|html|htm|png|jpg|swf|pdf|shtml|xml|flv|gif|ico|jpeg)$">
RequestHeader edit "If-None-Match" "^(.*)-gzip(.*)$" "$1$2"
Header edit "ETag" "^(.*)-gzip(.*)$" "$1$2"
</FilesMatch>
DeflateCompressionLevel 6
SetOutputFilter DEFLATE
</IfModule>


ServerTokens ProductOnly
ServerSignature Off
Include conf/vhost/*.conf

重啟apache:

  1. service httpd restart

測試

F5刷新:

原文:https://blog.linuxeye.com/438.html
Copyright © Linux教程網 All Rights Reserved