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


Posted in PHP onMarch 03, 2016

1.使用压缩与不使用压缩的HTTP输出比较

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

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

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

设置gzip后输出:

将PHP程序中返回的JSON格式数据用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);
?>
PHP 相关文章推荐
提升PHP执行速度全攻略(下)
Oct 09 PHP
PHP4中实现动态代理
Oct 09 PHP
用PHP开发GUI
Oct 09 PHP
用PHP实现小型站点广告管理(修正版)
Oct 09 PHP
Smarty模板快速入门
Jan 04 PHP
说明的比较细的php 正则学习实例
Jul 30 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
Apr 30 PHP
php随机显示指定文件夹下图片的方法
Jul 13 PHP
php封装的验证码类分享
Feb 26 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
May 05 PHP
PHP设计模式之工厂模式实例总结
Sep 01 PHP
PHP getNamespaces()函数讲解
Feb 03 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 #PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 #PHP
CodeIgniter表单验证方法实例详解
Mar 03 #PHP
PHP6新特性分析
Mar 03 #PHP
php轻松实现文件上传功能
Mar 03 #PHP
php编程每天必学之验证码
Mar 03 #PHP
简单介绍PHP非阻塞模式
Mar 03 #PHP
You might like
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
JS 表单验证大全
2011/11/23 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
JS表格组件神器bootstrap table详解(基础版)
2015/12/08 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
jQuery时间日期三级联动(推荐)
2016/11/27 Javascript
Angular2 父子组件数据通信实例
2017/06/22 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
[43:32]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第一场
2014/05/26 DOTA
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
Python中的多行注释文档编写风格汇总
2016/06/16 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
2020/04/18 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
Python利用scapy实现ARP欺骗的方法
2019/07/23 Python
python3字符串操作总结
2019/07/24 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
Python谱减法语音降噪实例
2019/12/18 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
北京捷通华声语音技术有限公司Java软件工程师笔试题
2012/04/10 面试题
生物学学生自我评价
2014/01/17 职场文书
小学家长会邀请函
2014/01/23 职场文书
运动会入场词50字
2014/02/20 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
《女娲补天》教学反思
2016/02/20 职场文书
sql字段解析器的实现示例
2021/06/23 SQL Server
纯html+css实现打字效果
2021/08/02 HTML / CSS
Python语言内置数据类型
2022/02/24 Python