我正在编写一个Web应用程序,需要通过AJAX将JSON数据存储在一个小的、固定大小的服务器端缓存中(想想Opensocial配额)。我对服务器没有控制权。
我需要减少存储数据的大小,以保持在服务器端配额,并希望能够在发送到服务器之前在浏览器中gzip字符串化的JSON。
但是,我找不到太多Gzip的JavaScript实现。关于如何在发送数据之前在客户端压缩数据,有什么建议吗?
我正在编写一个Web应用程序,需要通过AJAX将JSON数据存储在一个小的、固定大小的服务器端缓存中(想想Opensocial配额)。我对服务器没有控制权。
我需要减少存储数据的大小,以保持在服务器端配额,并希望能够在发送到服务器之前在浏览器中gzip字符串化的JSON。
但是,我找不到太多Gzip的JavaScript实现。关于如何在发送数据之前在客户端压缩数据,有什么建议吗?
当前回答
我有另一个问题,我不想在gzip编码数据,而是解码gzip数据。 我在浏览器外运行javascript代码,所以我需要使用纯javascript解码它。
这花了我一些时间,但我发现在JSXGraph库中有一种读取gzip数据的方法。
这是我找到图书馆的地方:http://jsxgraph.uni-bayreuth.de/wp/2009/09/29/jsxcompressor-zlib-compressed-javascript-code/ 甚至有一个独立的实用程序可以做到这一点,JSXCompressor,其代码是经过LGPL许可的。
只需要在你的项目中包含jsxcompressor.js文件,然后你将能够读取base64编码的gzip数据:
<!doctype html>
</head>
<title>Test gzip decompression page</title>
<script src="jsxcompressor.js"></script>
</head>
<body>
<script>
document.write(JXG.decompress('<?php
echo base64_encode(gzencode("Try not. Do, or do not. There is no try."));
?>'));
</script>
</html>
我知道这不是你想要的,但我仍然在这里回复,因为我怀疑它会帮助一些人。
其他回答
我将LZMA的实现从GWT模块移植到独立的JavaScript中。它叫做LZMA-JS。
我没有测试,但是有一个ZIP的javascript实现,叫做JSZip:
https://stuk.github.io/jszip/
下面是一些用Javascript实现的其他压缩算法:
·霍夫曼 LZ77
大多数浏览器都可以动态地解压gzip。这可能是比javascript实现更好的选择。
我有另一个问题,我不想在gzip编码数据,而是解码gzip数据。 我在浏览器外运行javascript代码,所以我需要使用纯javascript解码它。
这花了我一些时间,但我发现在JSXGraph库中有一种读取gzip数据的方法。
这是我找到图书馆的地方:http://jsxgraph.uni-bayreuth.de/wp/2009/09/29/jsxcompressor-zlib-compressed-javascript-code/ 甚至有一个独立的实用程序可以做到这一点,JSXCompressor,其代码是经过LGPL许可的。
只需要在你的项目中包含jsxcompressor.js文件,然后你将能够读取base64编码的gzip数据:
<!doctype html>
</head>
<title>Test gzip decompression page</title>
<script src="jsxcompressor.js"></script>
</head>
<body>
<script>
document.write(JXG.decompress('<?php
echo base64_encode(gzencode("Try not. Do, or do not. There is no try."));
?>'));
</script>
</html>
我知道这不是你想要的,但我仍然在这里回复,因为我怀疑它会帮助一些人。