1

私のサイトでは、特定のAJAXファイル(UIの核心)の平均遅延(バックアップしていない場合など)が約150ミリ秒です。サーバーサイド/データベースのトリックをいくつか実行することで、これを約250ミリ秒から短縮しました。最後のトリックとして、実際のP​​HP / MySQL部分の現在の合計約30ミリ秒から、さらに10ミリ秒ほど短縮できると思います。ページ。

私はkeep-aliveを使用しているので、sslハンドシェイクはほぼ完全に機能しなくなったと思います(ただし、すぐにSPDYに移行したいので、最初のハンドシェイク後にどのように役立つかはわかりません)。

pingを実行すると、平均で約55ミリ秒になります。

ファイルの最初でMySQLに接続し、最後で閉じます。私はそれがおよそ10msの費用がかかるとかなり確信しています。

では、残りの約55ミリ秒はどこから来るのでしょうか。

これは完全に強迫的に見えるかもしれませんが、これは急速な動的ページネーションのためであり、遅延の各ミリ秒によって効果が大幅に低下します。

よろしくお願いします!

4

2 に答える 2

2

HTTP接続が確立されている場合は、pingとほぼ同時に単一の単純で短いHTTPリクエストを実行できるはずです。

これをテストするには、静的ファイルを取得するのにかかる時間を測定します。

次に、ライブラリを使用しないPHPページからデータの小さなチャンクを取得してみます。

次に、出力を変更せずに、requireとライブラリを追加してみてください。これは重要な場合があります。たとえば、Zendとそのパッケージのいくつかを使用すると、xcacheと一般的に高速なシステムで40ミリ秒かかります。PHPの実行方法を変更したい場合があります。たとえば、apache prefork mod_phpは新しいプロセスを開始する必要があり、phpはリクエストごとにライブラリをロードする必要があります。fastcgiに切り替えると、必要なライブラリをプリロードし、データベース接続を事前に開いて、認識されるレイテンシから対応する時間コストを取り除くことができます。

次に、いくつかのデータベースクエリを追加します。

次のAJAXへのアップグレード。

現在、AJAXは通常POSTリクエストを作成します。これは、HTTP 1.1ではExpect:100を意味します-ヘッダーを続行し、ラウンドトリップをもう1つ追加します。そのヘッダーを無効にしてみてください。

最後に、クエリと応答を記録し、不要なものをすべて取り除いてください。理想的には、要求と応答をそれぞれ1K未満にする必要がありますが、接続が維持されている場合、tcpウィンドウが大きくなり、しばらくすると、たとえば16Kメッセージをプッシュしても問題ない場合があります。リクエストは比較的簡単です。通常は小さめで、不要なCookieを削除するなどです。データであるため、応答は難しくなります。フォーマットやスタイルなど、クライアント側で実行できることを行わずに、実際に使用されているデータのみを圧縮または送信してみてください。

于 2013-01-22T12:33:49.310 に答える
1

パフォーマンスの問題に関するすべての質問に対する唯一の答えは、プロファイラーを使用することです。好み、プロファイラーの機能、およびその他の理由に応じて、ツールのリストから選択できます (リストには、私が使用したり聞いたりしたことがあるツールのみが含まれています)。

于 2013-01-10T01:54:10.770 に答える