每個儲存空間的價值不盡相同:導入 Storage 值區

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 無法避免使用者存取原本存在於用戶端中的未傳送草稿。相對的 這些郵件儲存在伺服器上,使用者或許不會收到一些最舊的收件匣電子郵件。 。

電子郵件應用程式介面
此電子郵件應用程式具有個別儲存空間值區,用於存放收件匣和草稿。(僅供參考,這不一定反映 Gmail 的運作方式。)

使用 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');

建立永久的新儲存空間值區

如要確保儲存空間值區能保留,您可以傳遞 durabilitypersisted 選項 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」的專用樹狀結構中檢查儲存空間值區 >儲存空間區段。

「Storage」區段中啟用儲存空間值區樹狀結構的前後差異。

實用資源