網頁資料儲存方案
你說的非常對!chrome.storage.local 是 Chrome 擴充功能專用的儲存 API。對於一般的網頁,確實有幾種不同的客戶端儲存方案,其中 Cookie 是最老牌的一種,但現在有更好、更常用的選擇。
Cookies (HTTP Cookies) :用途 :最初設計用於伺服器和客戶端之間傳遞狀態資訊 (例如:使用者登入狀態、購物車內容、追蹤使用者行為)。運作方式 :由伺服器透過 HTTP Header (Set-Cookie) 發送到瀏覽器,瀏覽器儲存後,在之後的每次請求到同一網域時,都會自動將 Cookie 透過 HTTP Header (Cookie) 帶上發送給伺服器。容量 :非常小,通常每個 Cookie 約 4KB,且每個網域的 Cookie 數量也有限制。存取 :JavaScript 可以透過 document.cookie 讀寫 (除非設定了 HttpOnly 旗標,這樣就只能由伺服器讀寫)。伺服器端程式碼可以直接讀取 HTTP Header 中的 Cookie。生命週期 :可以設定過期時間 (expires/max-age)。如果沒有設定,就是會話 Cookie (session cookie),瀏覽器關閉即失效。缺點 :容量小。 每次 HTTP 請求都會攜帶 ,即使某些請求完全不需要這些 Cookie,也會增加網路流量和請求大小,影響效能。API 操作不方便 (document.cookie 是一個字串,需要手動解析和設定)。
適合場景 :儲存少量、需要在伺服器和客戶端之間共享的狀態資訊,如身份驗證 token、使用者偏好設定 (例如主題)。
Web Storage API (HTML5) :這是現代網頁更常用的客戶端儲存方案,它提供了更大的儲存容量,且不會自動隨 HTTP 請求發送。它包含兩種: localStorage :用途 :在客戶端持久儲存鍵值對數據。容量 :比 Cookie 大得多,通常每個來源 (origin,即協議+主機名+端口) 約 5MB - 10MB。存取 :只能透過 JavaScript 存取 (localStorage.setItem('key', 'value'), localStorage.getItem('key'), localStorage.removeItem('key'), localStorage.clear())。生命週期 :永久儲存 ,除非使用者手動清除瀏覽器快取/資料,或網頁透過 JavaScript 主動刪除。關閉瀏覽器或分頁不會影響儲存的資料。作用域 :同源策略限制,即同一個來源的頁面可以共享相同的 localStorage。優點 :容量較大,API 簡單易用,數據不會隨 HTTP 請求發送。缺點 :只能儲存字串。如果要儲存物件,需要先用 JSON.stringify() 轉換成字串,讀取時用 JSON.parse() 轉回來。 同步操作,如果在主執行緒進行大量讀寫可能會阻塞 UI。 不適合儲存敏感資料,因為容易被 XSS 攻擊讀取。
最接近 chrome.storage.local 的方案 :在持久性、僅客戶端存取、鍵值對儲存方面,localStorage 是最像擴充功能 chrome.storage.local 的。
sessionStorage :用途 :在客戶端儲存當前會話 (session) 的鍵值對數據。容量 :與 localStorage 類似,約 5MB - 10MB。存取 :只能透過 JavaScript 存取 (API 與 localStorage 完全相同,只是把 localStorage 換成 sessionStorage)。生命週期 :僅限當前瀏覽器分頁/視窗的生命週期 。當分頁或視窗關閉時,sessionStorage 中的資料會被清除。即使是同一個網站在不同分頁打開,它們的 sessionStorage 也是獨立的。作用域 :同源策略限制,但僅限於當前分頁。優點/缺點 :與 localStorage 類似,但生命週期不同。適合場景 :儲存臨時性的、只在當前瀏覽會話中有效的資料,例如表單中已填寫的內容 (防止使用者意外關閉分頁後遺失),或一次性提示的狀態。
IndexedDB API :用途 :在客戶端儲存大量結構化數據,提供類似資料庫的功能。容量 :非常大,通常只受限於使用者的硬碟空間 (瀏覽器會有提示請求更多空間)。存取 :只能透過 JavaScript 存取。API 相對複雜,是基於交易 (transaction) 的非同步操作。生命週期 :永久儲存,除非使用者或網頁主動清除。作用域 :同源策略限制。優點 :可以儲存大量數據,包括 JavaScript 物件、檔案、Blob 等。 支援索引,可以高效查詢數據。 非同步操作,不會阻塞主執行緒。
缺點 :API 較為複雜,學習曲線較陡峭。適合場景 :需要離線功能的複雜 Web 應用 (PWA)、需要儲存大量數據的應用 (例如郵件客戶端、內容管理工具的草稿等)。
留言
張貼留言