この記事では、代替方法の容量を超えるクライアント側のデータストレージの堅牢なブラウザAPIであるIndexedDBを調査します。 クライアント側のデータストレージオプションは大幅に拡張されており、サーバーベースのデータベースの更新に代わるものを提供しています。
indexedDBの重要な利点:
高ストレージ容量:- indexedDBは、他のクライアント側のオプションよりもかなり多くのストレージを提供し、ドメインごとに少なくとも1GBと利用可能なディスクスペースの最大60%を提供する可能性があります。
非同期操作:
その非同期性は、他のスクリプトをブロックせずにバックグラウンド処理を許可します。大きなデータセットに最適です。
-
包括的なCRUD操作:データベースバージョンとスキーマ管理とともに、レコードの作成、読み取り、更新、削除をサポートしています。
- データの整合性:トランザクションを通じてデータの整合性を維持し、すべての操作が一緒に成功または失敗するようにします。
キーベースのデータアクセス:- データはオブジェクトストアにあり、キーによって識別されたレコードがあります。
ブラウザdevtools統合:
デバッグと管理は、ブラウザdevtoolsを介して促進され、データの調査、変更、およびクリアを可能にします。
-
ライブラリサポート:約束や非同期のような最新のJavaScript機能をネイティブにサポートしていない一方で、このギャップをブリッジするようなライブラリ。
-
なぜクライアント側のストレージを選択するのか?
サーバー側のストレージはほとんどのユーザーデータに適していますが、クライアント側のストレージは次のことに有利です。
-
デバイス固有の設定:UIの好み、ライト/ダークモードなど
idb
は必要なデータ:アップロード前の写真のような一時的なデータ。
オフラインデータの同期:低接続性領域での後で同期するためのデータ。
プログレッシブWebアプリ(PWAS):
ユーザビリティまたはプライバシーの理由のためのオフライン機能。
- Assetキャッシュ:キャッシングによるパフォーマンスの向上
- ブラウザストレージAPIの比較:
-
Webストレージ:シンプルな同期名値ペアストレージ。小さな非クリティカルなデータ(ドメインあたり5MB)に適しています
- キャッシュAPI:httpリクエスト/応答ペアを保存します。
indexedDB:- データ、ファイル、ブロブのクライアント側NOSQLデータベース(ドメインあたり少なくとも1GB、利用可能なディスクスペースの最大60%まで)。
indexedDBファンダメンタルズ:
2015年に標準化されたIndexEdDB(2018年のAPI 2.0、開発中のAPI 3.0)は、幅広いブラウザのサポートを享受しています。 この記事では、コアの概念に焦点を当てています:
- データベース:トップレベルのコンテナ。 アクセスは同じドメインに制限されています
オブジェクトストア:関連データの名前/値ストア(MongodbのコレクションやSQLのテーブルなど)。
- キー:オブジェクトストアの各レコードの一意の識別子(自動生成またはカスタム)。
autoincrement:- レコードの追加時にキー値を自動的に増加させます。
index:- 効率的な検索のためにオブジェクトストア内でデータを編成します。
スキーマ:
オブジェクトストア、キー、インデックスを定義します
-
バージョン:スキーマアップデートの整数。
-
操作:データベースアクション(crud)。
-
トランザクション:データの整合性(すべてまたは何もない)を確保するために操作をラップします。
- カーソル:記録を効率的に繰り返し、すべてをメモリにロードすることを避けます。
非同期実行:- 操作は非同期に実行され、他のコードが実行を継続できるようにします。
データ構造の例(記録に注:-
indexedDBはイベントとコールバックを使用しますが、ネイティブの約束と非典型的なサポートがありません(ただし、- のようなライブラリはこれを提供します)。
devtoolsでのデバッグ:
ブラウザdevtools(クロムベースのブラウザーのアプリケーションタブ、Firefoxのストレージ)は、indexedDBデータの調べ、変更、およびクリアのために非常に貴重です。
{
id: 1,
title: "My first note",
body: "A note about something",
date: <date object>,
tags: ["#first", "#note"]
}
ログイン後にコピー
idb
indexedDBサポートとストレージスペースのチェック:
indexedDB接続の開始:
(CRUD操作、スキーマの更新、およびカーソルの使用法を詳述する後続セクションは簡潔に省略されていますが、元の応答は包括的な例を提供します。)
よくある質問(FAQ):
元の応答には、最大ストレージサイズ、大規模なデータセットの取り扱い、ストレージ制限の超過、ストレージ制限の増加、使用状況チェック、データの永続性、BLOBオブジェクトストレージ、セキュリティ、ワーカーの使用、エラー処理をカバーする包括的なFAQセクションが含まれます。 これらはすべて、元の出力内で詳細に対処されています。
以上がindexedDBを使用してブラウザに無制限*データを保存する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。