sessionStorage、IndexedDB、適切な API の選び方
ブラウザーのストレージ機能を、保持期間、容量、同期アクセスと非同期アクセスの違いで比較します。
「sessionStorage、IndexedDB、適切な API の選び方」はCoddyKit上の無料React Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはReact Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 React Academyコースには全4レッスンが含まれています。
sessionStorageは同じAPIを共有する
sessionStorageはlocalStorageとまったく同じメソッドを提供しますが、その有効期間はタブに紐づいています。タブまたはウィンドウを閉じると、データは自動的に消去されます。
また、タブごとに分離されているため、2つのタブでsessionStorageのデータが共有されることはありません。
複数ステップフォームのユースケース
sessionStorageは、セッション中の再読み込み後も進行状況を保持しつつ、タブを閉じたら破棄したい複数ステップのウィザードに適しています。
ユーザーはフォームの途中で更新しても入力内容を失わずに済みますが、完了または離脱した後までデータが残ることはありません。
IndexedDB:非同期で大容量
IndexedDBは、ブラウザーに組み込まれた非同期のトランザクションデータベースです。localStorageの5MB制限をはるかに超えるデータを保存でき、構造化されたオブジェクトや配列、さらにはバイナリデータも扱えます。
非同期で動作するため、localStorageのようにメインスレッドをブロックしません。
IDB-KeyvalのPromiseラッパー
IndexedDBの生のAPIは冗長でイベントベースであるため、idb-keyvalのようなライブラリは、get、set、delなどのシンプルなPromiseベースの関数でラップしています。
これにより、localStorageに似た使いやすさで、IndexedDBの容量と非同期動作を利用できます。
大きなBlob向けのIndexedDB
IndexedDBはBlobやArrayBufferの値を保存できるため、画像、音声、ダウンロードしたファイル、オフライン用アセットのキャッシュに適しています。
これらはlocalStorageの制限をすぐに超えてしまい、文字列化も必要になりますが、IndexedDBならその必要はありません。
HTTPレスポンス向けのCache API
Cache APIは、サービスワーカーとともによく使われ、リクエストをキーとしてHTTPのResponseオブジェクト全体を保存します。ネットワークレスポンスをオフライン優先でキャッシュするために特化したAPIです。
オフライン時にネットワークへ接続せず、アセットやAPIレスポンスを提供するために使います。
保持期間の比較
localStorageは消去されるまで永続的に保持され、sessionStorageはタブのセッション中だけ保持されます。IndexedDBは永続的に保持され、Cookieには属性によって有効期限を設定できます。
必要な保持期間に合った保存先を選ぶことで、データがいつ消えるのかについての予期せぬ問題を避けられます。
容量の比較
localStorage と sessionStorage はおよそ 5MB、Cookie は 1 個あたり約 4KB に制限されますが、IndexedDB はデバイスやブラウザーによって数百 MB 以上を使用できます。
大容量のデータには、IndexedDB が現実的なブラウザーの選択肢です。
同期処理と非同期処理
localStorage、sessionStorage、Cookie は同期処理のため、アクセス中はメインスレッドをブロックします。IndexedDB と Cache API は非同期処理で、Promise ベースです。
非同期アクセスにより、大量のデータを読み書きする場合でも UI の応答性を維持できます。
用途で選ぶ
認証トークンには httpOnly Cookie を使用してスクリプトから読み取れないようにし、小規模な永続的設定には localStorage、大きなファイルや複雑なオフラインデータには IndexedDB、タブ内で一時的に保持する下書きには sessionStorage を使用します。
データの機密性、サイズ、保持期間に合わせてストレージを選択します。
整理
すべての用途に最適なストレージ API はありません。それぞれ、容量、永続性、同期動作、セキュリティの面で異なるトレードオフがあります。違いを理解することで、意図を持って選択できるようになります。
一般的なアプリでは、認証に Cookie、設定に localStorage、オフライン用アセットに IndexedDB というように、複数のストレージを使い分けます。
理解度チェック
ストレージの選択について理解度を確認します。
振り返り
sessionStorage、localStorage、IndexedDB、Cookie、Cache API について、永続性、容量、同期動作、セキュリティの観点から比較しました。
用途に応じた選択方法を学びました。認証には Cookie、小規模な設定には localStorage、大規模または複雑なデータには IndexedDB、タブ単位の下書きには sessionStorage を使用します。
よくある質問
「sessionStorage、IndexedDB、適切な API の選び方」レッスンは無料ですか?
はい。「sessionStorage、IndexedDB、適切な API の選び方」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、React Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 React Academyコースには全4レッスンが含まれています。
「sessionStorage、IndexedDB、適切な API の選び方」で何を学びますか?
ブラウザーのストレージ機能を、保持期間、容量、同期アクセスと非同期アクセスの違いで比較します。 ブラウザで直接実行するハンズオンコードでReact Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
React Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのReact Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「sessionStorage、IndexedDB、適切な API の選び方」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このReact Academyレッスンでコードを書いて実行できますか?
はい。すべてのReact Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- React で localStorage を読み書きする
- 状態を localStorage と同期する
- タブ間で Storage イベントを処理する
- sessionStorage、IndexedDB、適切な API の選び方