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 fread()使用技巧
Jan 22 PHP
PHP以及MYSQL日期比较方法
Nov 29 PHP
关于PHP递归算法和应用方法介绍
Apr 15 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
Jan 06 PHP
使用openssl实现rsa非对称加密算法示例
Jan 24 PHP
destoon找回管理员密码的方法
Jun 21 PHP
使用PHP Socket 编程模拟Http post和get请求
Nov 25 PHP
php中Array2xml类实现数组转化成XML实例
Dec 08 PHP
php 类自动载入的方法
Jun 03 PHP
PHP封装CURL扩展类实例
Jul 28 PHP
制作个性化的WordPress登陆界面的实例教程
May 21 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
jQuery的三种$()
2009/12/30 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
详解在Python程序中使用Cookie的教程
2015/04/30 Python
python如何在终端里面显示一张图片
2016/08/17 Python
Python类的继承和多态代码详解
2017/12/27 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
Python学生信息管理系统修改版
2018/03/13 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
澳大利亚拥有最好的家具和家居用品在线目的地:Nestz
2019/02/23 全球购物
在职人员函授期间自我评价分享
2013/11/08 职场文书
董事长秘书岗位职责
2013/11/29 职场文书
兼职业务员岗位职责
2014/01/01 职场文书
会计岗位描述
2014/02/22 职场文书
医院党员公开承诺书
2014/08/30 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
关于国庆节的广播稿
2015/08/19 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang