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 cookie 作用范围?不要在当前页面使用你的cookie
Mar 24 PHP
php线性表顺序存储实现代码(增删查改)
Feb 16 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 PHP
PHP设计模式之装饰者模式代码实例
May 11 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
Jul 02 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
Sep 30 PHP
php 实现Hash表功能实例详解
Nov 29 PHP
PHP实现更改hosts文件的方法示例
Aug 08 PHP
实例解析php的数据类型
Oct 24 PHP
浅谈laravel orm 中的一对多关系 hasMany
Oct 21 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 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 feof用来识别文件末尾字符的方法
2010/08/01 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
js计算页面刷新的次数
2009/07/20 Javascript
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
jQuery滚动加载图片效果的实现
2013/03/06 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
js数组如何添加json数据及js数组与json的区别
2015/10/27 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
基于AngularJS的拖拽文件上传的实例代码
2017/07/15 Javascript
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
Bootstrap Paginator+PageHelper实现分页效果
2018/12/29 Javascript
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
python生成ppt的方法
2018/06/07 Python
Python中return self的用法详解
2018/07/27 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
django自定义模板标签过程解析
2019/12/14 Python
增大python字体的方法步骤
2020/07/05 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
吨的认识教学反思
2014/04/27 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
委托公证书格式
2015/01/26 职场文书
小程序自定义轮播图圆点组件
2022/06/25 Javascript