将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+xslt在windows平台上
Oct 09 PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 PHP
PHP 强制下载文件代码
Oct 24 PHP
PHP简洁函数小结
Aug 12 PHP
PHP定时任务延缓执行的实现
Oct 08 PHP
php中header设置常见文件类型的content-type
Jun 23 PHP
php猜单词游戏
Sep 29 PHP
PHP 自动加载的简单实现(推荐)
Aug 12 PHP
PHP入门教程之数学运算技巧总结
Sep 11 PHP
PHP创建多级目录的两种方法
Oct 28 PHP
PHP自定义函数实现数组比较功能示例
Oct 19 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
Sep 02 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
咖啡知识大全
2021/03/03 新手入门
php smarty模版引擎中的缓存应用
2009/12/02 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
jquery $.getJSON()跨域请求
2011/12/21 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
深入解析Python中的变量和赋值运算符
2015/10/12 Python
Python实现Linux中的du命令
2017/06/12 Python
用tensorflow构建线性回归模型的示例代码
2018/03/05 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
Python3实现的回文数判断及罗马数字转整数算法示例
2019/03/27 Python
Python 转换文本编码实现解析
2019/08/27 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
会计电算化专业个人的自我评价
2013/11/24 职场文书
运动会表扬稿大全
2014/01/16 职场文书
城建学院毕业生自荐信
2014/01/31 职场文书
店长职务说明书
2014/02/04 职场文书
事业单位鉴定材料
2014/05/25 职场文书
市级三好学生事迹材料
2014/08/27 职场文书
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android