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 相关文章推荐
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 PHP
用Simple Excel导出xls实现方法
Dec 06 PHP
深入php数据采集的详解
Jun 02 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
Sep 22 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 PHP
PHP SPL标准库中的常用函数介绍
May 11 PHP
iOS+PHP注册登录系统 PHP部分(上)
Dec 26 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
Feb 17 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
php图片合成方法(多张图片合成一张)
Nov 25 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
Jun 06 PHP
PHP crypt()函数的用法讲解
Feb 15 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
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
Jquery 实现grid绑定模板
2015/01/28 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
微信小程序使用map组件实现解析经纬度功能示例
2019/01/22 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
python字符串连接方式汇总
2014/08/21 Python
利用Python如何生成hash值示例详解
2017/12/20 Python
Python 统计字数的思路详解
2018/05/08 Python
python实现推箱子游戏
2020/03/25 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
python顺序执行多个py文件的方法
2019/06/29 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
优秀医生事迹材料
2014/02/12 职场文书
初中三年毕业生的自我评价分享
2014/02/14 职场文书
会计工作总结范文2014
2014/12/23 职场文书