サトウのブログ

IT関連のことを書いていきます

sessionとcookieでのクッキーの使われ方

Railsチュートリアルでsessionとcookieが出てきたがわかりにくかった。
どちらの説明にもクッキーが出てきてわかりにくかった感があるので、
sessionとcookieでのクッキーの特徴をまとめてみる。

sessionで使われるクッキー

  • セッションID+セッションデータ(例:ユーザID)で構成
  • メモリに保存されており、ブラウザを閉じると破棄される

(補足)クッキーの中にセッションデータも入れ込む方式はRailsでは「CookieStore」という。

cookieで使われるクッキー

  • トークン+ユーザを特定するデータ(例:ユーザID)で構成
  • ディスクに保存されており、ブラウザ閉じる閉じないに関係なく、保存期間が切れるまで残る

考察

最初はcookieを使う意味がわからなく、
セッションクッキーがブラウザを閉じても破棄されないようにすればいいじゃん・・・
と思っていたが、保存先(メモリorディスク)が違うというので納得した。
セッション張ってるときにサーバにリクエスト送る度にディスクアクセスしてたら遅くなるからメモリに保存するしかない。
ただ、ブラウザを閉じると割り当てられたメモリは解放するしかないから、破棄されてしまう。
一方、cookieで使われるクッキーはセッションを張り始めるときにしか使わないから、ディスクに保存してても速度的に問題ない。

参考HP