[英]Storing compressed json data in local storage
我想將 JSON 數據存儲在本地存儲中。 有時存儲的數據可能超過 5MB(每個域的瀏覽器允許的最大閾值)。 無論如何我可以壓縮或壓縮數據並將其存儲在本地存儲中嗎? 如果對大數據上的每個 JS 函數進行壓縮和解壓縮,會增加多少延遲?
我正在使用這個 json 數據在網頁上顯示......它就像一個靜態數據,對於整個會話來說幾乎是相同的。 我們在此 json 數據上提供搜索、過濾等操作...每當用戶輸入關鍵字時,我都會在此 json 數據中進行搜索,該數據存儲在本地存儲中,而不是調用服務器
由於 localStorage 功能似乎僅限於處理字符串鍵/值對,您可以做的是使用lz-string 庫將 json 對象字符串化並在將其存儲在 localStorage 之前對其進行壓縮
用法
// sample json object
var jsonobj = {'sample': 'This is supposed to be ling string', 'score': 'another long string which is going to be compressed'}
// compress string before storing in localStorage
localStorage.setItem('mystring', LZString.compress(JSON.stringify(jsonobj)));
// decompress localStorage item stored
var string = LZString.decompress(localStorage.getItem('mystring'))
// parse it to JSON object
JSON.parse(string);
檢查 jsfiddle http://jsfiddle.net/raunakkathuria/7PQtC/1/因為我已經復制了完整的腳本,所以在小提琴的末尾尋找正在運行的代碼
如果您正在處理 UTF 字符,請使用compressToUTF16
和decompressFromUTF16
但請注意,生成的字符串因此比compress
生成的字符串大 6.66%。 因此,僅在需要時才使用utf
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.