ホームページ >バックエンド開発 >PHPチュートリアル >Apache php gzip 圧縮出力を実装する方法
1. gzip の概要
gzip は GNU zip の略称で、GNU フリー ソフトウェアのファイル圧縮プログラムであり、ファイル形式 gzip を表すためによく使用されます。ソフトウェアの作者は Jean-loup Gailly と Mark Adler です。 1992 年 10 月 31 日に初めて公開されました。バージョン番号は 0.1 で、現在の安定バージョンは 1.2.4 です。
Gzip は主に Unix システムでのファイル圧縮に使用されます。 Linux では拡張子 .gz の付いたファイルをよく使用しますが、それらは GZIP 形式です。現在、インターネット上で使用される非常に一般的なデータ圧縮形式またはファイル形式になっています。 プレーン テキスト ファイルに Gzip 圧縮を適用すると、その効果は非常に明白で、ファイルの内容によっては、GZIP 圧縮後のページ サイズが元のサイズの 40% 以下になることがあります。
HTTPプロトコル上のGZIPエンコーディングは、WEBアプリケーションのパフォーマンスを向上させるために使用されるテクノロジーです。 Web 開発では、gzip を使用してページを圧縮し、Web サイトの トラフィック を削減できます。ただし、gzip による CPU 使用率の増加はわずか数パーセントですが、ページが 30 パーセント以上圧縮される可能性があります。 %なので、非常に費用対効果が高いです。
Apache の Gzip モジュールを使用すると、Gzip 圧縮アルゴリズムを使用して、Apache サーバーによって公開された Web ページのコンテンツを圧縮し、クライアントのブラウザに送信できます。この圧縮により、実際にネットワーク上で送信されるバイト数が削減されます (送信のためのネットワーク I/O が節約されます)。最も明白な利点は、Web ページの読み込みを高速化できることです。
Web ページの読み込みを高速化する利点は、トラフィックを節約し、ユーザーのブラウジング エクスペリエンスを向上させることに加えて、もう 1 つの潜在的な利点は、Gzip と検索エンジンのクロール ツールとの関係が改善されることです。たとえば、Google は、gzip ファイルを直接読み取ることで、通常の手動クロールよりも高速に Web ページをクロールできます。 Google ウェブマスター ツールでは、sitemap.xml.gz がサイトマップとして直接送信されていることがわかります。 そして、これらの利点は静的コンテンツに限定されません。PHP 動的ページやその他の動的に生成されたコンテンツは、
Apache圧縮モジュールを使用して圧縮でき、他のパフォーマンス調整メカニズムや対応するサーバー側のキャッシュ ルールと組み合わせることで、大幅に改善できます。ウェブサイトのパフォーマンス。したがって、Linux サーバーにデプロイされた PHP プログラムの場合は、サーバーがサポートしている場合は Gzip Web 圧縮を有効にすることをお勧めします。
2. Web サーバー が HTTP 圧縮を処理するプロセスは次のとおりです。 1.
Web サーバーがブラウザから HTTP リクエストを受信した後、ブラウザが HTTP 圧縮をサポートしているかどうかを確認します ( Accept-Encoding 情報 ; 要求されたファイルの最新の圧縮ファイルが既に存在します 4. 要求されたファイルの圧縮ファイルが存在しない場合、
Web サーバーは、圧縮されていない要求されたファイルをブラウザーに返し、その圧縮ファイルを保存します。圧縮バッファ ディレクトリ内の要求されたファイルの内容。 5. 要求されたファイルの最新の圧縮ファイルが既に存在する場合、要求されたファイルの圧縮ファイルが直接返されます。
6. 要求されたファイルが動的ファイルの場合。 , Web サーバー はコンテンツを動的に圧縮してブラウザに返します。圧縮されたコンテンツは圧縮キャッシュ ディレクトリには保存されません。
3.
Apache
のgzip機能を有効にする Apacheでは圧縮にGzip圧縮アルゴリズムを使用するモジュールが2つあります:mod_gzipとmod_deflate。 Gzip Web 圧縮を使用するには、まずサーバーがこれら 2 つのコンポーネントのいずれかをサポートしていることを確認してください。 Gzip を使用するにはクライアント ブラウザのサポートも必要ですが、現在、IE、Mozilla Firefox、Opera、Chrome など、ほとんどのブラウザが Gzip をサポートしていますので、ご安心ください。 HTTP ヘッダーを調べることで、使用されているクライアント ブラウザーが gzip 圧縮をサポートしているかどうかをすぐに判断できます。送信された HTTP ヘッダーに次の情報が表示される場合は、ブラウザーが対応する gzip 圧縮をサポートしていることを意味します:
コードは次のとおりです: Accept-Encoding: gzip support mod_gzip Accept-Encoding: deflate support mod_deflate
Accept -エンコーディング: gzip、deflate は mod_gzip と mod_deflate の両方をサポートします
firebug として表示:
Accept-Encoding: gzip,deflate は mod_gzip と mod_deflate の両方をサポートします サーバーが Gzip コンポーネントのサポートを有効にしている場合は、http.conf または .htaccess でカスタマイズできます。以下は .htaccess 設定の簡単な例です: mod_gzip 設定: code As以下: # mod_gzip: OpenOpenApache設定ファイル httpd.conf #LoadModule deflate_module モジュール/ mod_deflate.so 先頭の # 記号を削除します コードは次のとおりです: 里
PDF については、状況に応じて次のファイル MIME タイプを追加できます。
、写真、音楽ドキュメントなどはすでに高度に圧縮された形式であるため、圧縮を繰り返しても効果はほとんどなく、逆に CPU の処理時間が増加し、ブラウザのレンダリングの問題が発生する可能性があります。だから必要ないんだよ
Gzip で再度圧縮します。上記の設定を行った後、返された HTTP ヘッダーを確認してください。以下の情報が表示されている場合は、返されたデータが圧縮されていることを意味します。つまり、Web サイト プログラムで設定された Gzip 圧縮が有効になります。
mod_gzip_on はい
mod_gzip_dechunk はい
mod_gzip_item_include ファイル (html?|txt|css|js|php|pl)$
mod _gzip_item_含むハンドラー ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip .*
mod_deflate 設定例:
# mod_deflate:
DeflateCompressionLevel 6 #圧縮率、6 が推奨値です。 FLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilter ByType DEFL ATE アプリケーション/xml
AddOutputFilterByType DEFLATE アプリケーション/rss+ xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE image/svg+xml
Content-Encoding: gzip
firebug ビュー: