>php教程 >php手册 >php检测url页面是否使用gzip压缩小结

php检测url页面是否使用gzip压缩小结

WBOY
WBOY원래의
2016-05-25 16:44:381192검색

gzip压缩是一种很好的页面压缩传送方式,我们经常会在服务器端打开了,这样一个100K的文件通过gzip压缩之后可能只有20KB不到,下面我来介绍一下gzip压缩检测与开启方法.

如何打开gzip压缩传输呢?

apache,第1步,代码如下:

LoadModule deflate_module modules/mod_deflate.so

LoadModule headers_module modules/mod_headers.so

然后在http.conf加如下例代码:

# BEGIN GZIP  
#apache开启gzip压缩,前提要装gzip模块哦  
<ifmodule mod_deflate.c>  
AddOutputFilterByType DEFLATE text/text text/html 
text/plain text/xml text/css application/x-javascript 
application/javascript 
</ifmodule>  
# END GZIP

如果你是nginx服务器也可参考下面代码:

gzip on;  
gzip_min_length 1000;  
gzip_buffers 4 8k;  
gzip_http_version 1.1;  
gzip_types text/text text/html text/plain text/xml 
 text/css application/x-javascript application/javascript;

现在重启一下apache或nginx 即可,那么要如何检查是否正确开启gzip呢,我们可使用下面php代码:

//采用 gzip压缩网页  
//file_get_contents 直接获得的网页是乱码。  
header(&#39;Content-Type:text/html;charset=utf-8&#39; );  
$url = &#39;http://www.phprm.com&#39;;  
$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[&#39;chars1&#39;].$strInfo[&#39;chars2&#39;]);    
$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;

例2代码如下:

<?php  
/*  
php 判断url页面是否使用gzip压缩  
*/ 
$ch = curl_init("http://www.phprm.com/");//url不能有转向  
curl_setopt($ch,CURLOPT_HTTPHEADER,array(&#39;Accept-Encoding: gzip, deflate&#39;));  
curl_setopt($ch, CURLOPT_HEADER, 1);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
$buffer = curl_exec($ch);  
$curl_info = curl_getinfo($ch);  
curl_close($ch);  
$header_size = $curl_info["header_size"]; 
//头部信息长度  
$headers = substr($buffer, 0, $header_size); 
//获取头部信息  
$body = substr($buffer, $header_size); 
//获取网页内容  
   
function getEncoding(&$headers){  
	$arr=explode("rn",trim($headers));  
	array_shift($arr);  
	foreach($arr as $header){  
		list($k,$v)=explode(&#39;:&#39;,$header);  
		if (&#39;content-encoding&#39;==strtolower($k)){  
			return trim($v);  
		}  
	}  
	return false;  
}     
   
$encoding=getEncoding($headers);  
   
if ($encoding) {  
	echo "Using: ".$encoding;  
}else{  
	echo "None";  
}

                   

文章网址:

随意转载^^但请附上教程地址。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.