1.使用get_headers
页面内容
1
2
3
4
5
6
7
8
9
10
11
12
|
<?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压缩
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?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
图片
1
2
3
4
5
|
<?php
header( 'content-type:image/jpeg' );
ob_start( 'ob_gzhandler' ); // 开启gzip,屏蔽则关闭
echo file_get_contents ( 'test.jpg' );
?>
|
使用curl判断是否使用gzip压缩
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
<?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压缩的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。