
306
9
章 特殊な問題を解決するためのパターン
しかし、サーバのパフォーマンスをきちんと把握するには複数のリクエストが必要ですから、スクリ
プト
loadTest.js
を使って
200
ミリ秒間隔でリクエストを送ってみることにします。サンプルにある
ファイルは
URL
に接続するよう設定済みですから、次のコマンドを実行してください。
$ node loadTest
20
個のリクエストが完了するのにしばらく時間がかかります。テストの全実行時間をメモしておいて
ください。これから最適化を施してどれだけ時間が節約できるかを測定します。
9.2.2
非同期リクエストのバッチ処理
非同期処理を扱う場合、もっとも基礎的なレベルのキャッシュ処理は、同じ
API
に対する複数の呼
び出しをバッチ処理することで達成できます。考え方はきわめて単純で、非同期処理がまだ終わらな
いうちにもう一度非同期関数を呼び出すなら、新しいリクエストを作成するのではなく既に実行中の処
理にコールバックを追加
すればよいというものです。図9-1を見てください。
クライアント
A
クライアント
B
非同期処理 非同期処理
図9-1 同一入力での非同期処理の呼び出し
図9-1は
2
つのクライアント(
2
つの別々のオブジェクトでも、別々のウェブリクエストでもかまいま
せん)が「まったく同一の入力」で非同期処理を呼び出しているところを示しています。もちろんこのよ
うな状況では、この図に示したように
2
つのクライアントに対し別々に処理が開始され、異なる時間に
完了するというのが自然で