将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 相关文章推荐
IIS+PHP+MySQL+Zend配置 (视频教程)
Dec 13 PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 PHP
PHP 第二节 数据类型之数值型
Apr 28 PHP
解析Win7 XAMPP apache无法启动的问题
Jun 26 PHP
配置php网页显示各种语法错误
Sep 23 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
PHP 前加at符合@的作用解析
Jul 31 PHP
PHP7正式版测试,性能惊艳!
Dec 08 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
May 20 PHP
php+MySql实现登录系统与输出浏览者信息功能
Jul 01 PHP
在Laravel的Model层做数据缓存的实现
Sep 26 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 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
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
php 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
关于PHP中Object对象的笔记分享
2011/06/28 PHP
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
PHP判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
2020/04/13 PHP
经验几则 推荐
2006/09/05 Javascript
JSON 教程 json入门学习笔记
2020/09/22 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
分析JS单线程异步io回调的特性
2017/12/01 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
python list 合并连接字符串的方法
2013/03/09 Python
python机器学习之神经网络(一)
2017/12/20 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
图解Python变量与赋值
2018/04/03 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
Prototype中如何为一个元素添加一个方法
2014/12/08 面试题
资金主管岗位职责范本
2014/03/04 职场文书
《大海那边》教学反思
2014/04/09 职场文书
住房抵押登记委托书
2014/09/27 职场文书
作风转变年心得体会
2014/10/22 职场文书
幼儿园中班个人总结
2015/02/28 职场文书