将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 生成WML页面方法详解
Aug 09 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
Feb 01 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
Apr 23 PHP
PHP图片上传代码
Nov 04 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
php强制下载文件函数
Aug 24 PHP
PHP 7.1新特性的汇总介绍
Dec 16 PHP
Laravel下生成验证码的类
Nov 15 PHP
php 截取中英文混合字符串的方法
May 31 PHP
PHP解析url并得到url参数方法总结
Oct 11 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
Apr 03 PHP
PHP单元测试配置与使用方法详解
Dec 27 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 flush()与ob_flush()的区别详解
2013/06/03 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
jQuery 获取URL参数的插件
2010/03/04 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
ReactJs快速入门教程(精华版)
2016/11/28 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
Python isinstance判断对象类型
2008/09/06 Python
python代码制作configure文件示例
2014/07/28 Python
python实现二分查找算法
2017/09/21 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
全球立体声:World Wide Stereo
2018/09/29 全球购物
婴儿地球:Baby Earth
2018/12/25 全球购物
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
外语系毕业生找工作的求职信
2013/11/28 职场文书
会议主持词
2014/03/17 职场文书
企业演讲比赛主持词
2014/03/18 职场文书
学习计划书怎么写
2014/09/15 职场文书
前台接待员岗位职责
2015/04/15 职场文书