IndexedDB API
注意:此功能在 Web Workers 中可用。
IndexedDB 是一個低級別的客戶端儲存 API,用於儲存大量結構化資料,包括檔案/blob。此 API 使用索引來實現對這些資料的高效能搜尋。雖然 Web Storage 適用於儲存少量資料,但對於儲存大量結構化資料則不太適用。IndexedDB 提供瞭解決方案。這是 MDN IndexedDB 專題的主要入口頁面 — 在這裡我們提供指向完整 API 參考和使用指南、瀏覽器支援詳情以及一些關鍵概念的解釋連結。
關鍵概念和用法
IndexedDB 是一個事務資料庫系統,類似於基於 SQL 的關係資料庫管理系統 (RDBMS)。但是,與使用固定列表的基於 SQL 的 RDBMS 不同,IndexedDB 是一個基於 JavaScript 的面向物件的資料庫。IndexedDB 允許您儲存和檢索使用 鍵 索引的物件;任何受 結構化克隆演算法 支援的物件都可以儲存。您需要指定資料庫模式,開啟到資料庫的連線,然後在一系列 事務 中檢索和更新資料。
- 閱讀更多關於 IndexedDB 關鍵特性和基本術語 的內容。
- 使用我們的 使用 IndexedDB 指南,從基礎知識開始非同步學習使用 IndexedDB。
- 在 檢查截止日期何時到期 指南中檢視一個完整的循序漸進的示例。
注意: 與大多數 Web 儲存解決方案一樣,IndexedDB 遵循 同源策略。因此,雖然您可以在域內訪問儲存的資料,但不能跨不同域訪問資料。
同步和非同步
使用 IndexedDB 執行的操作是非同步進行的,以免阻塞應用程式。
儲存限制和清除標準
有許多 Web 技術在客戶端(即本地磁碟)儲存某種型別的資料。IndexedDB 是最常被討論的。瀏覽器確定為 Web 資料儲存分配多少空間以及在達到限制時刪除什麼的過程並不簡單,並且在不同瀏覽器之間有所不同。 瀏覽器儲存配額和清除標準 嘗試解釋這是如何工作的,至少在 Firefox 的情況下是如此。
介面
要訪問資料庫,請在 window 物件的 indexedDB 屬性上呼叫 open()。此方法返回一個 IDBRequest 物件;非同步操作透過在 IDBRequest 物件上觸發事件來與呼叫應用程式進行通訊。
連線到資料庫
IDBFactory-
提供對資料庫的訪問。此型別的物件是全域性
Window.indexedDB和WorkerGlobalScope.indexedDB屬性的值。因此,它是 API 的入口點。 IDBOpenDBRequest-
表示開啟資料庫的請求。
IDBDatabase-
表示對資料庫的連線。這是獲取資料庫事務的唯一方式。
檢索和修改資料
IDBTransaction-
表示一個事務。您可以在資料庫上建立一個事務,指定範圍(例如要訪問的物件儲存),並確定所需的訪問型別(只讀或讀寫)。
IDBRequest-
處理資料庫請求並提供結果訪問的通用介面。
IDBObjectStore-
表示一個物件儲存,它允許透過主鍵訪問 IndexedDB 資料庫中的一組資料。
IDBIndex-
還允許訪問 IndexedDB 資料庫中的一部分資料,但使用索引而不是主鍵來檢索記錄。這有時比使用
IDBObjectStore更快。 IDBCursor-
遍歷物件儲存和索引。
IDBCursorWithValue-
遍歷物件儲存和索引並返回遊標的當前值。
IDBKeyRange-
定義一個鍵範圍,可用於在特定範圍內從資料庫中檢索資料。
自定義事件介面
此規範會觸發具有以下自定義介面的事件
IDBVersionChangeEvent-
IDBVersionChangeEvent介面指示資料庫的版本已更改,這是IDBOpenDBRequest.onupgradeneeded事件處理函式的結果。
示例
規範
| 規範 |
|---|
| Indexed Database API 3.0 |