php 判断页面或图片是否经过gzip压缩的方法

使用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压缩的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • PHP开启gzip页面压缩实例代码

    要实现GZIP压缩页面需要浏览器和服务器共同支持,实际上就是服务器压缩,传到浏览器后浏览器解压并解析.浏览器那边不需要我们担心,因为现在绝大多数浏览器都支持解析GZIP过的页面.我们只要把页面在服务器端压缩再输出到浏览器就行了. 有点罗嗦,下面说正事: 正如要制作压缩饼干,先要拿到原料,要压缩一个页面,首先要获得要输出的内容.PHP中的ob_start()(ob => output buffer)函数可以实现这个功能,它可以把程序里准备输出的内容先放到一个叫做"缓冲区"的地方,当

  • 探讨如何在PHP开启gzip页面压缩实例

    示例一(用php的内置压缩函数): 复制代码 代码如下: <?PHP if(Extension_Loaded('zlib')) Ob_Start('ob_gzhandler'); Header("Content-type: text/html"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/D

  • php gzip压缩输出的实现方法

    一.gzip介绍 gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式.软件的作者是Jean-loup Gailly和Mark Adler.1992年10月31日第一次公开发布,版本号是0.1,目前的稳定版本是1.2.4. Gzip主要用于Unix系统的文件压缩.我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的.现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式. 当应用Gzip压缩到一个纯

  • 使用php判断网页是否gzip压缩

    昨天晚上群里有朋友采集网页时发现file_get_contents 获得的网页保存到本地为乱码,响应的header 里 Content-Encoding:gzip但在浏览器里看是正常的.因为我有过相关经验马上发现是网站开启了gzip而file_get_contents 获得的是压缩过的页面,而不是解压过的页面(不知道是不是要file_get_conttents 请求网页时带上相应的参数,直接获得没有被gzip压缩过的网页?)刚好我前不久刚看到可以用读取文件的前2个字节判断文件类型.群里面的朋友也

  • php读取远程gzip压缩网页的方法

    今天在调取一家商城的页面信息时候,使用file_get_contents抑或curl: 复制代码 代码如下: $url = 'http://www.xxx.com/21/?type=23′;  $temp = file_get_contents($url);  echo $temp; 都得到一片乱码,查看了许多内容,包括页面的header信息,发现原来页面使用了. 类似的信息,即Content-Encoding为gzip,即该站点开启了gzip压缩.这里的解决方案有多种,当然如果你使用file_

  • 使用php判断服务器是否支持Gzip压缩功能

    Gzip可以压缩网页大小从而达到加速打开网页的速度,目前主流的浏览器几乎都支持这个功能,但开启Gzip是需要服务器支持的,在这里我们简单的使用php来判断服务器是否支持Gzip功能. 新建一个php类型文件,可命名为test.php,该文件中写入下面这段代码: 复制代码 代码如下: <?php phpinfo();?> 然后保存并上传至你需要测试的空间的根目录下,上传完毕之后在浏览器中打开这个文件的URL: http://你的域名及目录/test.php,例如本站即为:http://3aj.c

  • php 判断页面或图片是否经过gzip压缩的方法

    使用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:a

  • 图片要启用gzip压缩吗(绝对不要)

    经常有人在群里问到,图片到底需不需要启用GZip压缩?我不止一次的回答说,图片是不需要启用GZip压缩的.今天,我把此问题写作成文,给大家分析一下为什么图片不需要启用GZip压缩. 图片启用GZip压缩会适得其反 一些开发者使用HTTP压缩那些已经本地已经压缩过的文件,而这些已经压缩过的文件再次被GZip压缩时,是不能提高性能的,表现在如下两个方面. 首先,HTTP压缩需要成本.Web服务器获得需要的内容,然后压缩它,最后将它发送到客户端.如果内容不能被进一步压缩,你只是在浪费CPU做无意义的任

  • 详解Nginx服务器的配置中开启文件Gzip压缩的方法

    gzip(GNU- ZIP)是一种压缩技术.经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会块得多.gzip的压缩页面需要浏览 器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析.浏览器那里不需要我们担心,因为目前的巨大多数浏览器都支持解析gzip 过的页面. Nginx的压缩输出有一组gzip压缩指令来实现.相关指令位于http{-.}两个大括号之间. 下面大致讲一下配置开启gzip压缩的方法: 1.Vim打开Nginx配置文件 v

  • Nginx启用压缩及开启gzip 压缩的方法

    在nginx.conf文件的http模块新增以下内容 gzip             on; gzip_min_length  10k;  # 设置允许压缩的页面最小字节数 gzip_comp_level  6; gzip_vary        on; gzip_types       text/plain text/css application/javascript application/json application/xml text/xml image/png image/gif

  • php使用curl获取header检测开启GZip压缩的方法

    本文实例讲述了php使用curl获取header检测开启GZip压缩的方法.分享给大家供大家参考,具体如下: 获得网页header信息,是网站开发人员和维护人员常用的技术.网页的header信息,非常丰富,非专业人士一般较难读懂和理解各个项目的含义. 获取网页header信息,方法多种多样,就php语言来说,我作为一个菜鸟,知道的方法也有4种那么多.下面逐一献上. 方法一:使用get_headers()函数 这个方法很多人使用,也很简单便捷,只需要两行代码即可搞定.如下: $thisurl =

  • 在IIS上启用Gzip压缩详细方法(HTTP压缩)

    一.摘要 本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 二.前言. 本文的知识点是从互联网收集整理, 主要来源于中文wiki. 使用YSlow检测网站启用了哪些优化时, Gzip是十分关键的一项. 启动Gip压缩将立竿见影的减少页面的网络传输大小. 三.HTTP压缩概述 HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法.HTTP压缩采用通用的压缩算法如gzip等压缩HTML.JavaScript或CSS文件.压缩的最大好

  • win2008 IIS7中启用JS的gzip压缩的方法

    先打开IIS管理,选择我要设置的站点,然后在右边的功能区找到MIME TYPES看看里面是否有.JS的选项,如果没有可以手功加上 有的话把.js的值设置成:application/x-javascript记住不能少并x-有的网友介绍是application/javascript 偶在WIN2008+IIS7下试过,如果不加x-也是不会压缩的. 当然最好在上传JS前对JS进行一次压缩这样效果会更好啦. 可以到网上找找TBCompressor工具,这个工具压缩不错 只不过需要你的JS写的标准,不然会

  • PHP中HTTP方式下的Gzip压缩传输方法举偶

    Gzip压缩传输能更加有效节约带宽流量.他先把文本压缩为.gz然后传输给浏览器,最后由浏览器负责解压缩呈现给用户. 老版本的浏览器可能不能显示,但是现在大多数浏览器都能显示. 启用Gzip传输首先要求PHP4.0.5以后版本. 方法1: 在.htaccess中加入 php_flag zlib.output_compression on php_value zlib.output_compression_level 2 方法2: 在php脑袋顶上加入 ob_start("ob_gzhandler&

  • Apache开启GZIP压缩功能方法

    Gzip是一种流行的文件压缩算法,现在的应用十分广泛,尤其是在Linux平台.Gzip在现代浏览器中默认都是支持的,当一个纯文本文件使用Gzip压缩可以减少70%以上的文件大小,压缩后可以大大降低了网络传输的字节数,使用Gzip的好处就是可以加快网页加载的速度,同时是你的网站对搜索引擎更加友好.下面PHP程序员雷雪松详细的讲解下Apache如何使用mod_deflate模块来实现Gzip压缩网页内容进行压缩. Apache服务器HTTP请求Gzip处理的过程 1.Apache服务器接收到浏览器的

  • Nginx启用gzip压缩的方法示例

    在服务器完成了一些配置以后,还需要做的一件事:启用gzip来压缩返回的数据,从而来加快网站的加载速度. 以下为在Nginx上启用gzip的相关配置(将其添加到配置文件即可): # 开启gzip gzip on; # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩 gzip_min_length 1k; # gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间. gzip_comp_level 2; # 进行压缩的文件类型. gzip_types text/plain te

随机推荐