关闭。此问题不符合堆栈溢出准则。它目前不接受答案。
<hr class=“my12大纲无baw0 bb bc-POWER-400”/
想改进此问题吗?更新问题,使其成为堆栈溢出的主题。
已于6年前关闭
改进这个问题
我正在编写一个Web应用程序,它需要通过AJAX(想想:Opensocial quotas)将JSON数据存储在一个小的、固定大小的服务器端缓存中
我需要减少存储数据的大小以保持在服务器端配额内,并希望能够在将字符串化的JSON发送到服务器之前在浏览器中gzip
然而,我在Gzip的JavaScript实现方面找不到太多的东西。关于如何在发送数据之前在客户端压缩数据,有什么建议吗
编辑似乎有一个更好的LZW解决方案,它可以同时正确处理Unicode字符串http://pieroxy.net/blog/pages/lz-string/index.html (感谢pieroxy在评论中的发言)
我不知道有任何gzip实现,但是jsolait库(这个站点似乎已经消失了)有LZW压缩/解压缩的功能
//LZW压缩字符串
函数lzw_编码{
var dict={};
变量数据=(s+“”)。拆分(“”);
var out=[];
var-currChar;
var短语=数据[0];
var代码=256;
对于(变量i=1;i<;data.length;i++){
currChar=数据[i];
if(dict[phrase+currChar]!=null){
短语+=currChar;
}
否则{
out.push(短语.length>;1?dict[短语]:短语.charCodeAt(0));
dict[短语+currChar]=代码;
代码++;
短语=currChar;
}
}
out.push(短语.length>;1?dict[短语]:短语.charCodeAt(0));
对于(变量i=0;i<;out.length;i++){
out[i]=String.fromCharCode(out[i]);
}
返回。加入(“”);
}
//解压缩LZW编码的字符串
功能lzw_解码(s){
var dict={};
变量数据=(s+“”)。拆分(“”);
var currChar=数据[0];
var oldphase=currChar;
var out=[currChar];
var代码=256;
var短语;
对于(变量i=1;i<;data.length;i++){
var currCode=data[i].charCodeAt(0);
如果(当前代码<;256){
短语=数据[i];
}
否则{
短语=dict[currCode]?dict[currCode]:(旧短语+currChar);
}
推出(短语);
currChar=短语.charAt(0);
dict
=oldphase+currChar;
代码++;
旧短语=短语;
}
返回。加入(“”);
}