ステートレスとステートフル
HTTPはシンプルなプロトコルであり、特徴として「ステートレス性」があります。ステートレスとは状態を保持しないということの意味で、クライアントとサーバーの一往復分で完結しその後も状態を維持することはありません。
状態を保持することの例としてよく以下のようなことがあります。
客:「ハンバーガーください」
店員:「ハンバーガーですね、一緒にポテトはどうですか?」
客:「ハンバーガーと一緒に飲み物もください」
客がクライアントであり店員がサーバーです。ステートレスなやりとりではサーバーは「ハンバーガーください」という情報のことをサーバー側は「ハンバーガーと一緒に飲み物もください」をリクエストとして送ったときには忘れてしまってます。このがステートレスです。このときの「ハンバーガーください」という情報を保持しつづける状態のことをセッション状態といいます。
逆に常に状態を保持しつづけることをステートフルといいます。
ステートレスの利点、欠点
ステートレスの利点としてサーバー側の処理を軽減できることがあります。もしクライアントの状態を保持し続けた場合何千人ものセッションを持つことになるためサーバーに負担が大きくなります。ですがステートレスは状態を保持しつけることがないためサーバーの負担が軽くなります。
欠点として状態を保持しないためクライアントの情報を毎回DBに問い合わせて照合する必要があります。これを毎回繰り返すのはユーザーには手間だし毎回ユーザー情報をユーザーが記入するのはしんどいことです。