php 判断页面或图片是否经过gzip压缩的方法

使用php判断页面或图片是否经过gzip压缩方法

1.使用get_headers

页面内容

$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压缩

/**

  • 判断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

图片

使用curl判断是否使用gzip压缩

/**

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

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。