LoginSignup
12
12

More than 5 years have passed since last update.

セッションとキャッシュごっちゃになってない?

Last updated at Posted at 2018-09-14

タイトルのようなことを言われてしまったので、今一度まとめ直しました。

セッション

セッションって?

セッションは、ある一連の流れの始まりから終わりまでのこと!!
例えば、ログインからログアウトまでの一連の操作等。

セッションは、ブラウザ(クッキー※後述)でIDのみ管理されており、IDをサーバに渡すことで、
一時的保存されたデータを呼び起こすことができます。

セッションを使う理由って何なの?

HTTPプロトコルには状態を管理する方法がためです。(ステートレス)
なので、どんな人が何回アクセスしたとかどういう経緯でアクセスしたか等の
情報を、HTTPプロトコルは保持できない...

セッションっての内容はどこに保存されているの?

セッションに保存された内容は、Webサーバーにファイルとして保存されている。
しかし、商用利用するにあたっては、最低限DBで管理します。
インメモリDB(※1)、例えば、Redisにのせてしまう手法があります。
要は、保存して取り出せれば、どこでもよいですね。

(※1)メモリ上にデータを保存するタイプのデータベース

そのユーザかどうかは、どうやって判別するの?

ブラウザにセッションIDがCookieに記録されます。
そのセッションIDとサーバ上のファイル(DB, Redisなど)が照合されてセッション内容を取り出す:point_up_tone1:

キャッシュ

キャッシュって?

一度アクセスしたサイトのデータを一時的に保管し、
次回より同じページにアクセスした際の表示を速くする仕組みのこと:football:

キャッシュの扱いってむずくない?

キャッシュを使用するに当たって、大事なことは、
キャッシュ対象のものをどの時点でExpire(失効、有効期限)するかということ。
対象によっては、常に最新ではなくてよい、最新であってほしいということがあるので、
そこはキャッシュ対象となるものがどの時点でExpireするかを考える必要があります。

その時に、大事になることが、
「次回アクセス時の表示を速くし、無駄なリクエストを減らす」
↑に尽きるかと思います。:fist:
キャッシュを使用するに当たっては、これが大原則だと思うので、
これを念頭において、キャッシュ設計をします。

Redisをキャッシュとして使う時に、気をつけること

あくまでキャッシュは、「一時的なデータの保存先」という位置づけなので、
データの永続化ができるからといって、ストレージ的な使い方をしてはいけない。←大事:raised_hand:
「いつ消えてもよいデータを管理する」という軸で設計すると、良き:clap:

クッキー(おまけ)

クッキーって?

クッキーは、ブラウザに保存されるWEBデータです。
ブラウザのクッキー情報を削除すると、ログイン仕直しになるのは、
ブラウザ上に保存されたデータが無く、ログインできなくなるため。

一言で言うと、
Webサーバからブラウザに送られる、ユーザのデータを保存しておくためのファイルのこと。

デメリットってあるの?

共用パソコンで個人情報を流出してしまうこと。
借りてるPC等で、サイトにログインした場合は、クッキーは削除しておきましょう:umbrella2:

クッキーっていつもらえんの?

ウェブサイトを提供するサーバからもらえます。

クッキーもらっても送ってるつもりないんだけど。。。

サーバへアクセスするたびに毎回自動で送信しています。

クッキーってずっと持ってるの?

指定期限があるので、それまで有効です。

12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12