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

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

复制代码 代码如下:

//米尔军事网采用 gzip压缩网页
//file_get_contents 直接获得的网页是乱码。
header('Content-Type:text/html;charset=utf-8' );
$url = 'http://www.miercn.com';
$file = fopen($url, "rb");
//只读2字节 如果为(16进制)1f 8b (10进制)31 139则开启了gzip ;
$bin = fread($file, 2);
fclose($file);
$strInfo = @unpack("C2chars", $bin);
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
$isGzip = 0;
switch ($typeCode)
{
case 31139:
//网站开启了gzip
$isGzip = 1;
break;
default:
$isGzip = 0;
}
$url = $isGzip ? "compress.zlib://".$url:$url; // 三元表达式
$mierHtml = file_get_contents($url); //获得米尔军事网数据
$mierHtml = iconv("gbk","utf-8",$mierHtml);
echo $mierHtml;

时间: 2024-10-31 13:05:43

使用php判断网页是否gzip压缩的相关文章

使用php判断网页是否gzip压缩_php技巧

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

动态网页启用IIS的Gzip压缩功能对搜索引擎的影响

西安弈聪网站是我的企业网站,公司主要从事软件开发,网站建设业务.所以从网站的关键词和业务定位上分析,我们把网站的主关键词定为"西安网站建设,西安建网站,西安软件公司",辅助关键词定位为"西安建网站价格,西安建网站公司,西安软件开发公司"等几个关键词. 网站的程序是我们公司自己开发的,后台程序设计时融合和有利于SEO的各个细节.如:整站生成静态网页;每页的title和描述keywords各不同;网站后台自动生成http://www.aliyun.com/zixun/a

Nginx开启gzip压缩(非常完美)

在服务器Nginx开启gzip压缩是优化网站性能的方法之一,可以有效减少服务器带宽的消耗,缺点是会增大CPU的占用率,但是很多时候CPU往往是空闲最多的. 引用nginx官网的介绍: The ngx_http_gzip_module module is a filter that compresses responses using the "gzip" method. This often helps to reduce the size of transmitted data by

PHP中开启gzip压缩的2种方法_php技巧

网页开启gzip压缩以后,其体积可以减小20%~90%,可以节省下大量的带宽,从而减少页面响应时间,提高用户体验. php配置改法: 复制代码 代码如下: zlib.output_compression = On ;开启gzip功能 zlib.output_compression_level = 4 ;gzip压缩级别,1~9,建议3~5 ;zlib.output_handler = ;gzip压缩方式,建议注释 php文件改法: 建议在页面开头写上,可以写到头部公共文件 复制代码 代码如下:

OSS支持常见网页静态类文件返回内容Gzip压缩

尊敬的用户: 您好,从6 月 10日起, OSS 将支持对于常见网页静态类文件( HTML .Javascript . XML. Json )返回内容进行 GZIP压缩.使用方式: 需要将返回内容进行 GZIP压缩传输的用户,需要在请求的 Header 中显示方式加入 Accept-Encoding:gzip, OSS 会根据文件的 Content-Type和文件大小,判断是否返回给用户经过 GZIP 压缩的数据.如果返回的内容为压缩格式,会包含 Content-Encoding :gzip ,

Apache启用GZIP压缩网页传输方法_Linux

首先我们先了解Apache Gzip的相关资料. 一.gzip介绍 Gzip是一种流行的文件压缩算法,现在的应用十分广泛,尤其是在Linux平台.当应用Gzip压缩到一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小.这取决于文件中的内容. 利用Apache中的Gzip模块,我们可以使用Gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器.这样经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度. 网页加载速度加快的好处不

IIS中启用Gzip压缩传输网页方法

一.摘要 本文总结了如何在IIS中启用Gzip压缩, 减少网页在网络中的传输大小, 从而在用户前提高显示页面的速度.   二.前言   检测网站启用了哪些优化时, Gzip是十分关键的一项. 启动Gip压缩将立竿见影的减少页面的网络传输大小.三.HTTP压缩概述   HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法.HTTP压缩采用通用的压缩算法如gzip等压缩HTML.JavaScript或CSS文件.压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度.当然,

apache启用mod_deflate的GZIP压缩网页传输方法

gzip原本是文件压缩格式,扩展名为.gz,HTTP协议用它来改进WEB应用程序性能,加快HTTP请求返回内容的下载速度,增加用户体验,降低网络带宽占用 apache内置有mod_deflate模块来启用gzip功能,但假如安装apache的时候没有编译相关模块,就需要你手动安装一次,以启用它: 首先到你的apache源码目录,查找到mod_deflate.c文件 Mac及Linux下都可用locate mod_deflate.c 通常位置:apachehttpd源码目录/modules/fil

利用GZIP压缩网页相关知识

网站的访问速度是由多个因素所共同决定的,这些因素例如应用程序的响应速度.网络带宽.服务器性能.与客户端之间的网络传输速度等等.其中最重要的一个因素是应用程序本身的响应速度,因此当你为网站性能所苦恼时,你第一个需要着手进行处理的便是尽可能的提升应用程序的执行速度,你可以使用缓存或者是优化代码的执行效率来提升应用程序的速度. 网页压缩是一项由 WEB 服务器和浏览器之间共同遵守的协议,也就是说 WEB 服务器和浏览器都必须支持该技术,所幸的是现在流行的浏览器都是支持的,包括 IE.FireFox.O