web-dev-qa-db-ja.com

圧縮されたjsonデータをローカルストレージに保存する

JSONデータをローカルストレージに保存したい。保存されるデータが5MB(各ドメインのブラウザで許可される最大しきい値)を超える場合があります。とにかく、データを圧縮または圧縮してローカルストレージに保存することはできますか?大きなデータですべてのJS関数の圧縮と解凍を行うと、どのくらいのレイテンシが追加されますか?

私はこのjsonデータを使用してWebページに表示しています.....これは、セッション全体でほとんど同じである静的データのようなものです。このjsonデータに対して検索、フィルターなどのアクションを提供します...ユーザーがキーワードを入力するたびに、サーバーを呼び出す代わりに、ローカルストレージに保存されているこのjsonデータを検索します

22
Rajeev

LocalStorageの機能は、文字列のキーと値のペアのみを処理するように制限されているようです。実行できるのは、 lz-string library を使用して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/ 完全なスクリプトをコピーしたので、fiddleの最後で実行中のコードを探してください

使用する compressToUTF16およびdecompressFromUTF16 UTF文字を扱っているが、生成される文字列はcompressによって生成される文字列より6.66%大きいことに注意してください。したがって、必要な場合にのみutfのものを使用してください。

17
Raunak Kathuria