ホームページ  >  記事  >  バックエンド開発  >  PHP は、URL ページが gzip 圧縮を使用しているかどうかを検出します。

PHP は、URL ページが gzip 圧縮を使用しているかどうかを検出します。

WBOY
WBOYオリジナル
2016-07-13 10:48:441022ブラウズ

Gzip 圧縮は、サーバー側で開くことがよくあります。gzip 圧縮を検出して有効にする方法を紹介します。

gzip 圧縮と送信をオンにするとどうなるか

アパッチ

ステップ1

コードは次のとおりです コードをコピー

LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so

次に、次のサンプルコードを http.conf に追加します

nginx サーバーの場合は、以下のコードも参照できます
コードは次のとおりです コードをコピー

#GZIPを始める
#apache は gzip 圧縮を有効にします。前提条件は gzip モジュールをインストールすることです
AddOutputFilterByType DEFLATE text/text text/html
テキスト/プレーンテキスト/XMLテキスト/CSSアプリケーション/x-javascript
アプリケーション/JavaScript
#GZIP終了

コードは次のとおりです#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 コードを使用します。

コードは次のとおりです

コードをコピー //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) { 技術記事
//Mire Military Network は Web ページの圧縮に gzip を使用します
ケース 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

tru​​e
コードは次のとおりです コードをコピー

/*
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

http://www.bkjia.com/PHPjc/632758.html
Gzip 圧縮は非常に優れたページ圧縮および送信方法であり、このような 100K ファイルは、GZIP 圧縮後には 20KB 未満になることがあります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。