将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中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
Jul 09 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
Apr 13 PHP
php中判断数组是一维,二维,还是多维的解决方法
May 04 PHP
多个PHP中文字符串截取函数
Nov 12 PHP
php开发中的页面跳转方法总结
Apr 26 PHP
PHP版QQ互联OAuth示例代码分享
Jul 05 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
Mar 10 PHP
PHP下载远程图片的几种方法总结
Apr 07 PHP
php基于协程实现异步的方法分析
Jul 17 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
Sep 12 PHP
laravel实现按月或天或小时统计mysql数据的方法
Oct 09 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/04 咖啡文化
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
2010/02/16 PHP
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
一个经典的PHP验证码类分享
2014/11/18 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
2007/08/19 Javascript
js GridView 实现自动计算操作代码
2009/03/25 Javascript
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
vue中appear的用法
2017/08/17 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
2017/10/26 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
python滑块验证码的破解实现
2019/11/10 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
护士实习自我鉴定
2013/10/22 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS
MySQL添加索引特点及优化问题
2022/07/23 MySQL
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL