💾
CookieとLocalStorageとSessionStorageの違い
この記事の目的
- CookieとLocalStorageとSessionStorageの基礎を理解する
- それぞれの違いを整理して理解する
- 他人に説明できるようになる
Cookieとは
- サーバーがユーザーのウェブブラウザーに送信する小さなデータ
- 保存期間を設定することが出来る(数分〜数年まで自由)
- データ容量は4KBと小さい
- リクエストのたびに自動送信されるため、通信量やパフォーマンスに影響することもある
LocalStorageとは
- Web Storage APIの一種
- 物理的にデータをユーザーの端末に保存するので、オフラインでの利用が可能
- データ容量は約5MB
- ブラウザを閉じてもデータが消えない
- JavaScriptから簡単にアクセスできるため、セキュリティリスクが高い
SessionStorageとは
- Web Storage APIの一種
- 1セッション(ブラウザタブごと)で有効
- タブやウィンドウを閉じるとデータは消去される
- データ容量は約5MB
- タブ間でデータ共有はできない
それぞれのデータの取得・保存例
Cookie
// Cookieの保存(有効期限を指定)
document.cookie = "username=Taro; max-age=3600"; // 1時間有効
// Cookieの取得(全Cookie文字列)
console.log(document.cookie);
LocalStorage
// 保存
localStorage.setItem("theme", "dark");
// 取得
const theme = localStorage.getItem("theme");
console.log(theme); // "dark"
// 削除
localStorage.removeItem("theme");
SessionStorage
// 保存
sessionStorage.setItem("keyword", "犬");
// 取得
const keyword = sessionStorage.getItem("keyword");
console.log(keyword); // "犬"
// 削除
sessionStorage.removeItem("keyword");
それぞれの使い分け
Cookie
- 有効期限付きでデータを保存したい場合
- サーバーサイドでもデータを利用したい場合
使用例:
- 多言語サイトでの言語設定
- 「ログイン状態を保持する」チェックボックス
LocalStorage
- 長期的にデータを保存したい場合
- オフラインでもデータを使いたい場合
使用例:
- 閲覧履歴や「最近見た商品」の保存
- テーマカラーやレイアウト設定の保存
SessionStorage
- 一時的にデータを保存したい場合
- タブを閉じてデータを消去したい場合
使用例:
- 検索条件や入力中フォームの一時保存
- ショッピングサイトでの一時的なフィルター条件
まとめ
今回は勉強のために、クライント側にデータを保存する3つの主要な仕組みについてまとめました。
基礎的な部分は理解できましたが、今後は実装に落とし込むところまで活用していきたいと思います!
参考
Discussion