3

サーバーでzlibとZendOptimizerを有効にしていて、

zlib.output_compression

指令。サーバーでこのディレクティブを有効にする際の注意点はありますか?

4

4 に答える 4

8

まず、ボトルネックが何であるかを判断する必要があります(またはおそらく負荷がかかるでしょう)。
(透過的な)圧縮をオンにすると、CPUリソースをデータ(ネットワーク)スループットと交換します。したがって、次のことを考慮する必要があります。私のデータは(高度に)圧縮可能ですか?データをクライアントに転送するのにかかる時間はボトルネックですか?圧縮にどのくらいのCP​​Uリソースを費やすことができますか?スクリプトが使用する他のリソース(メモリ消費、データベース接続など)は何ですか?(重い)負荷がかかると、どのリソースがボトルネックになりますか?スクリプトの1つのインスタンスが別のインスタンスをブロックするのはいつ、どこで、どのくらいの期間ですか?などなど。

YSlowのようなツール、 xdebugに組み込まれているようなプロファイラー、apacheベンチマークツール、 apcのような(コード)キャッシュなどにも興味があるかもしれません。

于 2010-06-02T18:15:09.310 に答える
3

PHPコードを高速化するために実行できる最も効果的な方法は、オペコードキャッシュを実行することです。

ZendOptimizer+はその一例です。古いZendOptimizer( "+"なし)はコードオプティマイザーであり、オペコードキャッシュではありませんでした。オペコードキャッシュを使用しなかった場合、実際にはPHPコードの速度が低下する可能性がありました。

それを行った後、ボトルネックをテストするために多くのハードワークが発生します(他の人が述べているように)。ボトルネックを軽減するには、コードを慎重にリファクタリングする必要があります。ほとんどのパフォーマンスの専門家は、パフォーマンスの問題は、個々のコード行よりも貧弱なアプリケーションアーキテクチャによって引き起こされると言います。

複数回表示する必要があるコンテンツをキャッシュすることも、パフォーマンスを向上させるための一般的なソリューションです。ただし、キャッシュするコンテンツとその期間を決定することは、テストと実験を行い、判断を下す必要があるもう1つの領域です。

ボトルネックがPHPコードにまったくない可能性があることを考慮してください。データベースに適切なインデックスがない可能性があります。 実行する必要のあるクエリを指定して適切なインデックスを見つけることも、細心の注意を払った作業であり、テストが必要です。

また、頻繁にボトルネックがクライアントにある可能性があります。PHPコードがサーバー上で高速に実行されている場合でも、ページがブラウザーに非効率的に読み込まれ、パフォーマンスが低下していると認識される可能性があります。

IMHO、すべてのWebデザイナーと開発者は、SteveSoudersの本ブログを必読にする必要があります。

これは、質問していたzlib構成、およびYSlowGooglePageSpeedなどのクライアントパフォーマンス測定ツールにも関連しています。

于 2010-06-02T19:30:23.100 に答える
2

プロファイリングを学ぶ。
次に、ボトルネックを最適化します。

于 2010-06-02T18:03:50.997 に答える
1

出力圧縮がその方法です。圧縮レベルを1に設定します。これは、最大の節約/CPUオーバーヘッド比を提供するためです。デフォルトのレベルは1〜9のスケールで6です。これは、余分なバイト数を減らすと非効率になる可能性があります。

于 2010-06-29T01:08:20.810 に答える