ブラウザのStorage
機能は、ウェブアプリケーションがユーザーのデバイスにデータを保存し、後で取得するための方法を提供します。主に以下の種類があります。
1. LocalStorage
-
概要:
LocalStorage
は、ブラウザ内にデータをローカルに永続的に保存するための仕組みです。 -
特徴:
- 容量制限: 通常は5〜10MB程度。
- 持続性: データは手動で削除しない限り永続的に保持されます(ブラウザを閉じても残る)。
- スコープ: 同じオリジン(プロトコル、ドメイン、ポート)であれば、ページ間でデータを共有できる。
-
データ型: すべて文字列として保存される(オブジェクトを保存する場合は
JSON.stringify()
などで変換が必要)。
-
使用例:
localStorage.setItem('key', 'value'); console.log(localStorage.getItem('key')); // 'value' localStorage.removeItem('key'); localStorage.clear(); // すべてのデータを削除
2. SessionStorage
-
概要:
SessionStorage
は、ユーザーのセッション中に限りデータを保存するための仕組みです。 -
特徴:
-
容量制限:
LocalStorage
と同様に5〜10MB程度。 - 持続性: 同じウィンドウまたはタブでのセッション中のみ有効。ブラウザのタブやウィンドウを閉じるとデータは失われる。
- スコープ: 同じオリジン内の同じウィンドウまたはタブでのみデータを共有。
-
データ型:
LocalStorage
と同様に文字列として保存される。
-
容量制限:
-
使用例:
sessionStorage.setItem('sessionKey', 'sessionValue'); console.log(sessionStorage.getItem('sessionKey')); // 'sessionValue' sessionStorage.removeItem('sessionKey'); sessionStorage.clear(); // すべてのデータを削除
3. Cookies
- 概要: クッキーはサーバーとクライアントの間で小さなデータを保持するために使用されます。
-
特徴:
- 容量制限: 1つのクッキーは4KB程度、全体で約300〜400個のクッキーを保持可能。
- 持続性: クッキーは有効期限を設定することでセッション中または一定期間保持できる。
- スコープ: 同じオリジンで使用されるが、パスを指定することで細かく制限できる。
- 用途: 主にセッション管理、ユーザートラッキング、保存されたユーザー設定など。
-
使用例:
document.cookie = "username=JohnDoe; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=/";
4. IndexedDB
-
概要:
IndexedDB
は、クライアント側のデータベースで、大量の構造化データを格納・検索するための仕組みです。 -
特徴:
- 容量制限: 大容量のデータを扱える(ブラウザによっては数百MB以上)。
- 持続性: 永続的。ユーザーが手動でデータを削除するまで保持される。
- スコープ: オリジンごとに分離。
- データ型: オブジェクト、バイナリデータなど複雑な構造を保存可能。
- 用途: オフラインアプリ、リッチなデータ操作が必要なウェブアプリ。
-
使用例:
let request = indexedDB.open("myDatabase", 1); request.onupgradeneeded = function(event) { let db = event.target.result; db.createObjectStore("myStore", { keyPath: "id" }); }; request.onsuccess = function(event) { let db = event.target.result; let transaction = db.transaction(["myStore"], "readwrite"); let store = transaction.objectStore("myStore"); store.add({ id: 1, name: "John Doe" }); };
5. Web Storage API
とCookie
の比較
- **
LocalStorage
とSessionStorage
**は、単純なキーバリュー形式でデータを保存し、より使いやすいインターフェースを提供。 - **
Cookies
**は、HTTPリクエストヘッダに送信されるため、サーバーサイドとのやり取りに便利だが、容量制限が厳しく設定がやや複雑。
これらのストレージは、用途や要件によって適切に使い分けることで、効率的なデータ管理が可能になります。