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 相关文章推荐
第十三节 对象串行化 [13]
Oct 09 PHP
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
Jun 10 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
ThinkPHP之A方法实例讲解
Jun 20 PHP
php抽象类用法实例分析
Jul 07 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
ThinkPHP下表单令牌错误与解决方法分析
May 20 PHP
php 人员权限管理(RBAC)实例(推荐)
May 24 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 PHP
php微信开发之音乐回复功能
Jun 14 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 curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
JavaScript关于select的相关操作说明
2010/01/13 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
python使用socket向客户端发送数据的方法
2015/04/29 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
python基础教程项目三之万能的XML
2018/04/02 Python
浅谈Python 敏感词过滤的实现
2019/08/15 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
Django之路由层的实现
2019/09/09 Python
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
屈臣氏泰国官网:Watsons TH
2021/02/23 全球购物
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
规划编制实施方案
2014/03/15 职场文书
服务宗旨标语
2014/07/01 职场文书
小学生植树节活动总结
2014/07/04 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
大明湖导游词
2015/02/03 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
春节慰问简报
2015/07/21 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers