応答時間とは
応答時間は、要求してから処理結果が返り始める、または返り終えるまでの時間です。英語ではresponse time(レスポンス・タイム)と呼びます。ただし、どの瞬間を開始・終了とするかで値が変わるため、単位だけでなく測定区間も一緒に読みます。
Webページなら、操作、URLの処理、DNS、接続、暗号化、要求送信、サーバー処理、応答転送、画面描画が連なります。「サーバーが返し始めるまで」と「利用者が内容を使えるまで」は同じではありません。
応答時間という一つの数字には、通信経路だけでなく、端末内の待ち時間、サーバーの待ち行列と処理、本文の転送、ブラウザーの描画が含まれ得ます。比較する前に測定点をそろえます。

一つの要求を五つの節目に分ける
- 操作利用者が要求を始める
リンク選択や送信操作。アプリ内部の準備や待機を含める測定もある
- 送信要求をネットワークへ出す
DNS、接続、TLSが未完了なら、その前処理が先に必要になる
- 先頭応答の最初の1バイトを受ける
要求送信後からここまでをTTFBとして扱う測定が多い
- 完了応答本文を受け終える
本文の大きさ、帯域、損失、再送が転送区間へ影響する
- 利用可処理・描画を終え、結果を使える
解析、復号、画像処理、スクリプト実行、画面更新を含み得る
TTFBは、サーバー処理時間だけではない
TTFB(Time To First Byte/タイム・トゥ・ファースト・バイト)は、一般に要求を開始してから応答の最初のバイトを受けるまでの時間です。測定ツールによってはナビゲーション開始から数え、DNSや接続も含めます。別のツールは要求送信完了から数えます。
TTFBには、端末と相手のRTT、サーバー手前の待ち、サーバー処理、応答先頭の転送が重なります。TTFBだけを見て「サーバーCPUが遅い」とは断定できません。接続再利用の有無、キャッシュ、地域、認証状態をそろえて分解します。
全体の応答時間は、待ち時間と処理時間と転送時間に分かれる
要求がすぐ処理されるとは限りません。端末の接続枠、プロキシ、ロードバランサー、アプリ、データベースにはそれぞれ待ち行列があります。負荷時だけ遅くなるなら、実行時間より輻輳や待ち時間が増えている可能性があります。
応答本文が大きい場合は、先頭が届いた後の転送時間も無視できません。転送はスループット、パケットロス、TCPやQUICの再送、端末の読み取り速度に左右されます。小さなAPI応答と動画ファイルを同じ尺度で評価しません。
Server-Timingは、サーバー内の内訳を伝える手掛かりになる
WebサーバーはServer-Timing(サーバー・タイミング)ヘッダーで、アプリ処理やデータベース処理などの測定値をブラウザーへ伝えられます。これは運営者が定義して送る診断情報であり、すべてのサイトにあるわけではありません。
値があっても、サーバー全体の待ち時間を完全に表すとは限りません。計測区間、単位、サンプリング、公開してよい名称を運営側で決めます。利用者側のNetwork Timingと突き合わせると、経路と処理のどちらが増えたかを追いやすくなります。
キャッシュとService Workerは、要求の経路を変える
ブラウザーキャッシュから再利用した応答は、インターネット上のサーバーへ届かず完了する場合があります。Service Worker(サービス・ワーカー)はブラウザー内で要求を受け、キャッシュを返したり別の要求へ切り替えたりできます。速い結果でも、同じ経路を測ったとは限りません。
初回表示と再表示、キャッシュ有効と無効、接続の新規作成と再利用を分けます。CDNの近い拠点から返る場合も、元のサーバーまでの応答時間とは異なります。
平均値だけでなく、分布と失敗も読む
10回のうち9回が100 ms、1回が3秒なら、平均だけでは待たされた体験が薄まります。中央値、95パーセンタイル、最大付近、タイムアウト率を分けます。パーセンタイルは、測定値を小さい順に並べたときの位置を示します。
対象、開始点、終了点、接続再利用、キャッシュ、地域、要求内容、同時数、時刻を記録し、成功と失敗を同じ母集団で数えると再現可能になります。短い合成テストと実利用の計測は目的が違うため、別々に保管します。
仕様の確認資料:W3C Navigation Timing Level 2、W3C Server Timing、RFC 9110「HTTP Semantics」