Storage Standard 定義了永久儲存空間及 預估配額,以及平台儲存架構 我們即將推出的 API,能讓永久清除儲存空間的大量作業 記憶體壓力可以更準確預測可自 Chromium 122 起使用。
儲存空間標準可以解決什麼問題?
一般來說,使用者裝置儲存空間不足時,透過以下 API 儲存的資料:
IndexedDB 或 localStorage
會在使用者無法介入的情況下遺失。讓
方法是叫用
persist()
方法
StorageManager
介面。同時向使用者要求權限並變更
:
const persisted = await navigator.storage.persist();
if (persisted) {
/* Storage will not be cleared except by explicit user action. */
}
要求保留儲存空間的方法之一,就是完全或沒有任何。沒有任何方法可以表達更多內容 精細的持續性需求存放於單一儲存空間值區
Storage Buckets API
Storage Buckets API 的核心概念是 授予網站建立多個儲存空間值區的權限,瀏覽器可選擇 會分別刪除各個值區如此一來,開發人員就能指定 排定優先順序,確保最有價值的資料不會遭到刪除。
用途範例
請想像一個電子郵件應用程式,說明儲存空間值區會在哪裡派上用場。 Google 無法避免使用者存取原本存在於用戶端中的未傳送草稿。相對的 這些郵件儲存在伺服器上,使用者或許不會收到一些最舊的收件匣電子郵件。 。
使用 Storage Buckets API
建立新的儲存空間值區
您可以在 StorageBucketManager
上使用 open()
方法建立新的儲存空間值區
存取 API
// Create a storage bucket for emails that are synchronized with the
// server.
const inboxBucket = await navigator.storageBuckets.open('inbox');
建立永久的新儲存空間值區
如要確保儲存空間值區能保留,您可以傳遞 durability
和 persisted
選項
open()
方法的引數:
persisted
會決定是否應保留儲存空間值區。允許的值包括:false
(預設) 或true
。durability
會向瀏覽器提供提示,協助權衡寫入效能與 降低停電時資料遺失的風險。允許的值為'relaxed'
(預設) 或'strict'
:'strict'
值區會盡可能降低停電時資料遺失的風險。這可能發生在 效能降低的情況,也就是說,寫入可能需要較長時間 整體系統效能可能會耗用更多電池電力,而且儲存裝置時可能會 耗盡'relaxed'
個值區可能會「清除」過去幾秒內完成的寫入作業 就會發生斷電的情況因此,將資料寫入這些值區可能效能較佳 可能會使電池充電更久,並可能導致使用時間更長 裝置生命週期此外,電力故障並不會造成資料損毀的比率高於'strict'
個值區。
// Create a storage bucket for email drafts that only exist on the client.
const draftsBucket = await navigator.storageBuckets.open('drafts', {
durability: 'strict', // Or `'relaxed'`.
persisted: true, // Or `false`.
});
從 Storage 值區存取 Storage API
每個 Storage API 都與 Storage API 相關聯
IndexedDB、
快取介面,或
檔案介面。這類 Storage API 的運作方式
一般情況,只是進入點來自 StorageBucket
介面,例如
StorageBucket.indexedDB
。
const inboxDb = await new Promise(resolve => {
const request = inboxBucket.indexedDB.open('messages');
request.onupgradeneeded = () => { /* migration code */ };
request.onsuccess = () => resolve(request.result);
request.onerror = () => reject(request.error);
});
在開發人員工具中對儲存空間值區進行偵錯
在「Application」的專用樹狀結構中檢查儲存空間值區 >儲存空間區段。