Gzip 的JavaScript 實作
問題:
問題:問題:
有沒有辦法壓縮JSON其發送到固定大小的伺服器之前在客戶端快取?
答案:
編輯:為了獲得更好的結果,請使用http://pieroxy.net/blog 上找到的改進的LZW解決方案/pages/lz-string/index.html.
原始解決方案:function lzw_encode(s) { var dict = {}; var data = (s + "").split(""); var out = []; var currChar; var phrase = data[0]; var code = 256; for (var i = 1; i < data.length; i++) { currChar = data[i]; if (dict[phrase + currChar] != null) { phrase += currChar; } else { out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0)); dict[phrase + currChar] = code; code++; phrase = currChar; } } out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0)); for (var i = 0; i < out.length; i++) { out[i] = String.fromCharCode(out[i]); } return out.join(""); }
雖然JavaScript 沒有提供Gzip 的實現,但jsolait 庫提供了LZW 壓縮和解壓縮的函數。程式碼如下:
function lzw_decode(s) { var dict = {}; var data = (s + "").split(""); var currChar = data[0]; var oldPhrase = currChar; var out = [currChar]; var code = 256; var phrase; for (var i = 1; i < data.length; i++) { var currCode = data[i].charCodeAt(0); if (currCode < 256) { phrase = data[i]; } else { phrase = dict[currCode] ? dict[currCode] : (oldPhrase + currChar); } out.push(phrase); currChar = phrase.charAt(0); dict[code] = oldPhrase + currChar; code++; oldPhrase = phrase; } return out.join(""); }LZW 壓縮函數:LZW 解壓縮函數:LZW 解壓縮函數:
以上是JavaScript 可以為具有固定大小快取的伺服器壓縮 JSON 資料客戶端嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!