Home  >  Article  >  Backend Development  >  Determine whether the page or image has been compressed by gzip through php

Determine whether the page or image has been compressed by gzip through php

jacklove
jackloveOriginal
2018-06-20 17:36:021539browse

Use php to determine whether the page or image has been compressed by gzip

1. Use get_headers

Page content

<?phpob_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 , return after deletion false

2. Use curl

Picture

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

Use curl to judge 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, and returned after deletion false

This article explains how to use PHP to determine whether a page or image has been compressed by gzip. For more related content, please pay attention to the PHP Chinese website.

Related recommendations:

HTML5 example of obtaining the current geographical location and displaying it on Baidu map

Through php Auto-increment id to create a unique number class

Explanation on PHP optimized page output, compatible with examples of search engine robot access

The above is the detailed content of Determine whether the page or image has been compressed by gzip through php. 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