sessionとは
セッションとは、一連の処理の始まりから終わりまでを表す概念のこと。
セッションという定義は広く、さまざまなところでセッションという用語が使われる。
「なるほど。わからん。」
・セッションを理解するにはまずステートフルとステートレスを知る必要がある。
ステートフルとは、あるリクエストをしたら、レスポンス(対応や反応、応答内容等)が変わるもの。特に、それ以前のやり取りの状況(ステート)によって回答が変わるもののこと。
ステートレスとは、あるリクエストをしたら、必ず同じ結果になるもの。それまでのリクエスト・レスポンスのことは一切考えず、今来たリクエストを額面通りに受け取って回答するもののこと。
具体的な例で考えてみる。
のび太とドラえもんのやりとりがステートフルだった場合
の「ドラえもん来週テストだから暗記パンだして」
ど「今在庫切れで入荷待ちなんだよ。テストまでには間に合うはず」
の「明日テストだよ。例の物は?」
ど「はい。でも自分で勉強しないと成長しないよ」
このやりとりのように「WEBブラウザ(のび太)」と「WEBアプリケーション(どら)」間ではリクエストとレスポンスのやりとりをして処理している。
次のステートレスの場合と比べるとわかりやすい。
のび太とドラえもんのやりとりがステートレスだった場合
の「ドラえもん来週テストだから暗記パンだして」
ど「今在庫切れで入荷待ちなんだよ。テストまでには間に合うはず」
の「明日テストだよ。例の物は?」
ど「例の物ってなあに」
の「…」
このようにステートレスでは前回のやりとりを保存していないため例の物というデータがなければレスポンスすることはできない。
上の二つの例を比べてわかるように、前のやりとりを記憶しているステートフルの方がWEBアプリケーションを利用する上で都合がいい。
しかし、WEBは基本的にステートレスである。ステートフルにするために使用するのがsessionだということ。
※ステートレスであることにもメリットがありますがここではセッションについての説明なので省かせていただきます
sessionを使用することによって生じるデメリットもある。
・sessionはサーバー側にメモリの空間を作るため、アクセスするユーザーの増加に比例してサーバー側のメモリを圧迫してしまう
・ハッカーにsessionによって作られたサーバー側にある重要なデータ(住所。クレカ番号など)が奪われる危険性がある
以上の理由からsessionの使用はあまり好まれない傾向にあるらしい
また、セッションと一緒に考える必要があるクッキーについても書いていきたい。
今日もいい勉強したな!
認識に間違いがあれば教えていただけるとありがたいです。