Home > Article > Backend Development > PHP determines whether the page file has been compressed by gzip
How does php determine whether the page file has been gzip compressed? This article mainly explains how PHP determines whether a page or image has been compressed by gzip. Share it with everyone for reference. I hope to be helpful.
Use php to determine whether the page or image has been compressed by gzip
1. Use get_headers
Page content
<?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); ?>
Use get_headers to determine whether to use gzip compression
<?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; } ?>
Test results:
When ob_gzhandler is added, true is returned, and false is returned after deletion
2. Use curl
Picture
<?php header('content-type:image/jpeg'); ob_start('ob_gzhandler'); // 开启gzip,屏蔽则关闭 echo file_get_contents('test.jpg'); ?>
Use curl to determine whether to use gzip compression
<?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; } ?>
Test results:
When ob_gzhandler is added, true is returned, false is returned after deletion
##Related recommendations :
2 ways to enable gzip compression in php code
html writing method to gzip compression rate Impact
The above is the detailed content of PHP determines whether the page file has been compressed by gzip. For more information, please follow other related articles on the PHP Chinese website!