JSONデータをローカルストレージに保存したい。保存されるデータが5MB(各ドメインのブラウザで許可される最大しきい値)を超える場合があります。とにかく、データを圧縮または圧縮してローカルストレージに保存することはできますか?大きなデータですべてのJS関数の圧縮と解凍を行うと、どのくらいのレイテンシが追加されますか?
私はこのjsonデータを使用してWebページに表示しています.....これは、セッション全体でほとんど同じである静的データのようなものです。このjsonデータに対して検索、フィルターなどのアクションを提供します...ユーザーがキーワードを入力するたびに、サーバーを呼び出す代わりに、ローカルストレージに保存されているこのjsonデータを検索します
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
のものを使用してください。