mod_gzip は、Gzip を使用して静的 HTML ページを圧縮する機能を持つ Apache モジュールであり、IETF 標準に準拠するブラウザー (IE、Netscape など) を受け入れることができます。 mod_gzip を使用すると、ページのダウンロード時間が 4 ~ 5 倍長くなる可能性があります。 Web サーバーでは mod_gzip を使用することを強くお勧めします。ただし、PHP で独自の圧縮エンジンを構築する必要もありました。この記事では、PHPの出力制御機能を使ってページの読み込み速度を大幅に高速化する方法を紹介します。
PHP の出力制御機能の紹介
PHP4 で最も満足できる点は、スクリプトによって生成されたすべての出力を PHP にキャッシュさせることができ、コンテンツの送信を決定するまでブラウザーはその出力を受信しないことです。スクリプトでは、これらの関数を使用してヘッダーと Cookie を設定できますが、これは強力な出力関数のほんの一部にすぎません。
は、PHP プロセッサにすべての出力を内部バッファにリダイレクトするように指示します。 ob_start が呼び出されるまで、出力はブラウザに送信されません。
この関数は「出力バッファ」を文字列として返します。この関数を呼び出して、蓄積された出力をブラウザに送信できます。 (バッファリング機能をオフにした後のみ!!)
キャッシュ内の文字列の長さを返します。
出力キャッシュをクリアし、出力キャッシュをオフにします。この関数は、キャッシュ内のコンテンツをブラウザに出力する前に使用する必要があります。
void 501([int flag])
暗黙的なフラッシュアクションスイッチのオン/オフを切り替えるために使用されます (デフォルトはオフ)。フラッシュがオンになっている場合、print/echo またはその他の出力コマンドが呼び出されるたびに、出力コンテンツがすぐにブラウザーに送信されます。
出力コントロールを使用して PHP 出力を圧縮する
出力を圧縮するには、PHP4 でコンパイルされた Zlib 拡張パッケージを使用する必要があります。必要に応じて、PHP ドキュメントで Zlib パッケージのインストール手順を参照できます。
まず、出力キャッシュを初期化します:
その後、print、echo、またはその他の任意のメソッドを使用して、すべての出力コンテンツを生成します。たとえば:
ページが生成された後、出力コンテンツを取得します:
その後、ブラウザが圧縮データをサポートしているかどうかを検出する必要があります。サポートされている場合、ブラウザは ACCEPT-ENCODEING HTTP ヘッダーをサーバーに送信します。 $HTTP_ACCEPT_ENCODING 変数に「gzip,deflate」文字列があるかどうかを確認するだけで済みます。
この方法は使い方が簡単で、構造が明確です。圧縮出力を生成する方法を見てみましょう:
//好了,你还可以按此方式附加上更多的压缩数据。
実際のテストでは、すべてのスクリプト コードは次のとおりです:
PHP 出力をキャッシュする
PHP4 がまだリリースされておらず、PHP3 を使用しなければならなかったとき、私は非常に興味がありました。データベースの読み込みとファイル システムへのアクセスを軽減するためのいくつかのキャッシュ メカニズムを開発しています。 PHP3 には特に優れた方法はありませんが、出力キャッシュを使用すると、PHP4 ではすべてがはるかに簡単になります。
これは簡単な例です:
これは簡単な例です。出力キャッシュを使用すると、複雑なコンテンツ生成システムを構築したり、異なるチャンクやプログラムなどに異なるキャッシュ メカニズムを使用したりできます...
結論
PHP 出力制御関数これは、スクリプトによって生成された出力をキャッシュにリダイレクトするのに非常に役立ちます。 gzip をサポートするブラウザーで圧縮されたキャッシュ データを出力すると、読み込み時間を短縮できます。また、データ ソース (データベースまたはファイル) へのアクセスを減らすためのキャッシュ メカニズムとしても使用できます。これは XML を使用する場合に非常に重要です。
データ ソース (XML ドキュメントとデータベース) からデータをキャッシュし、(外観表示なしで) XML 形式でコンテンツを動的に生成するエンジンを PHP で構築すると、これらの XML の出力を取得し、XSLT を使用して任意の形式に変換できます。欲しい (html、wap、palm、pdf など)。このタスクは、PHP4 の出力キャッシュと Sablotron XSLT 拡張機能を使用してうまく実行できます。
以上がPHP で動的ページをキャッシュおよび圧縮するためのテクニックの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。