【发布时间】:2013-10-03 15:47:12
【问题描述】:
我有一个 javascript 应用程序,它通过网络发送大量数字数据。然后将该数据存储在数据库中。我遇到了大小问题(带宽太大,数据库太大)。我现在准备牺牲一些性能来进行压缩。
我正在考虑实现一个基数为 62 的 number.toString(62) 和 parseInt(compressed, 62)。这肯定会减少数据的大小,但在我继续这样做之前,我想我会把它交给这里的人们,因为我知道肯定有一些我没有考虑过的开箱即用的解决方案。
基本规格是: - 将大量数组压缩成字符串以进行 JSONP 传输(所以我认为 UTF 已经过时了) - 相对较快,看我不期待与现在相同的性能,但我也不想要 gzip 压缩。
任何想法将不胜感激。
谢谢
吉多·塔皮亚
【问题讨论】:
-
为什么不用 gzip?那有什么问题? (或者更可能的是,DEFLATE)如果你想让它更简单,你也可以只做 Huffman 或 LZW 之类的事情。 Javascript 中的霍夫曼编码:tom-ash.net/blogs/Blog.aspx?File=Programming/…
-
要明确一点 - 是通过 javascript 和 ajax/jsonp 从客户端向服务器发送数据?
-
@James:正确,我们将一个非常大的数字数组作为字符串发送到服务器。该数组不在 JSON 中(所以没有愚蠢的 xml 标记 - edit 哎呀,我的意思是花括号)只是整数之间的 string.join('.')。然后这个字符串也存储在数据库中(这是真正的大小问题)。
-
@Cheeso:我不想把压缩/解压负载放在服务器上。我希望客户端(浏览器)承担这个成本,所以 gzip 不可用,除非你能想到一种在 JS 中使用复杂压缩算法的方法。
-
@nick:我们正在讨论每个约 200k 的请求。我们每天谈论约 100,000 个请求,我们保留 2 周的数据,但是每天 100,000 个请求正在增加 :) 如果我可以将这些请求增加到 100k,它将让我能够忍受我当前的硬件设置至少另一个6 个月。