首頁  >  文章  >  後端開發  >  php 實作判斷頁面或圖片是否經過gzip壓縮的方法

php 實作判斷頁面或圖片是否經過gzip壓縮的方法

墨辰丷
墨辰丷原創
2018-05-24 10:23:521607瀏覽

下面小編就為大家帶來一篇php 判斷頁面或圖片是否經過gzip壓縮的方法。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧

使用php判斷頁面或圖片是否經過gzip壓縮方法

1.使用get_headers

##頁面內容

<?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);
?>

使用get_headers判斷是否使用gzip壓縮

<?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;
}
?>

#測試結果:


當加上ob_gzhandler時,回傳true,刪除後回傳false

2.使用curl

#圖片

<?php
header(&#39;content-type:image/jpeg&#39;);
ob_start(&#39;ob_gzhandler&#39;); // 开启gzip,屏蔽则关闭
echo file_get_contents(&#39;test.jpg&#39;);
?>

#使用curl判斷是否使用gzip壓縮

##
<?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;
}
?>

#測試結果:
#當加上ob_gzhandler時,傳回true,刪除後回傳false



以上就是本文的全部內容,希望對大家的學習有所幫助。

相關推薦:

PHP函數將任意數字轉換成對應的漢字數字

php中的protected的引發的思考

#PHP###之正規表示式捕獲組與非捕獲組# ###########################

以上是php 實作判斷頁面或圖片是否經過gzip壓縮的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn