ホームページ  >  記事  >  バックエンド開発  >  PHP 実行速度向上完全ガイド (パート 2)_PHP チュートリアル

PHP 実行速度向上完全ガイド (パート 2)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:10:19678ブラウズ


Web コンテンツの圧縮 (顧客がより「楽しく」使えるようにする)

上記の 2 つの方法の後、PHP アプリケーションのパフォーマンスは大幅に向上したと思います。次は、別の側面から検討します。ダウンロード速度。アプリケーションが社内でのみ実行されており、すべての顧客がサーバーへの接続に 100Mb/s イーサネットを使用している場合、これは問題にならない可能性がありますが、一部の顧客が低速のモデム接続を使用している場合は、コンテンツ圧縮方式の使用を考慮する必要があります。 。 IETF 仕様によれば、ほとんどのブラウザは gzip コンテンツ圧縮をサポートしています。これは、Web コンテンツをクライアントのブラウザに送信する前に gzip を使用して圧縮できることを意味し、ブラウザはデータを受信するときに自動的に解凍し、ユーザーが元のページを表示できるようにします。同様に、Web ページのコンテンツを圧縮する方法もいくつかあります。

mod_gzip は、Remote Communications (http://www.phpbuilder.com/columns/www.remotecommunications.com) によって無料で提供される Apache モジュールで、静的な Web ページを圧縮できます。 Apache でコンパイルする (または DSO として使用する) だけで問題なく動作します。 Remotecommunications の関係者によると、mod_php、mod_perl などの動的コンテンツも圧縮できるそうです。しかし、試してみましたが、うまくいかないようです。 mod_gzip メーリング リストで、このバグは次のバージョン (バージョン 1.3.14.6f になると思います) で修正される予定であると読みました。ただし、静的コンテンツの圧縮には引き続き使用できます。

しかし、動的コンテンツも圧縮したいので、別の方法を見つける必要があります。 1 つの方法は、class.gzip encode.php (http://leknor.com/code/) を使用して、PHP スクリプトの最初と最後でこの PHP クラスを呼び出して、ページのコンテンツを圧縮することです。サイト全体でこのような圧縮が必要な場合は、php.ini ファイルの auto_prepend および auto_append でこれらの関数を呼び出すことができます。これは非常にうまく機能しますが、負荷の高いサイトでは明らかに多少のオーバーヘッドが発生します。どのように動作するかについて詳しくは、クラス コードを参照してください (少なくとも zlib サポートを使用して PHP をコンパイルする必要があります)。中の著者の説明書も非常に詳しく書かれており、知りたいことはすべてわかります。

最近、PHPの出力バッファリングに関する記事も見ました。つまり、PHP4.0.4 では新しい出力バッファ処理メソッド ob_gzhandler が導入されており、その機能は上で紹介したクラスと同じですが、 php.ini で次の構文を使用するだけで済むという点が異なります。

output_handler = ob_gzhandler ;

これにより、PHP の出力バッファリング機能が有効になり、送信されるすべてのものが圧縮されます。いくつかの特別な理由により、ここで設定せず、必要な場合のみデフォルト設定を変更する場合 (圧縮なし)、圧縮する必要がある PHP ソース コード ディレクトリ内の .htaccess ファイルを変更するだけです。使用される構文は次のとおりです。次のように:

php_value Output_handler ob_gzhandler

...または、次の方法で PHP コード内で直接呼び出します:

ob_start("ob_gzhandler")

この出力バッファリングの方法は非常に優れており、サーバーへの追加のシステム オーバーヘッド。この方法を使用することを強くお勧めします。その変化は次の例で説明できます。顧客が 28.8K モデムを使用している場合、このプロセスの後、突然 ISDN アクセスに切り替わったと考えるでしょう。注意すべき点は、Netscape Communicator は画像圧縮をサポートしていないため、表示されないことです。したがって、すべての顧客が Internet Explorer を使用していない限り、jpeg および gif 画像の圧縮を無効にする必要があります。他のファイルの圧縮には問題はありませんが、特にブラウザが珍しいプラグインを使用している場合や、めったに使用されないブラウザの場合は、テストすることをお勧めします。

その他の便利なもの...

Zend Technologies のオンライン ストアは今年 1 月 24 日に開設され、PHP に関連した興味深い製品を販売しています。前述の Zend Cache、Zend Encoder (簡単に言うと、ソース コードの漏洩を心配せずに顧客に販売できるように、コンパイルされたクラスを生成できる PHP コードのコンパイラーです。これらのクラスを実行する必要がある Web サーバーで (デコードには Zend Encoder Runtime を使用します)、Zend Ide (多くの強力な機能を備えた PHP 用の統合開発環境)、および PHP 開発者向けのサポート サービスを提供します。

結論

この記事で説明したテクニックを使用すると、サイトのパフォーマンスを大幅に向上させることができますが、次の点に注意してください:

1. ボトルネックは PHP ではない可能性があり、すべてのオブジェクトを調べる必要があります。アプリケーション (データベースなど)

2. Web サーバーのパフォーマンスには限界があるため、サーバーのアクセス数が多いことが原因である可能性もあります。アップグレードするか、負荷分散の使用を検討してください (多額の費用がかかります)

3. 100Mb/s LAN では、PHP アプリケーションは非常に優れたパフォーマンスを発揮する可能性があります。遅いモデムを使用するユーザーを考慮する必要があります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/314280.html技術記事 Web コンテンツの圧縮 (顧客がより「楽しく」使えるようにする) 上記の 2 つの方法の後、PHP アプリケーションのパフォーマンスは大幅に向上したと思います。今度は、別の側面から検討します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。