什麼是 IndexedDB?
IndexedDB 是持續進化的網路標準,可讓使用者在瀏覽器中儲存大量結構化資料,以及運用索引分析這項資料的高效能搜尋。換句話說,IndexedDB 是物件存放區。這不同於包含集合資料列和資料欄的關聯資料庫。這個重大差異會影響您設計及建構應用程式的方式 (詳情請參閱基本概念)。
有什麼新功能呢?
改變我的朋友... 我們進行的部分變更,如果透過簡單的語法變更無法處理,這些變更就會擲回某些錯誤。
現在,自 17 版起,如果 IndexedDB 交易範圍不是物件存放區,Chrome 會擲回錯誤。所有讀取和寫入資料都是在交易中完成,因此我們需要在資料庫上建立交易、指定範圍 (例如您想存取哪些物件) 以及決定存取的類型 (唯讀或寫入)。
在程式碼中代表什麼意思? 沒問題,而不是將空白陣列傳送至我們的 database.transaction:
var transaction = db.transaction([], IDBTransaction.READ_ONLY);
請將範圍限定為特定物件存放區,或物件存放區清單:
// all stores (equivalent to what use to be marked as empty array. )
var transaction = db.transaction(db.objectStoreNames, IDBTransaction.READ_ONLY);
// multiple stores:
var transaction = db.transaction(['ObjectStoreName1', 'ObjectStoreName2'],
IDBTransaction.READ_ONLY);
// single store - these are equivalent
var transaction = db.transaction(['ObjectStoreName'], IDBTransaction.READ_ONLY);
var transaction = db.transaction('ObjectStoreName', IDBTransaction.READ_ONLY);
您可以在交易中使用正確的範圍和模式來加快資料存取速度。以下是幾個訣竅:
定義範圍時,請只指定您需要的物件儲存空間。這樣一來,您就能以非重疊範圍並行執行多項交易。請只在必要時指定 READ_WRITE
交易模式。您可以同時執行多個範圍重疊的 READ_ONLY
交易,但一個物件存放區只能有一筆 READ_WRITE
交易。
其他來源:
- chromium.org 的更新內容。
- 進一步瞭解 MDN 的 IndexedDB
- 如何在簡易的 ToDo 清單網頁應用程式中使用已建立索引的資料庫的完整範例
下次見...繼續將網路推向附近的地域。