1. 給開發者的 Web 技術文件
  2. Web API
  3. IndexedDB API

此頁面由社群從英文翻譯而來。了解更多並加入 MDN Web Docs 社群。

View in English Always switch to English

IndexedDB API

備註: 此功能可在 Web Worker 中使用。

IndexedDB 是一種底層 API,用於在用戶端儲存大量結構化資料(包括檔案/Blob)。該 API 使用索引來實現對資料的高效能搜尋。雖然 Web Storage 對於儲存較少量的資料很有用,但對於儲存大量的結構化資料則較不適用。IndexedDB 提供了解決方案。這是 MDN IndexedDB 內容的主要登陸頁面——我們在此提供完整的 API 參考文件、使用指南、瀏覽器相容性細節,以及一些關鍵概念的說明。

關鍵概念與用法

IndexedDB 是一個交易式資料庫系統,就像 SQL 基礎的關聯式資料庫管理系統(RDBMS)。然而,不同於 SQL 基礎的 RDBMS 使用固定欄位的表格,IndexedDB 是一個 JavaScript 基礎的物件導向資料庫。IndexedDB 讓你儲存和檢索以索引的物件;任何結構化複製演算法支援的物件都能被儲存。你需要指定資料庫綱要,開啟與資料庫的連線,然後在交易序列中檢索和更新資料。

備註:就像大多數的 web 儲存解決方案,IndexedDB 遵循同源政策。因此雖然你可以存取同一個網域內的儲存資料,但你無法跨網域存取資料。

同步與非同步

使用 IndexedDB 執行的操作是非同步完成的,以免阻塞應用程式。

儲存限制與驅逐標準

有許多 web 技術在用戶端(亦即在你的本機磁碟上)儲存各種類型的資料。IndexedDB 是最常被討論的。瀏覽器計算要分配多少空間給 web 資料儲存,以及當達到限制時要刪除什麼內容的過程並不簡單,且不同瀏覽器之間有所差異。瀏覽器儲存配額與驅逐標準試圖解釋其運作方式,至少在 Firefox 的情況下是如此。

介面

要存取資料庫,請呼叫 window 物件 indexedDB 屬性上的 open()。此方法回傳一個 IDBRequest 物件;非同步操作透過在 IDBRequest 物件上觸發事件來與呼叫的應用程式通訊。

連線到資料庫

IDBFactory

提供對資料庫的存取。此類型的物件是全域 Window.indexedDBWorkerGlobalScope.indexedDB 屬性的值。因此它是 API 的進入點。

IDBOpenDBRequest

代表開啟資料庫的請求。

IDBDatabase

代表與資料庫的連線。這是獲取資料庫交易的唯一途徑。

檢索和修改資料

IDBTransaction

代表一個交易。你在資料庫上建立一個交易,指定範圍(例如你想要存取哪個物件儲存區),並決定你想要的存取類型(唯讀或讀寫)。

IDBRequest

處理資料庫請求並提供結果存取的通用介面。

IDBObjectStore

代表一個物件儲存區,允許存取 IndexedDB 資料庫中的一組資料,透過主鍵尋找。

IDBIndex

也允許存取 IndexedDB 資料庫中的資料子集,但使用索引來檢索紀錄而不是主鍵。這有時比使用 IDBObjectStore 更快。

IDBCursor

迭代物件儲存區和索引。

IDBCursorWithValue

迭代物件儲存區和索引並回傳游標目前的值。

IDBKeyRange

定義一個鍵範圍,可用於從資料庫中檢索特定範圍內的資料。

自訂事件介面

此規範使用以下自訂介面觸發事件:

IDBVersionChangeEvent

IDBVersionChangeEvent 介面表示資料庫的版本已經改變,這是 IDBOpenDBRequest.onupgradeneeded 事件處理函式的結果。

範例

規範

Specification
Indexed Database API 3.0

參見

Help improve MDN

Learn how to contribute

This page was last modified on by MDN contributors.

AltStyle によって変換されたページ (->オリジナル) /