Storage API: ブラウザにデータ保存
Cookie より簡単・大容量。テーマやトークンを保存。
localStorage
永続保存。ブラウザを閉じても残る。
sessionStorage
タブを閉じると消える。
容量
通常 5MB 以上。Cookie より大きい。
Storage API
Cookie は毎回サーバーに送信されますが、Storage API はブラウザ内だけに保存されます。容量も大きく(約5MB)、サーバーへの通信量を減らせるため、テーマ設定や一時データの保存に最適です。
// localStorage: 永続保存localStorage.setItem('theme', 'dark');const theme = localStorage.getItem('theme');localStorage.removeItem('theme');localStorage.clear();
// sessionStorage: タブを閉じると消えるsessionStorage.setItem('token', 'abc123');
// オブジェクトを保存const user = { name: 'Alice', age: 30 };localStorage.setItem('user', JSON.stringify(user));const saved = JSON.parse(localStorage.getItem('user'));Bad
// ❌ Bad: Cookie でデータ保存document.cookie = "theme=dark; expires=...";// 制限: 4KB, 手動パース必要Good
// ✅ Good: localStoragelocalStorage.setItem('theme', 'dark');// 5MB+, シンプル API高度な使い方
// ストレージイベント(他タブと同期)window.addEventListener('storage', (e) => { console.log('Key:', e.key); console.log('Old:', e.oldValue); console.log('New:', e.newValue);});
// 有効期限付きストレージfunction setWithExpiry(key, value, ttl) { const item = { value, expiry: Date.now() + ttl, }; localStorage.setItem(key, JSON.stringify(item));}
function getWithExpiry(key) { const item = JSON.parse(localStorage.getItem(key)); if (!item || Date.now() > item.expiry) { localStorage.removeItem(key); return null; } return item.value;} Tip: 機密データは保存しない。XSS で読み取られる可能性。
合格ライン
localStorage と sessionStorage の違いを説明できる
JSON.stringify/parse でオブジェクトを保存できる
演習課題
課題1: localStorage
localStorage でデータを保存・取得してください。
課題2: JSON
JSON.stringify/parse でオブジェクトを保存してください。