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面向对象全攻略 (五) 封装性
Sep 30 PHP
深入PHP与浏览器缓存的分析
Jun 03 PHP
PHP按行读取、处理较大CSV文件的代码实例
Apr 09 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
PHP简单生成缩略图相册的方法
Jul 29 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
Apr 07 PHP
PHP文件操作实例总结
Sep 27 PHP
php die()与exit()的区别实例详解
Dec 03 PHP
PHP 根据key 给二维数组分组
Dec 09 PHP
Laravel中前端js上传图片到七牛云的示例代码
Sep 04 PHP
使用ucenter实现多站点同步登录的讲解
Mar 21 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
Oct 09 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下正则来匹配dede模板标签的代码
2010/08/21 PHP
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
javascript some()函数用法详解
2014/11/13 PHP
PHP中预定义的6种接口介绍
2015/05/12 PHP
PHP 极验验证码实例讲解
2016/09/29 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
javascript入门之window对象【新手必看】
2016/11/22 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
在Docker上开始部署Python应用的教程
2015/04/17 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
python利用微信公众号实现报警功能
2018/06/10 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
安全生产检讨书
2014/01/21 职场文书
党员教师工作决心书
2014/03/13 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
初中家长评语和期望
2014/12/26 职场文书
董事会决议范本
2015/07/01 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS