HTTP とは?
HTTP (Hypertext Transfer Protocol) は、Web 上での通信に使用される基盤となるプロトコルです。クライアントとサーバーの間で情報がどのように要求され、配信されるかを定義します。クライアントは通常、Web ブラウザ、モバイルアプリケーション、または情報を取得する必要があるその他のソフトウェアであり、サーバーはその情報を保存して配信するシステムです。
Webサイトにアクセスしたり、画像を読み込んだり、API からデータを取得したりするたびに、HTTP がそのプロセスに関与します。このプロトコルによって、リクエストを送信し、レスポンスを返す標準的なプロセスが規定されます。これにより、多くの異なるシステム、ブラウザ、サーバーがインターネット上で安定したやり取りを行うことができます。
HTTP はリクエスト/レスポンスモデルに従って機能します。まず、クライアントがWebページやファイルなどのリソースを要求するリクエストをサーバーに送信します。サーバーはリクエストを受信してそれを処理し、要求されたコンテンツまたはリクエストの結果を説明するメッセージを含むレスポンスを返します。
HTTP リクエストとは?
HTTP リクエストは、クライアントがリソースを取得または利用したいときにサーバーに送信するメッセージです。リソースには、Webページ、画像、スクリプト、動画、またはアプリケーションや API によって使用される構造化データが含まれます。
たとえば、ユーザーがブラウザにWebサイトのアドレスを入力すると、ブラウザはそのサイトをホストするサーバーに対して HTTP リクエストを生成します。サーバーはリクエストを受信し、どのリソースが要求されているかを判断したうえで、ページの表示に必要なコンテンツを含むレスポンスを返します。
HTTP リクエストには、クライアントによるリクエストの内容と処理方法をサーバーが理解するのに役立つ複数の情報が含まれます。リクエストにはメソッドが含まれ、要求されている処理方法の種類が、リソースの URL またはパスとともに指定されます。また、ヘッダーも含まれ、クライアントの種類、受け入れ可能なデータ形式、認証情報など、追加のコンテキストを提供します。
場合によっては、クライアントがサーバーにデータを送るためのボディがリクエストに含まれることもあります。これは通常、ユーザーがフォームを送信したり、ファイルをアップロードしたり、API リクエストを通じて構造化データを送信したりする場合に発生します。
これらのコンポーネントが連携することで、サーバーはリクエストを正確に解釈し、適切に応答できます。
HTTP リクエストの種類
HTTP は、クライアントがサーバーに実行させたいアクションを示す複数の異なるリクエストメソッドをサポートしています。各メソッドは、リソースとの特定の種類のインタラクション向けに設計されています。
最も一般的に使用されるメソッドは GET です。GET リクエストは、サーバー上で変更が行われることなく、クライアントがサーバーから情報を取得したい場合に使用されます。ほとんどのブラウザでは、Webページや画像、その他の静的アセットを読み込む際にこのメソッドが使用されます。GET リクエストはデータの取得のみを目的としているため、多くの場合、ブラウザやその他のネットワークインフラストラクチャによってキャッシュされ、パフォーマンスの向上に役立ちます。
広く使用されているもう1つのメソッドは POST で、通常はクライアントがサーバーにデータを送信する必要がある場合に使用されます。POST リクエストは、フォームの送信、ファイルのアップロード、またはアプリケーション内で新しいリソースを作成する際によく使用されます。GET リクエストとは異なり、POST リクエストには通常、送信されるデータを含むボディが含まれます。また、既存のリソースを更新するために設計されたメソッドもあります。PUT リクエストは通常、リソースを完全に置き換える場合や更新する場合に使用されます。対照的に PATCH リクエストは、既存のリソース全体を置き換えるのではなく、その一部のフィールドのみを変更する必要がある部分更新に使用されます。
最後に、DELETE メソッドによって、クライアントはサーバーにリソースの削除を要求できます。このメソッドは、アプリケーションがユーザーアカウント、レコード、保存されたコンテンツなどのデータを管理する必要がある API で一般的です。
これらの各メソッドは、Web 上でクライアントとサーバーがデータを扱う方法を定義する役割を担います。これにより、アプリケーションは一貫した通信パターンを維持しながら、さまざまな操作を実行できます。
HTTP リクエストと CDN : CDN による HTTP リクエストの処理方法
コンテンツ配信ネットワーク (CDN) は、Web アプリケーションのパフォーマンス、信頼性、スケーラビリティを向上させるために設計された分散型サーバーネットワークです。ユーザーとオリジンサーバーの間に位置する CDN は HTTP の仕組みと密接に関係し、本来であればオリジンインフラストラクチャに直接送られるはずの多くの HTTP リクエストを受信して処理します。
ユーザーが CDN を使用するサイトでホストされているリソースに対して HTTP リクエストを行うと、そのリクエストは通常、CDN 内で最も近いエッジサーバーにルーティングされます。これらのエッジサーバーは多くの地理的地域に戦略的に配置されているため、ユーザーは物理的により近いサーバーに接続できます。
リクエストがエッジサーバーに到達すると、CDN は要求されたリソースがすでにそのキャッシュに保存されているかどうかを確認します。リソースが以前にキャッシュされている場合、CDN はすぐにそのコンテンツをユーザーに返すことができます。これにより、コンテンツをオリジンサーバーから取得する必要がなくなるため、レイテンシが大幅に短縮されます。
リソースがキャッシュされていない場合、CDN はリクエストをオリジンサーバーに転送します。オリジンサーバーはリクエストを処理してレスポンスを CDN に返します。その後、CDN によってレスポンスがユーザーに配信されます。その際、そのリソースのコピーをキャッシュに保存することで、同じコンテンツに対する今後のリクエストをより迅速に処理できるようになります。
CDN によって HTTP のパフォーマンスが向上する理由
CDN は、HTTP リクエストとレスポンスの通信距離を短縮することで、Web パフォーマンスを向上させます。遠く離れた場所にあるオリジンサーバーではなく近くのエッジサーバーからコンテンツを配信することによって、ページの読み込みが加速し、より応答性の高いアプリケーションをユーザーに提供できます。
キャッシュも、もう1つの重要な要素です。画像、スタイルシート、スクリプト、静的ページなど、多くの Web アセットは頻繁には変更されません。これらのリソースをエッジに保存することで、CDN はオリジンサーバーを介さずに繰り返しのリクエストに応答できます。これにより、オリジンインフラストラクチャの計算負荷が軽減され、動的またはキャッシュされていないリクエストの処理に集中できるようになります。
CDN は、Webサイトが大量のトラフィックを処理する際にも役立ちます。プロダクトローンチ、フラッシュセール、SNS での急な拡散などによって大量のトラフィックが発生した際、CDN が受信リクエストを吸収し、それらをグローバルインフラストラクチャ全体に分散できます。これにより、オリジンサーバーが過負荷の状態になるのを防ぎ、サイトの可用性を維持しやすくなります。
CDN はパフォーマンスの向上に加え、悪意のあるトラフィックをフィルタリングして分散型サービス拒否 (DDoS) 攻撃を軽減し、リクエストを検証するルールを適用することでセキュリティを強化することもできます。
Fastly を使用するメリット
Fastly の CDN は、エッジで HTTP/3 と QUIC をサポートしているため、これらに対応しているブラウザは従来の TCP ベースのプロトコルよりも高速かつ効率的なトランスポートを使用して接続できます。Fastly で HTTP/3 を有効にすることで、接続確立時間の短縮、不安定なネットワークでのパフォーマンス向上、エンドユーザーへのより迅速なコンテンツ配信が可能になります。
Fastly は、グローバルなエッジネットワーク全体で HTTP/3 をサポートします。これにより、ページを読み込む際のレイテンシを削減し、ストリーミングパフォーマンスを向上できるだけでなく、QUIC で使用される組み込みの TLS 1.3 暗号化を通じてセキュリティを強化できます。こうした改善により、組織は既存の HTTP インフラストラクチャとの互換性を維持しつつ、世界中のユーザーに、より高速でレジリエントなデジタル体験を提供できます。