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获取mysql版本的几种方法小结
Mar 25 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
Jan 06 PHP
php页面防重复提交方法总结
Nov 25 PHP
php实现的返回数据格式化类实例
Sep 22 PHP
Thinkphp中数据按分类嵌套循环实现方法
Oct 30 PHP
PHP向浏览器输出内容的4个函数总结
Nov 17 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
Jul 09 PHP
PHP查询分页的实现代码
Jun 09 PHP
PHP基于Closure类创建匿名函数的方法详解
Aug 17 PHP
浅谈PHP实现大流量下抢购方案
Dec 15 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 PHP
PHP微信网页授权的配置文件操作分析
May 29 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中使用XML
2006/10/09 PHP
php获取远程图片体积大小的实例
2013/11/12 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
PHP使用递归生成文章树
2015/04/21 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
JavaScript 变量基础知识
2009/11/07 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
JS数组array元素的添加和删除方法代码实例
2015/06/01 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
Python实现的购物车功能示例
2018/02/11 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
python之super的使用小结
2018/08/13 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
Django错误:TypeError at / 'bool' object is not callable解决
2019/08/16 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
Whistles官网:英国女装品牌
2020/08/14 全球购物
《童年》教学反思
2014/02/18 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
个人授权委托书样本
2014/09/13 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
影视后期实训报告
2014/11/05 职场文书
销区经理年终述职报告模板
2019/11/28 职场文书