php 判断页面或图片是否经过gzip压缩的方法


Posted in PHP onApril 05, 2017

使用php判断页面或图片是否经过gzip压缩方法

1.使用get_headers

页面内容

<?php
ob_start('ob_gzhandler'); // 开启gzip,屏蔽则关闭

$data = array(
 array('name'=>'one','value'=>1),
 array('name'=>'two','value'=>2),
 array('name'=>'three','value'=>3)
);

header('content-type:application/json');
echo json_encode($data);
?>

使用get_headers判断是否使用gzip压缩

<?php
$url = 'http://www.example.com/';
var_dump(check_gzip($url));

/**
 * 判断url是否经过gzip压缩
 * @param String $url 来源
 * @param Boolean
 */
function check_gzip($url){
 $header = get_headers($url, 1);
 if(isset($header['Vary']) && $header['Vary']=='Accept-Encoding'){
  return true;
 }
 return false;
}
?>

测试结果:

当加上ob_gzhandler时,返回true,删除后返回false

2.使用curl

图片

<?php
header('content-type:image/jpeg');
ob_start('ob_gzhandler'); // 开启gzip,屏蔽则关闭
echo file_get_contents('test.jpg');
?>

使用curl判断是否使用gzip压缩

<?php
$url = 'http://www.example.com/';
var_dump(check_gzip($url));

/**
 * 判断url是否经过gzip压缩
 * @param String $url 来源
 * @param Boolean
 */
function check_gzip($url){
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HEADER, 1);   // 输出header信息
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 返回的信息不直接输出
 curl_setopt($ch, CURLOPT_ENCODING, '');  // 不限制编码类型
 $response = curl_exec($ch);
 if(!curl_errno($ch)){
  $info = curl_getinfo($ch);
  // 获取header
  $header_size = $info['header_size'];
  $header_str = substr($response, 0, $header_size);
  $filter = array("\r\n", "\r");
  $header_str = str_replace($filter, PHP_EOL, $header_str);

  // 检查content-encoding
  preg_match('/Content-Encoding: (.*)\s/i', $header_str, $matches);
  if(isset($matches[1]) && $matches[1]=='gzip'){
   return true;
  }
 }
 return false;
}
?>

测试结果:

当加上ob_gzhandler时,返回true,删除后返回false

以上这篇php 判断页面或图片是否经过gzip压缩的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php日历[测试通过]
Mar 27 PHP
openPNE常用方法分享
Nov 29 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
Mar 04 PHP
PHP7.0安装笔记整理
Aug 28 PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 PHP
Yii中实现处理前后台登录的新方法
Dec 28 PHP
php文件类型MIME对照表(比较全)
Oct 07 PHP
thinkphp分页实现效果
Oct 13 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
Mac下快速搭建PHP开发环境步骤详解
May 05 PHP
PHP的Trait机制原理与用法分析
Oct 18 PHP
通过php动态传数据到highcharts
Apr 05 #PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
Apr 04 #PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
Apr 04 #PHP
php实现用户登陆简单实例
Apr 04 #PHP
详谈phpAdmin修改密码后拒绝访问的问题
Apr 03 #PHP
浅谈PHP表单提交(POST&amp;GET&amp;URL编/解码)
Apr 03 #PHP
THINKPHP在添加数据的时候获取主键id的值方法
Apr 03 #PHP
You might like
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
php中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
php绘制一条直线的方法
2015/01/24 PHP
jQuery 加上最后自己的验证
2009/11/04 Javascript
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
canvas实现钟表效果
2017/02/13 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
python threading模块操作多线程介绍
2015/04/08 Python
详解django.contirb.auth-认证
2018/07/16 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
英国最大的海报商店:GB Posters
2018/03/20 全球购物
市场营销职业生涯规划书范文
2014/01/12 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
灰雀教学反思
2014/04/28 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技
PyTorch device与cuda.device用法
2022/04/03 Python