👌
インターネット概論~Cookie~
Cookie
HTTPはステートレスなプロトコルのため、状態管理ができません。たとえば、ECサイトでのカート機能は実現できません。そこで、状態管理を持たせるために追加せれた機能がCookieです。
Cookieの仕組みは以下のとおりです。
- クライアントからWebサーバに初回リクエストを送信する
- WebサーバーがクライアントにCookieの値を設定するレスポンスを返す
- クライアントはCookieの値を保存し、WebサーバーへのリクエストにCookieの値を含める
- WebサーバーはCookieの値を読み込み、コンテンツを返す。必要に応じて新たなCookieの値を設定する
- 3以降を繰り返し
同一コンテンツの送信を回避する
クライアントがWebサーバーに接続する際は、基本的には毎回リクエストを送ってレスポンスを返します。しかし、コンテンツによっては変更頻度の低いものもあり、クライアント側でキャッシュしておくことで、不要な通信を減らすことができます。
コンテンツの中身の判別方法として、最終更新時間を使う方法と、ユニークな識別子を使う方法があります。
最終更新時間を使う方法
- 初回アクセス時に、最終更新時間を取得する
- 2回目以降のアクセスで前回の最終更新時間を送信する
- Webサーバーで最終更新時間を比較し、更新がなければコンテンツの送信をしない
ユニークな識別子を使う方法
- 初回アクセス時に、Etagを取得する
- 2回目以降のアクセスでEtagを送信する
- WebサーバーでEtagを比較し、更新がなければコンテンツの送信をしない
Etagの生成にはコンテンツの中身が使用され、コンテンツの中身が変わるとEtagの値も変わります。
どちらの方法も、行っていることはほとんど変わりません。しかし、Etagと最終更新日時のどちらも使用した場合には、Etagが優先されます。Etagのほうがより厳密に処理できるためです。
バーチャルホスト
Webサーバーでは、通常1つのWebアプリケーションしかホスティングできません。しかし、Webアプリケーションが増えるたびに、サーバーを追加するのは大変です。
そこで、1つのWebサーバーから複数のWebアプリケーションが提供できる機能が追加されました。それが、バーチャルホストです。
Webサーバーは、Hostヘッダーフィールドの値で、どのホスト名でアクセスされたのかを判断できるようになります。このホスト名の情報でWebサーバーは複数のアプリケーションのホスティングができるようになります。
Discussion