永久儲存空間

永久儲存空間有助於防止重要資料遭到剔除,並降低資料遺失的可能性。

如果系統遇到儲存壓力 (例如磁碟空間不足) 時,瀏覽器 通常移除資料,包括 Cache API 和 IndexedDB 從最近最少使用的來源中輸出如果應用程式發生上述問題,可能會導致資料遺失 未與伺服器同步資料。如要降低應用程式的可靠性, 移除應用程式運作所需的資源,兩者都會導致 不佳的使用者體驗

值得慶幸的是,Chrome 團隊的研究顯示,在極少出現資料 遭到 Chrome 自動清除。這種狀況更常由使用者手動 清理儲存空間也就是說,如果使用者定期造訪您的網站 少量的資料會被剔除防止瀏覽器刪除 您可以要求將整個網站的儲存空間 。

許多新型瀏覽器都支援永久儲存空間。

瀏覽器支援

  • Chrome:55。
  • Edge:79,
  • Firefox:57。
  • Safari:15.2。

資料來源

進一步瞭解移除情形、可以儲存的資料量,以及處理配額的方式 相關限制,請參閱網頁版儲存空間

檢查網站儲存空間是否已標示為永久儲存空間

你可以使用 JavaScript 來確認網站的儲存空間是否已標示為 做為永久性呼叫 navigator.storage.persisted() 會傳回 Promise, 會以布林值進行解析,指出儲存空間是否已標示為 以保留狀態。

// Check if site's storage has been marked as persistent
if (navigator.storage && navigator.storage.persist) {
  const isPersisted = await navigator.storage.persisted();
  console.log(`Persisted storage granted: ${isPersisted}`);
}

何時該要求永久儲存空間?

要求將儲存空間標示為永久儲存空間的最佳時機如下: 儲存重要使用者資料,而請求最好也納入使用者之中 手勢。請勿在載入網頁或其他啟動程序中要求提供永久儲存空間 程式碼,瀏覽器可能會提示使用者授予權限。如果使用者 沒有執行他們認為需要儲存的項目 且可能會拒絕要求。此外,不要顯示提示 過於頻繁如果使用者決定不授予權限,則您沒有立即 下次儲存時再次提示提示

要求永久儲存空間

如需要求永久儲存網站資料,請呼叫 navigator.storage.persist()。會傳回以 布林值,指出是否授予永久儲存空間權限。

// Request persistent storage for site
if (navigator.storage && navigator.storage.persist) {
  const isPersisted = await navigator.storage.persist();
  console.log(`Persisted storage granted: ${isPersisted}`);
}
敬上

如何授予權限?

永久儲存空間視為「權限」。瀏覽器使用 以不同的因素決定是否授予永久儲存空間權限。

Chrome 和其他以 Chromium 為基礎的瀏覽器

Chrome 和大多數其他以 Chromium 為基礎的瀏覽器會自動處理 權限要求,而且不會向使用者顯示任何提示。相反地 永久儲存空間權限是指 否則系統會在通知的情況下拒絕。

可用來判斷網站是否重要的經驗法則包括:

  • 網站參與度有多高?
  • 網站是否已安裝或加入書籤?
  • 網站是否已獲得顯示通知的權限?

如果要求遭拒,您可以稍後再提出要求, 使用相同的經驗法則進行評估

Firefox

Firefox 將權限要求委派給使用者。永久儲存空間 經要求後,系統便會透過使用者介面彈出式視窗,詢問使用者是否將 將資料儲存在永久儲存空間中

當網站要求永久儲存時,Firefox 顯示的彈出式視窗。
當網站要求永久儲存時,Firefox 顯示的彈出式視窗。

哪個儲存空間受到永久儲存空間保護?

如果使用者授予永久儲存空間權限,瀏覽器就不會收回 資料儲存於:

  • 快取 API
  • Cookie
  • DOM 儲存空間 (本機儲存空間)
  • File System API (由瀏覽器提供的檔案系統和採用沙箱機制的檔案系統)
  • IndexedDB
  • Service Worker
  • 應用程式快取 (已淘汰,請勿使用)
  • WebSQL (已淘汰,請勿使用)

如何關閉永久儲存空間

目前尚無法透過程式輔助方式告訴瀏覽器您不再 需要永久儲存空間

結論

Chrome 團隊的研究顯示,儲存的資料雖然可能 Chrome 不會自動清除這類政策。保護可能 未儲存在雲端,否則可能導致資料大量遺失 永久儲存空間是一項實用的工具 而當本機裝置面臨儲存壓力時,就會由瀏覽器移除。 提醒您,請只在使用者最有可能達成此目的時,才要求永久儲存空間 想要

謝謝

在此特別感謝 Victor Costan 和 Joe Medley 撰寫這篇文章。 感謝 Chris Wilson 撰寫這篇文章, 才剛在 WebFundamentals 擔任

由 Umberto 在 Unsplash 上提供的主頁橫幅