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 相关文章推荐
通过html表格发电子邮件
Oct 09 PHP
php join函数应用
May 04 PHP
PHP json格式和js json格式 js跨域调用实现代码
Sep 08 PHP
PHP array_multisort() 函数的深入解析
Jun 20 PHP
mantis安装、配置和使用中的问题小结
Jul 14 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 PHP
在SAE上搭建最新wordpress的方法
Dec 21 PHP
php基于socket实现SMTP发送邮件的方法
Mar 05 PHP
php实现网站顶踩功能的完整前端代码
Jul 19 PHP
解析WordPress中的post_class与get_post_class函数
Jan 04 PHP
PHP查询分页的实现代码
Jun 09 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 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笔记 字符串处理
2010/10/19 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
理解php依赖注入和控制反转
2016/05/11 PHP
js下利用控制器载入对应脚本
2010/07/17 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
jquery选择器简述
2015/08/31 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
概述BootStrap中role=&quot;form&quot;及role作用角色
2016/12/08 Javascript
Javascript的this用法
2017/01/16 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
React Native 集成jpush-react-native的示例代码
2017/08/16 Javascript
js HTML5 canvas绘制图片的方法
2017/09/08 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
微信小程序实现图片上传功能
2018/05/28 Javascript
vue-router动态设置页面title的实例讲解
2018/08/30 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
vue实例的选项总结
2020/06/09 Javascript
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
自学python的建议和周期预算
2019/01/30 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
Python读取实时数据流示例
2019/12/02 Python
手机端用rem+scss做适配的详解
2017/11/15 HTML / CSS
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
会议邀请书范文
2014/02/02 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang