ホームページ バックエンド開発 PHPチュートリアル PHP は zlib 拡張機能を使用してページの GZIP 圧縮出力を実装します_PHP チュートリアル

PHP は zlib 拡張機能を使用してページの GZIP 圧縮出力を実装します_PHP チュートリアル

Jul 13, 2016 am 10:59 AM
gzip php zlib 使用 圧縮 成し遂げる 拡大する テクノロジー はい 出力 ページ

GZIP (GNU-ZIP) は圧縮技術です。 GZIP 圧縮後、ページ サイズは元のサイズの 30%、またはさらに小さくなることがあります。こうすることで、ユーザーは閲覧中に爽快感と幸福感を得ることができます。
GZIP 圧縮ページを実装するには、ブラウザーとサーバーがそれをサポートする必要があります。実際には、ブラウザーに送信された後、ブラウザーはそれを解凍して解析します。現在、ほとんどのブラウザは GZIP ページの解析をサポートしているため、ブラウザについて心配する必要はありません。サーバー側でページを圧縮してブラウザに出力するだけです。

少し冗長ですので、本題に入りましょう:
圧縮 Cookie を作成する場合と同様に、まず原材料を取得する必要があり、ページを圧縮するには、まず出力するコンテンツを取得する必要があります。 PHP の ob_start() (ob => 出力バッファ) 関数は、この機能を実現します。これは、プログラム内で出力するコンテンツを最初に「バッファ」と呼ばれる場所に置くことができます。 . 原材料を一時的に置くための作業台。
この関数はページが出力される前に使用する必要があるため、通常はコードの先頭に配置されます。作業台のようなものなので、原材料が到着する前に準備しておかないと、原材料が到着したときに置き場所がなくて問題が発生します。 ob_start() を使用してページを圧縮した後、圧縮 Cookie を作成できます。いいえ、ページは圧縮されている必要があります。しかし、コンプレッサー EZ が不足しているようです。PHP の zlib 拡張機能を使用してコンプレッサーを作成しましょう。 ​ function ob_gzip($content) // $content は圧縮されるページのコンテンツ、またはビスケットの材料です

{
If( !headers_sent() && // ページヘッダー情報がまだ出力されていない場合
extension_loaded("zlib") && // そして、zlib 拡張機能が PHP にロードされました
strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip")) //ブラウザは GZIP ページを受け入れることができると表示します
{
$content = gzencode($content." n//このページは圧縮されています",9); 圧縮するコンテンツに「//このページは圧縮されています」というコメントラベルを付けて、gzencode( ) zlib が提供する関数 圧縮レベル 9 の場合、このパラメータの値の範囲は 0 ~ 9 で、0 は圧縮なし、9 は最大の圧縮を意味します。 もちろん、圧縮度が高くなるほど、CPU の消費量も増加します。

//次に、header() 関数を使用してヘッダー情報をブラウザーに送信し、このページが GZIP で圧縮されていることをブラウザーに伝えます。
header("コンテンツエンコーディング: gzip"); header("Vary: Accept-Encoding");
header("Content-Length: ".strlen($content));
}
Return $content; // 圧縮されたコンテンツを返すか、圧縮された Cookie をワークベンチに送り返します。
}

コンプレッサーの準備ができたら、コンプレッサーをワークベンチに置き、元の ob_start() は

になります。 ​ ob_start('ob_gzip'); //はい、ob_start() にパラメータを追加するだけです。パラメータ名は作成したばかりの「コンプレッサー」の関数名です。このようにして、コンテンツがバッファーに入ると、PHP は ob_gzip 関数を呼び出してコンテンツを圧縮します。

さて、すべての作業が完了し、最終納品:

​ ob_end_flush(); //バッファを終了し、内容を出力します。もちろん、バッファの内容はプログラムの実行終了時に自動的に出力されるため、この関数は必要ありません。

完全な例は次のとおりです:

// ob_gzip コンプレッサーを使用してワークベンチを有効にする
ob_start('ob_gzip');
//圧縮するコンテンツを準備します
for($i=0; $i {
echo('ここに圧縮ビスケットの原料があります、ここに圧縮ビスケットの原料があります、原料');
}
//圧縮結果を出力
ob_end_flush();
//これは ob_gzip コンプレッサーです
関数 ob_gzip($content)
{
If( !headers_sent() &&
extension_loaded("zlib") &&
strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip"))
{
$content = gzencode($content." n//このページは圧縮されています",9);
header("コンテンツエンコーディング: gzip"); header("Vary: Accept-Encoding");
header("Content-Length: ".strlen($content));
}
$content を返します。 }
?>

実際にテストした結果、上記のコードで GZIP が使用されていない場合は 4.69KB = 4802.56B ですが、GZIP を有効にすると 104B に減少します
、うーん...数学が苦手かもしれないので計算してみます。元の圧縮のパーセンテージ。 。


さらに、以下は FlashGet を使用して取得されたログ情報です。プログラムに追加されたヘッダー情報を確認できます。 引用: 金曜日 1 月 25 日 17:53:10 2008 HTTP/1.1 200 OK 金曜日 1 月 25 日 17:53:10 2008 サーバー: Microsoft-IIS/5.1
Fri Jan 25 17:53:10 2008 日付: Fri, 25 Jan 2008 09:53:10 GMT
Fri Jan 25 17:53:10 2008 接続: 閉じる

金曜日 1 月 25 日 17:53:10 2008 X-Powered-By: PHP/5.2.5
Fri Jan 25 17:53:10 2008 コンテンツ エンコーディング: gzip
Fri Jan 25 17:53:10 2008 変更: Accept-Encoding
Fri Jan 25 17:53:10 2008 Content-Length: 104
2008 年 1 月 25 日金曜日 17:53:10 コンテンツ タイプ: text/html



http://www.bkjia.com/PHPjc/631912.html

www.bkjia.com

http://www.bkjia.com/PHPjc/631912.html技術記事 GZIP (GNU-ZIP) は圧縮テクノロジです。 GZIP 圧縮後、ページ サイズは元のサイズの 30%、またはさらに小さくなることがあります。こうすることで、ユーザーは閲覧中に爽快感と幸福感を得ることができます。 GZを達成するには...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

See all articles