[轉]PHP經過zlib擴展實現GZIP壓縮輸出

1. GZIP介紹javascript

GZIP是GNU zip的縮寫,它是一個GNU自由軟件的文件壓縮程序,也常常用來表示gzip這種文件格式。GZIP主要用於Unix系統的文件壓縮,咱們常常看到的後綴爲.gz的文件,它們就是GZIP格式的。GZIP的壓縮效果比較明顯,應用Gzip壓縮網頁時,網頁能夠壓縮30%甚至更多。php

HTTP協議上的GZIP編碼是一種用來改進WEB;應用程序性能的技術,Web開發中經過GZIP壓縮頁面來下降網站的流量,並且GZIP不會佔用不少CPU。整體來考慮,啓用GZIP仍是很是划算的。經過HTTP頭,咱們能夠知道瀏覽器是否支持GZIP壓縮。通常是經過Accept-Encoding來查看,若是是:css

Accept-Encoding:gzip,deflate,則代表支持mod_gzip和mod_deflatehtml

2. Apache和 PHP開啓GZIP的方法java

1) 更改Apache配置文件,支持mod_deflate模塊瀏覽器

要Apache支持GZIP,Apache必須支持mod_deflate這個模塊。修改Apache目錄下的配置文件httpd.conf,設置LoadModule deflate_module modules/mod_deflate.so服務器

2)兩種開啓壓縮方式的介紹app

服務器默認不支持mod_gzip、mod_deflate模塊,若想經過GZIP壓縮頁面內容,能夠考慮兩種方式,開啓zlib.output_compression或者經過ob_gzhandler編碼的方式。性能

zlib.output_compression是在對網頁內容壓縮的同時發送數據至客戶端。網站

ob_gzhandler是等待網頁內容壓縮完畢後才進行發送,相比之下前者效率更高,但須要注意的是,二者不能同時使用,只能選其一,不然將出現錯誤。

3) 啓用GZIP壓縮方法

方法一:修改Apache配置文件httpd.conf

修改Apache配置文件httpd.conf,在配置文件中添加以下代碼:

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
DeflateCompressionLevel 5
AddOutputFilterByType DEFLATE text/html text/css image/gif image/jpeg image/png application/x-javascript
</IfModule>

  

方法二:修改php 配置文件php.ini

zlib.output_compression = Off Off更改爲On

zlib.output_compression_level = -1 zlib.output_compression_level 建議參數值是1~5,6以實際壓縮效果提高不大,cpu佔用倒是幾何增加。

方法三:經過.htaccess文件開啓,服務器必須開啓僞靜態

<IfModule mod_deflate.c>

    # Insert filter on all content
    SetOutputFilter DEFLATE
    # Insert filter on selected content types only
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript

    # Netscape 4.x has some problems...
    BrowserMatch ^Mozilla/4 gzip-only-text/html

    # Netscape 4.06-4.08 have some more problems
    BrowserMatch ^Mozilla/4\.0[678] no-gzip

    # MSIE masquerades as Netscape, but it is fine
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    # Don't compress images
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

    # Make sure proxies don't deliver the wrong content
    #Header append Vary User-Agent env=!dont-vary

</IfModule>

  

方法四:經過ob_gzhandler編碼,在PHP頁面開啓

<?php
if(Extension_Loaded('zlib')) Ob_Start('ob_gzhandler'); 
/*
這裏爲PHP頁面輸出內容
*/

if(Extension_Loaded('zlib')) Ob_End_Flush(); 
?>

  

3. 檢測網站是否開啓GZIP

經過站長GZIP壓縮檢測功能

訪問 http://tool.chinaz.com/Gzips/,輸入網址,能夠查看網站的是否啓用GZIP壓縮,網頁壓縮率等信息

 

轉載自:http://www.phpmarker.com/187.html

相關文章
相關標籤/搜索