1. 程式人生 > >php json資料使用gzip壓縮輸出

php json資料使用gzip壓縮輸出

1.使用壓縮與不使用壓縮的HTTP輸出比較

這裡寫圖片描述


這裡寫圖片描述

2.開啟gzip

利用apache mod_deflate module 開啟gzip
開啟方法:

sudo a2enmod deflate
sudo /etc/init.d/apache2 restart

關閉方法:

sudo a2dismod deflate
sudo /etc/init.d/apache2 restart

3.設定需要gzip壓縮輸出的型別

json的輸出型別是application/json,所以可以這樣設定
在httpd.conf的<Directory></Directory>

中加入

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/json
</IfModule>
<?php
$data = array(
    array('name'=>'one','value'=>1),
    array('name'=>'two','value'=>2),
    array('name'=>'three','value'=>3),
    array('name'=>'four','value'=>4
), array('name'=>'five','value'=>5), array('name'=>'six','value'=>6), array('name'=>'seven','value'=>7), array('name'=>'eight','value'=>8), array('name'=>'nine','value'=>9), array('name'=>'ten','value'=>10), ); header('content-type:application/json'
); echo json_encode($data); ?>

設定gzip前輸出:

這裡寫圖片描述

設定gzip後輸出:

這裡寫圖片描述

4.單個json使用gzip壓縮輸出

設定AddOutputFilterByType DEFLATE application/json後,所有json格式的資料輸出都將使用gzip壓縮輸出。
如果只想某一個json使用gzip壓縮輸出,其他不需要,可以使用ob_start();方法來實現。

首先不需要設定AddOutputFilterByType,然後在程式碼最開始位置加入ob_start('ob_gzhandler');

<?php
ob_start('ob_gzhandler');

$data = array(
    array('name'=>'one','value'=>1),
    array('name'=>'two','value'=>2),
    array('name'=>'three','value'=>3),
    array('name'=>'four','value'=>4),
    array('name'=>'five','value'=>5),
    array('name'=>'six','value'=>6),
    array('name'=>'seven','value'=>7),
    array('name'=>'eight','value'=>8),
    array('name'=>'nine','value'=>9),
    array('name'=>'ten','value'=>10),
);

header('content-type:application/json');
echo json_encode($data);
?>