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 相关文章推荐
层叠菜单的动态生成
Oct 09 PHP
PHP 判断常量,变量和函数是否存在
Apr 26 PHP
使用php 获取时间今天明天昨天时间戳的详解
Jun 20 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
Jun 22 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
May 25 PHP
php函数连续调用实例分析
Jul 30 PHP
Yii2中事务的使用实例代码详解
Sep 07 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
Oct 25 PHP
php实现的简单数据库操作Model类
Nov 16 PHP
PHP实现支付宝即时到账功能
Dec 21 PHP
PHP文件操作详解
Dec 30 PHP
Centos7 Yum安装PHP7.2流程教程详解
Jul 02 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+Html+缓存
2006/11/25 PHP
用php将任何格式视频转为flv的代码
2009/09/03 PHP
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
jquery 学习笔记一
2010/04/07 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
[02:09]2018DOTA2亚洲邀请赛TNC赛前采访
2018/04/04 DOTA
Django中使用group_by的方法
2015/05/26 Python
centos6.4下python3.6.1安装教程
2017/07/21 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
python实现归并排序算法
2018/11/22 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
详解python数据结构和算法
2019/04/18 Python
关于Python作用域自学总结
2019/06/10 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
配置管理计划的主要内容有哪些
2014/06/20 面试题
出口公司经理求职简历中的自我评价
2013/10/13 职场文书
2014年重阳节敬老活动方案
2014/09/16 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
Django如何与Ajax交互
2021/04/29 Python
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android