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