無論是本機裝置儲存空間還是雲端伺服器儲存空間,選擇合適的儲存機制都很重要。良好的儲存引擎可確保資訊可靠地儲存、減少頻寬,並提高回應速度。正確的儲存空間快取策略是啟用離線行動版網站體驗的核心要素。
本文將簡要說明評估 Storage API 和服務的基礎知識,接著提供比較表和一些一般指引。我們預計在不久後新增資源,協助您深入瞭解特定儲存空間主題。
儲存空間分類
首先,我們來瞭解一些維度,以便分析網頁應用程式的資料儲存空間。稍後,我們將使用這個架構,列舉並評估網頁程式開發人員可用的多種儲存空間選項。
資料模型
資料單位的儲存模式決定了資料在內部的組織方式,這會影響儲存和擷取要求的易用性、成本和效能。
結構化:資料儲存在具有預先定義欄位的資料表中,這是 SQL 資料庫管理系統的典型做法,非常適合彈性和動態查詢,因為這類查詢可能無法事先得知完整的查詢類型。瀏覽器中結構化資料儲存庫的著名範例是 IndexedDB。
鍵/值:鍵/值資料儲存庫和相關的 NoSQL 資料庫,可讓您儲存及擷取由不重複索引鍵建立索引的非結構化資料。鍵/值資料儲存庫類似雜湊表,可讓您在固定時間內存取已建立索引的不透明資料。鍵/值資料儲存庫的著名例子包括瀏覽器中的 Cache API 和伺服器上的 Apache Cassandra。
位元組串流:這個簡單的模型會將資料儲存為可變長度、不透明的位元組字串,並將任何形式的內部組織留給應用程式層。這個模型特別適合用於檔案系統和其他階層式組織的資料 blob。位元組串流資料儲存庫的常見例子包括檔案系統和雲端儲存空間服務。
保留設定
網頁應用程式的儲存方法可根據資料永久保存的範圍進行分析。
工作階段保留:這類資料只會在單一網頁工作階段或瀏覽器分頁保持啟用狀態時保留。Session Storage API 就是具有工作階段持續性的儲存機制範例。
裝置持續性:這類資料會在特定裝置上,跨工作階段和瀏覽器分頁/視窗保留。Cache API 就是一種具有裝置持續性的儲存機制。
全域保留:這類資料會在不同工作階段和裝置上保留。因此,這是最穩固的資料持續性形式。Google Cloud Storage 就是具有全域永久性的儲存機制。
瀏覽器支援
開發人員應選擇最適合其問題領域的 API;不過,他們也應考量到標準化且完善的 API 優於自訂或專屬介面,因為它們通常壽命更長且支援更廣泛。此外,他們也可能享有更廣泛的知識庫和更豐富的開發人員生態系統。
交易
通常,一組相關的儲存作業必須以不可分割的方式成功或失敗,這點非常重要。資料庫管理系統傳統上會使用交易模型支援這項功能,其中相關更新可能會分組為任意單位。雖然不一定需要,但這是一項便利的功能,有時在某些問題領域中甚至是不可或缺的功能。
同步/非同步
部分 Storage API 是同步的,也就是說,儲存或擷取要求會封鎖目前執行中的執行緒,直到要求完成為止。在網路瀏覽器中,這項作業特別繁重,因為儲存空間要求會與 UI 共用主執行緒。基於效率和效能考量,建議優先使用非同步 Storage API。
在 Chrome 開發人員工具中偵錯儲存空間
請參閱下列文件,進一步瞭解如何使用 Chrome 開發人員工具檢查及偵錯所選網頁儲存空間 API。此處未提及的 API,代表開發人員工具不支援或不適用。
如果您使用多個 Storage API,請參閱開發人員工具的「清除儲存空間」功能。這項功能可讓您按一下按鈕,即可清除多個商店。詳情請參閱「清除 Service Worker、儲存空間、資料庫和快取」。
後續步驟…
我們已探討一些相關的儲存機制思考方式,並比較目前最熱門的 API 和服務,很快就會新增更多內容,深入探討一或多個感興趣的主題: