クッキー、localStorage、sessionStorageの違いと使い方

クッキーはブラウザがサーバーにリクエストを送る際に情報を保持する仕組みです。

HTML5のWebストレージにはlocalStorage(永続ストレージ)とsessionStorage(セッションストレージ)の2つのAPIが提供されます。

Webストレージはクッキーの制約を克服することを目的としており、サーバーへの送信を伴わないクライアントサイドでのデータ操作に適しています。

共通点

  • すべてブラウザに保存される
  • 同一オリジンポリシーが適用される

主な違い

ライフサイクル

  • クッキー:expires属性で有効期限を設定可能。設定なしの場合、ブラウザを閉じると削除
  • localStorage:手動で削除しない限り永久に保持
  • sessionStorage:ページセッション中だけ有効。ページを閉じると削除

保存容量

  • クッキー:約4KBの制限
  • Webストレージ:最大5MBまで保存可能

HTTP通信との関係

  • クッキー:リクエストヘッダに自動付与され、過剰使用がパフォーマンスに影響
  • Webストレージ:クライアント側のみで動作しサーバー通信しない

扱いやすさ

  • クッキー:ネイティブAPIが扱いにくい
  • Webストレージ:ネイティブメソッドが簡易的で、オブジェクト操作のカスタマイズも可能

使用ケース

  • クッキー:ユーザー認証情報の維持
  • localStorage:複数ページ間でのデータ共有
  • sessionStorage:ページ再読み込み時の一時データ保持

実装例

// ローカルストレージへの保存
localStorage.setItem('userName', 'sampleUser');
// ローカルストレージの取得
const storedName = localStorage.getItem('userName');
// ローカルストレージの削除
localStorage.removeItem('userName');
// セッションストレージ操作例
const dataKey = 'tempData';
const value = 42;

sessionStorage.setItem(dataKey, value);
sessionStorage.setItem('counter', 100);

// 全データ取得
const allData = sessionStorage;
console.log(allData);

// 特定データ取得
const keyValue1 = sessionStorage.getItem(dataKey);
const keyValue2 = sessionStorage[dataKey];
console.log(keyValue1, keyValue2);

// 特定データ削除
sessionStorage.removeItem(dataKey);
console.log(sessionStorage);

// 全データクリア
sessionStorage.clear();
console.log(sessionStorage);

タグ: クッキー localstorage sessionstorage ブラウザストレージ クライアントサイド

6月17日 23:15 投稿