Home  >  Article  >  Backend Development  >  PHP determines whether the page file has been compressed by gzip

PHP determines whether the page file has been compressed by gzip

*文
*文Original
2018-01-02 17:15:471900browse

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(&#39;ob_gzhandler&#39;); // 开启gzip,屏蔽则关闭

$data = array(
 array(&#39;name&#39;=>&#39;one&#39;,&#39;value&#39;=>1),
 array(&#39;name&#39;=>&#39;two&#39;,&#39;value&#39;=>2),
 array(&#39;name&#39;=>&#39;three&#39;,&#39;value&#39;=>3)
);

header(&#39;content-type:application/json&#39;);
echo json_encode($data);
?>

Use get_headers to determine whether to use gzip compression

<?php
$url = &#39;http://www.example.com/&#39;;
var_dump(check_gzip($url));

/**
 * 判断url是否经过gzip压缩
 * @param String $url 来源
 * @param Boolean
 */
function check_gzip($url){
 $header = get_headers($url, 1);
 if(isset($header[&#39;Vary&#39;]) && $header[&#39;Vary&#39;]==&#39;Accept-Encoding&#39;){
  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(&#39;content-type:image/jpeg&#39;);
ob_start(&#39;ob_gzhandler&#39;); // 开启gzip,屏蔽则关闭
echo file_get_contents(&#39;test.jpg&#39;);
?>

Use curl to determine whether to use gzip compression

<?php
$url = &#39;http://www.example.com/&#39;;
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, &#39;&#39;);  // 不限制编码类型
 $response = curl_exec($ch);
 if(!curl_errno($ch)){
  $info = curl_getinfo($ch);
  // 获取header
  $header_size = $info[&#39;header_size&#39;];
  $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(&#39;/Content-Encoding: (.*)\s/i&#39;, $header_str, $matches);
  if(isset($matches[1]) && $matches[1]==&#39;gzip&#39;){
   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

PHP output gzip compression

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn