今天用工具檢測網頁是否經過GZIP壓縮時,突然想到是否可以利用php代碼來檢測呢,查了查資料然后寫了測試代碼,竟然成功了。分享一下,看有人需要不。

php判斷網頁是否經過GZIP壓縮

php利用curl來檢測網頁是否經過GZIP壓縮的方法

使用 php curl 來檢查網頁文件是否經過GZIP壓縮,直接編寫函數調用即可,簡單方便

編寫php函數

<?php
function IsGzip($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 1);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_ENCODING, ''); 
    $response = curl_exec($ch);
    if(!curl_errno($ch)){
        $info = curl_getinfo($ch);
        $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);
        preg_match('/Content-Encoding: (.*)\s/i', $header_str, $matches);
        if(isset($matches[1]) && $matches[1]=='gzip'){
            return true;
        }
    }
    return false;
}
?>

調用函數代碼

<?php
$url = 'http://xswdd.cn';
if(IsGzip($url)){
    echo $url.' 經過GZIP壓縮';
}else{
    echo $url.' 未經過GZIP壓縮';
}
?>

輸出結果:

http://xswdd.cn 經過GZIP壓縮

php 利用 get_headers() 函數來檢測網頁是否經過GZIP壓縮

get_headers() 是php系統級函數,他返回一個包含有服務器響應一個 HTTP 請求所發送的標頭的數組,我們可以檢測數據中是否含有 Vary 元素,以及 Vary 元素的值是否為 Accept-Encoding ,來檢測網頁文件是否進行GZIP壓縮

編寫php函數

<?php
function IsGzip($url){
    $header = get_headers($url, 1);
    if(isset($header['Vary']) && $header['Vary']=='Accept-Encoding'){
        return true;
    }
    return false;
}
?>

函數調用的方法

<?php
$url = 'http://www.baidu.com';
if(IsGzip($url)){
    echo $url.' 經過GZIP壓縮';
}else{
    echo $url.' 未經過GZIP壓縮';
}
?>

輸出結果:

http://www.baidu.com 經過GZIP壓縮

注:

關于 get_headers() 函數的使用,請查看本站的其它文章。