将PHP程序中返回的JSON格式数据用gzip压缩输出的方法

5年以前  |  阅读数:252 次  |  编程语言:PHP 

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


    <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前输出:

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('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);
    ?>
 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例