我已经写入集群服务器,并减少的和基本的分析/var更换。服务器被使用node.js.

我想gzip我的响应,从这个服务器。告诉在因诺琴蒂研究中心,node.js 目前没有一个gzip lib,因此我试图做手工从命令行(作为我只gzip压缩时,不在缓冲存储)。

我是在推动文件的数据以一种临时文件,然后使用exec叫 'gzip -c -9 -q ' + tempFile.我得到的数据的压缩回正确地(这似乎),并发送正确的 Content-Encoding 头作 'gzip', 但铬报告:

Error 330 (net::ERR_CONTENT_DECODING_FAILED): Unknown error.

此外,一些独立的gzip在线测试失败,以及(不仅仅是镀铬).

我假设这是简单的东西,我不知道发生gzip块的浏览器,看到因为我从来没有试图做到这一点。

任何援助将是有帮助的。服务器是快速的,但我需要gzip的内容,获得更好的绩效为终端用户。

谢谢。

更新 我已经验证了我的 Content-Length 是正确的

有帮助吗?

解决方案

你有没有更新的内容长度相匹配的gzip压缩的大小?这似乎是可能弄糟解码。

其他提示

节点仍然是流血的边缘,似乎没有很好处理的二进制数据。

节点的串的编码 有ascii、二和utf8.[...]"二元"只看[s]在 第8比特 的16位JavaScript串符。问题是这串根据通信机制详解是16位字符串。如果你使用UTF-8(它是默认)有一些正常化的时候读到串,这破坏gzip。如果你使用ascii,它显然不会的工作。

它将工作,如果你使用 二进制编码 阅读和写作.上8位Javascript串角色只是没有被使用。如果没有,试图发送的文件直接向客户没有任何装载入Javascript串,也许有帮助的一个代理服务器在前面的节点。

我希望,谷歌的V8发动机实现一个真正的二进制串数据类型、这样的事情的建议 http://groups.google.com/group/nodejs/browse_thread/thread/648a0f5ed2c95211/ef89acfe538931a1?lnk=gst&q=binary+type#ef89acfe538931a1

CommonJS还提议 二进制/B, ,由于节点试图遵循CommonJS,有一些对未来的希望。

编辑 我刚刚发现的 net2分支 节点,其中包含二进制的缓冲区(见src/node_buffer.h)。它是一部分的全面改革网络,它似乎。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top