Apache开启Gzip压缩,LAMP网页压缩
源自http://hi.baidu.com/mrlbz/blog/item/69447759beedafc19d82046b.html
我Wordpress的主機為LAMP架構,即Linux+ Apache+ MySQL + PHP? ,突然想到有個gzip壓縮可以提高網頁訪問的速度,所以就想做一下測試,同時了解一下如何開啟gzip壓縮。通過網上查詢得知,在Apache中開啟 gzip壓縮方法為:?
1.
在httpd.conf或者博客根目錄的.htaccess文件中加入如下規則(Apache服務器需要支持mod_deflate)
<ifmodule mod_deflate.c>?
AddOutputFilter DEFLATE html xml php js css?
</ifmodule>
或者
2.
<ifmodule mod_deflate.c>?
AddOutputFilterByType DEFLATE text/html text/xml application/x-httpd-php application/x-javascript text/css?
</ifmodule>
經 過查看,主機的Apache支持mod_deflate(使用httpd -M查看是否有mod_deflate模塊,或者查看你的httpd.conf文件中LoadModules有沒有這個mod_deflate模塊開 啟),直接復制粘貼以上的代碼到httpd.conf文件的結尾,重新啟動apache服務就可以實現gzip壓縮了。
如果主機的apache不支持mod_deflate,主機的php卻支持zlib,也就是說支持gzip壓縮,具體方法見下面描述:?
對于靜態網頁(html,js,css),先設置URL Rewrite:
<IfModule mod_rewrite.c>?
RewriteEngine On?
RewriteBase /blog? #your blog, change when needed.?
RewriteCond %{REQUEST_FILENAME} -f?
RewriteRule ^(.*)(js|css|html|htm)$ /gzip.php?file=$1$2&type=$2 [L]?
</IfModule>
可以通過URL Rewrite的方式請求這個gzip.php文件 (該文件需要放在”/”目錄),這樣靜態文件的gzip壓縮就OK了。
還有,對于由php動態輸出的網頁,常見的就是wp輸出的頁面,可以通過一個插件(gzippy?
)實現, 直接到wp后臺,在插件搜索里面輸入“gzippy”然后安裝即可。gzippy只有一句話:
<?php?
function gzippy() {?
??? ob_start(‘ob_gzhandler’);?
}?
if(!stristr($_SERVER['REQUEST_URI'], ‘tinymce’) && !ini_get(‘zlib.output_compression’)) {?
??? add_action(‘init’, ‘gzippy’);?
}?
?>
同時,對于主機的apache不支持mod_deflate,想讓已經安裝好的apache支持該模塊,
那也可以選擇只編譯 deflate 模塊所需的文件 mod_deflate.c 和 mod_headers.c。
這兩個文件位于 {apache-src}/modules/filters/ 目錄下(其中 {apache-src} 為 apache 源文件所在的目錄)。使用如下命令來單獨編譯這兩個源文件。
# {apache-bin}/apxs -i -a -c {apache-src}/modules/filters/mod_deflate.c?
# {apache-bin}/apxs –i –a –c {apache-src}/modules/filters/mod_headers.c?
When install the header module the src directory is {apache-src}/modules/metadata/mod_headers.c?
So we need change the command as follows:{apache-bin}/apxs -i -a -c {apache-src}/modules/metadata/mod_headers.c?????????????????????
其中 {apache-bin} 為 Apache 安裝目錄下的 bin 目錄,接下來在 httpd.conf 直接配置該模塊即可。
很多時候你在單獨編譯 deflate 模塊的時候可能會碰到編譯錯誤,提示是:
Cannot load /opt/apache/modules/mod_deflate.so into server: /opt/apache/modules/mod_deflate.so: undefined symbol: deflate
編輯 /usr/local/apache2/bin/apr-config
文件修改其中的 LDFLAGS 值為 “-lz”,然后再重新編譯 mod_deflate 模塊,apxs -ica mod_deflate.c 即可。?
為了省卻不必要的麻煩,請盡量在編譯安裝apache時直接加上 –enable-deflate –enable-headers 參數。
其它方法分別有:
Apache 中使用 mod_deflate模塊壓縮網頁
在ubuntu中啟用mod_deflate很簡單,"a2enmod deflate"就可以了
在httpd.conf中添加:
-----------------------------------------------------------------------------------------------
LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php application/x-javascript text/css
----------------------------------------------------------------------------------------------
指 定對html、txt、xml、php、js、css等mime類型的文件進行壓縮,application/x-httpd-php和 application/x-javascript是我加上的,不知道能否起作用。也可以按照文件擴展名或者瀏覽器類型進行壓縮,還有更復雜的配置,可以 查詢
官方的手冊 <http://httpd.apache.org/docs/2.0/mod/mod_deflate.html>。
重啟apache?? /etc/init.d/apache2 restart
在chinaz看到頁面壓縮工具tool.chinaz.com/Gzips/,于是測試了一下自己的網站,發現居然沒有開啟gzip壓縮,要知道如果在網速慢的情況,頁面傳輸大小很影響用戶打開響應快速體驗的,你問有什么好處?
?
1.開GZIP有什么好處?
答:Gzip開啟以后會將輸出到用戶瀏覽器的數據進行壓縮的處理,這樣就會減小通過網絡傳輸的數據量,提高瀏覽的速度。
對于Apache而言,有兩種情況
1)針對Apache2.0之前的版本,它原本是不支持的,不過可以通過添加第三方的module_gzip模塊來啟用
2)針對Apache2.0及之后的版本,Apache提供支持, 不過不叫gzip,而叫mod_deflate
那么該如何配置呢?我的系統是linux系統apache(httpd-2.2.15) web服務器,配置過程如下
Apache的gzip功能是使用mod_deflate.so模塊,因此,我們先生成mod_deflate.so模塊。首先從網上下載一個Apache安裝程序(盡量與當前使用的Apache版本相同)然后解壓,我們解壓到了tmp目錄下
#cd /tmp/httpd-2.2.15/modules/filters
#/usr/local/apache/bin/apxs -i -c -a mod_deflate.c???? //生成mod_deflate.so模塊
#cd /tmp/httpd-2.2.15/modules/metadata/
#/usr/local/apache/bin/apxs -i -c -a mod_headers.c???? //生成mod_headers.so模塊
?
修改httpd.conf文件
1、加入:
LoadModule headers_module modules/mod_headers.so
LoadModule deflate_module modules/mod_deflate.so
2、加入:
<VirtualHost ******>
ServerAdmin help@chinanorton.com
DocumentRoot “/usr/local/apache/htdocs/www/”
ServerName chinanorton.com
ServerAlias www.chinanorton.com
ErrorLog “logs/chinanorton.com-error_log”
CustomLog “logs/chinanorton.com-access_log” common
<Location />
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
#Header append Vary User-Agent env=!dont-vary
</Location>
</VirtualHost>
?
配置完畢,重新啟動apache服務然后測試一下,發現ok了,壓縮了66%還不錯。
[root@localhost /]# /usr/local/apache/bin/apachectl restart
轉載于:https://blog.51cto.com/vsfor/780224
總結
以上是生活随笔為你收集整理的Apache开启Gzip压缩,LAMP网页压缩的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对象序列化(六):应用实例-WPF对象的
- 下一篇: 财务报销人员是公司亲信的弊端