将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 相关文章推荐
PHP4之真OO
Oct 09 PHP
无数据库的详细域名查询程序PHP版(5)
Oct 09 PHP
php 404错误页面实现代码
Jun 22 PHP
PHP 多维数组排序(usort,uasort)
Jun 30 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
Mar 11 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
Sep 04 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
深入理解curl类,可用于模拟get,post和curl下载
Jun 08 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
php简单socket服务器客户端代码实例
May 18 PHP
php 如何获取文件的后缀名
Jun 05 PHP
PHP基于面向对象实现的留言本功能实例
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
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
2008/12/02 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
2017/02/15 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
深入理解Webpack 中路径的配置
2017/06/17 Javascript
js 监控iframe URL的变化实例代码
2017/07/12 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
使用python分析git log日志示例
2014/02/27 Python
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
python中的字典操作及字典函数
2018/01/03 Python
从DataFrame中提取出Series或DataFrame对象的方法
2018/11/10 Python
python制作图片缩略图
2019/04/30 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
vue常用指令代码实例总结
2020/03/16 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
恶意软件的定义
2014/11/12 面试题
人事专员职责
2014/02/22 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python
基于Python编写一个监控CPU的应用系统
2022/06/25 Python