将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学习笔记之二 php入门知识
Jan 12 PHP
.htaccess文件保护实例讲解
Feb 06 PHP
php正则匹配html中带class的div并选取其中内容的方法
Jan 13 PHP
php使用mysqli向数据库添加数据的方法
Mar 20 PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 PHP
CodeIgniter与PHP5.6的兼容问题
Jul 16 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
Mar 18 PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 PHP
PHP在线打包下载功能示例
Oct 15 PHP
ZendFramework框架实现连接两个或多个数据库的方法
Dec 08 PHP
PHP中SQL查询语句的id=%d解释(推荐)
Dec 10 PHP
thinkPHP微信分享接口JSSDK用法实例
Jul 07 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
神族 PROTOSS 概述
2020/03/14 星际争霸
php5.4以下版本json不支持不转义内容中文的解决方法
2015/01/13 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
JS原生数据双向绑定实现代码
2017/08/14 Javascript
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
numpy找出array中的最大值,最小值实例
2018/04/03 Python
Python实现的个人所得税计算器示例
2018/06/01 Python
Python File(文件) 方法整理
2019/02/18 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
2019/07/04 Python
python 字典套字典或列表的示例
2019/12/16 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
CSS3标注引用的出处和来源的方法
2020/02/25 HTML / CSS
司机检讨书
2014/02/13 职场文书
铅球加油稿100字
2014/09/26 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
北京英文导游词
2015/02/12 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android