ネットワーク遅延とは、データパケットがある場所から別の場所に移動するのにかかる時間のことです。遅延を低減することは、優れたユーザーエクスペリエンスを構築する上で重要な要素です。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
遅延とは、ネットワーク上のある地点から別の地点へデータが通過するのにかかる時間のことです。ニューヨークにあるサーバーAがロンドンのサーバーBにデータパケットを送信したとします。サーバーAは04:38:00.000 GMTにパケットを送信し、サーバーBは04:38:00.145 GMTにパケットを受信します。この経路における遅延量は、この2つの時刻の差である0.145秒、つまり145ミリ秒です。
多くの場合、遅延はユーザーのデバイス(「クライアント」の端末)とデータセンターの間で測定されます。この測定値は、開発者がWebページやアプリケーションがユーザーに読み込まれる時間を理解するのに役立ちます。
インターネット上のデータは光速で移動しますが、インターネットインフラストラクチャ機器による距離や遅延の影響により、レイテンシーを完全に排除することはできません。ただし、レイテンシーを最小化することは可能であり、最小化する必要があるのです。レイテンシーが大きくなると、Webサイトのパフォーマンスが低下し、SEOに悪影響を及ぼし 、さらに、ユーザーがサイトまたはアプリケーションから完全に離れてしまう可能性があります。
ネットワーク遅延の主な要因の1つは距離で、具体的には、要求を行うクライアントデバイスとそれらの要求に応答するサーバー間の距離です。Webサイトがオハイオ州コロンバスのデータセンターでホストされている場合には、(約100マイル離れている)シンシナティのユーザーからの要求に対して、5~10ミリ秒以内でかなり素早く応答します。一方、(約2200マイル離れている)ロサンゼルスのユーザーからのリクエストは、40〜50ミリ秒近くかかり、到着するまでに時間がかかります。
数ミリ秒の増加はそれほど多くないようにみえるかもしれません。しかし、クライアントとサーバーが接続を確立するために必要なすべての前後通信、ページの合計サイズと読み込み時間、さらに、データが途中で通過するネットワーク機器の問題が組み合わさり、遅延はさらに増幅します。クライアントが要求を送信してからクライアントデバイスに応答が到達するまでに要する時間はラウンドトリップタイム(RTT:Round Trip Time)と呼ばれます。データは往復の両方向に移動する必要があるため、RTTの遅延は2倍に相当します。
インターネットを通過するデータは、通常、1つだけではなく複数のネットワークを通過する必要があります。HTTP応答が通過する必要のあるネットワークの数が多いほど、遅延の機会が増えます。たとえば、ネットワーク間でデータパケットが交差すると、相互接続点(IXP:Internet Exchange Points)を通過します。そこでは、ルーターはデータパケットを処理してルーティングする必要があり、時にはルーターはそれらをより小さなパケットに分割する必要があり、そのすべてがRTTに数ミリ秒を追加します。
レイテンシー、帯域幅、スループットはすべて相互に関連しますが、これらの測定対象はいずれも異なります。帯域幅は、一定時間内にネットワークを通過できるデータの最大量です。スループットは、一定時間内に実際に通過するデータの平均量です。スループットは、レイテンシーやその他の要素の影響を受けるため、帯域幅と必ずしも同等ではありません。レイテンシーの測定値は時間であり、一定時間内にダウンロードされるデータの量ではありません。
CDN(コンテンツ配信ネットワーク)の使用は、レイテンシーを削減するための主要なステップです。CDNは、静的コンテンツをキャッシュし、ユーザーに提供します。(Cloudflare CDNは、Cloudflare Workersと同様に動的コンテンツをキャッシュができです)。CDNサーバーは複数の場所に分散されているため、コンテンツはエンドユーザーのより近くに保存され、アクセスするためにユーザーが遠くのサーバーにアクセスする必要はありません。つまり、Webページの読み込みに要する時間が短縮され、Webサイトの速度とパフォーマンスが向上します。
遅延以外の要因によっても、パフォーマンスが低下する可能性があります。Web開発者は、レンダリングブロッキングリソースの数を(JavaScriptを最後に読み込むなどして)最小限に抑えたり、画像を最適化して読み込み時間を短縮したり、可能な限りファイルサイズを小さくすることなどができます。コードの縮小化は、JavaScriptとCSSファイルのサイズを縮小する方法のひとつです。
最初に特定のアセットを戦略的に読み込むことで、知覚されるパフォーマンスを向上することができます。Webページは、スクロールダウンせずにブラウザーウィンドウに収まるWebページ領域 (「above the fold」)を先に読み込むように設定できます。これにより、ユーザーはページの読み込みが完了する前にページに書かれた内容を読み始めることができます。Webページはまた、遅延読み込みとして知られている技術を使用して、必要なだけアセットを読み込むことができます。これらのアプローチは、実際にはネットワークレイテンシーを改善するわけではありませんが、ページ速度に対するユーザーの認識を改善します。
ネットワークレイテンシー(ネットワークパフォーマンスの低下)は、サーバー側ではなくユーザー側の問題によって発生することがあります。ネットワークパフォーマンスの低下が一貫して発生する場合には、消費者はいつでも、より多くの帯域幅を購入することができますが、帯域幅はWebサイトのパフォーマンスを保証するものではありません。WiFiではなくEthernetに切り替えると、インターネット接続の一貫性が高まり、通常はインターネットの速度が向上します。また、ユーザーはファームウェアのアップデートを定期的に行い、必要に応じて機器を交換することで、インターネット機器が最新であることを確認する必要があります。