首頁  >  文章  >  後端開發  >  詳解PHP如何將傳回的JSON資料用gzip壓縮輸出

詳解PHP如何將傳回的JSON資料用gzip壓縮輸出

*文
*文原創
2018-01-05 17:56:063243瀏覽

PHP如何將傳回的JSON資料用gzip壓縮輸出?本文主要介紹了將PHP傳回的JSON格式資料用gzip壓縮輸出的方法,文中範例環境為Linux系統與Apache伺服器,所需的朋友可以參考下。希望對大家有幫助。

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

201633154618959.jpg (447×226)

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的7b799fe73e35dcfdc019b13f54de80e5bb15ed4aadeed04b3991578461de0768中加入

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/json
</IfModule>
<?php
$data = array(
  array(&#39;name&#39;=>&#39;one&#39;,&#39;value&#39;=>1),
  array(&#39;name&#39;=>&#39;two&#39;,&#39;value&#39;=>2),
  array(&#39;name&#39;=>&#39;three&#39;,&#39;value&#39;=>3),
  array(&#39;name&#39;=>&#39;four&#39;,&#39;value&#39;=>4),
  array(&#39;name&#39;=>&#39;five&#39;,&#39;value&#39;=>5),
  array(&#39;name&#39;=>&#39;six&#39;,&#39;value&#39;=>6),
  array(&#39;name&#39;=>&#39;seven&#39;,&#39;value&#39;=>7),
  array(&#39;name&#39;=>&#39;eight&#39;,&#39;value&#39;=>8),
  array(&#39;name&#39;=>&#39;nine&#39;,&#39;value&#39;=>9),
  array(&#39;name&#39;=>&#39;ten&#39;,&#39;value&#39;=>10),
);

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

設定gzip前輸出:

201633154714151.jpg (346×83)

設定gzip後輸出:

201633154732511.jpg (334×99)

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

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

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

<?php
ob_start(&#39;ob_gzhandler&#39;);

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

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

相關推薦:

PHP 陣列遍歷foreach語法結構及實例

#PHP 陣列排序方法總結

######################################################################### ###php和js中json傳遞的簡析##########

以上是詳解PHP如何將傳回的JSON資料用gzip壓縮輸出的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn