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