Gzip 圧縮は、サーバー側で開くことがよくあります。gzip 圧縮を検出して有効にする方法を紹介します。
gzip 圧縮と送信をオンにするとどうなるか
アパッチ
ステップ1
コードは次のとおりです |
コードをコピー |
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
|
次に、次のサンプルコードを http.conf に追加します
コードは次のとおりです |
コードをコピー |
#GZIPを始める
#apache は gzip 圧縮を有効にします。前提条件は gzip モジュールをインストールすることです
AddOutputFilterByType DEFLATE text/text text/html
テキスト/プレーンテキスト/XMLテキスト/CSSアプリケーション/x-javascript
アプリケーション/JavaScript
#GZIP終了
|
nginx サーバーの場合は、以下のコードも参照できます
コードは次のとおりです
コードをコピー |
|
#nginx gzip 圧縮を有効にして所定の場所に配置します
gzip をオンにします。
gzip_min_length 1000;
gzip_buffers 4 8k
gzip_http_バージョン 1.1
gzip_types テキスト/テキスト テキスト/html テキスト/プレーンテキスト/xml
text/css アプリケーション/x-javascript アプリケーション/javascript;
次に、Apache または nginx を再起動するだけです。では、gzip が正しくオンになっているかどうかを確認するには、次の php コードを使用します。
|
コードは次のとおりです
コードをコピー
|
//Mire Military Network は Web ページの圧縮に gzip を使用します |
//file_get_contents 直接取得したWebページは文字化けします。
header('Content-Type:text/html;charset=utf-8' );
$url = 'http://www.bKjia.c0m';
$file = fopen($url, "rb");
// 2 バイトのみを読み取ります。(16 進数) 1f 8b (10 進数) 31 139 の場合、gzip が有効になります。
$bin = fread($file, 2);
fclose($file);
$strInfo = @unpack("C2chars", $bin);
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
$isGzip = 0;
スイッチ ($typeCode)
{
ケース 31139:
//ウェブサイトでは gzip が有効になっています
$isGzip = 1;
休憩
デフォルト:
$isGzip = 0;
}
$url = $isGzip ? "compress.zlib://".$url:$url; // 三項式
$mierHtml = file_get_contents($url); //Mier Military Network データを取得します
$mierHtml = iconv("gbk","utf-8",$mierHtml);
echo $mierHtml;
例 2
コードは次のとおりです |
コードをコピー |
/*
PHP は、URL ページが gzip 圧縮を使用するかどうかを決定します
*/
$ch =curl_init("http://www.hzhuti.com/") //URL にはリダイレクトを含めることはできません
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Accept-Encoding: gzip, deflate'));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$buffer =curl_exec($ch);
$curl_info =curl_getinfo($ch);
カール_クローズ($ch);
$header_size = $curl_info["header_size"];
//ヘッダー情報の長さ
$headers = substr($buffer, 0, $header_size);
//ヘッダー情報を取得します
$body = substr($buffer, $header_size);
//Web コンテンツを取得します
関数 getEncoding(&$headers){
$arr=explode("rn",trim($headers));
array_shift($arr);
foreach($arr as $header){
list($k,$v)=explode(':',$header);
If ('content-encoding'==strto lower($k)){
戻りトリム($v);
}
}
false を返します。
}
$encoding=getEncoding($headers);
if ($encoding) {
echo "使用: ".$encoding ;
}その他{
「なし」をエコーします。
}
?>
http://www.bkjia.com/PHPjc/632758.html
www.bkjia.com
| true
http://www.bkjia.com/PHPjc/632758.html |
技術記事
Gzip 圧縮は非常に優れたページ圧縮および送信方法であり、このような 100K ファイルは、GZIP 圧縮後には 20KB 未満になることがあります。