【发布时间】:2012-11-21 03:16:41
【问题描述】:
在 PHP 中我正在做类似的事情:
$gzdata = gzencode(json_encode($data), 9);
$mc->set("latest", $gzdata);
所以我从数据库中提取关联数组,将其转换为 JSON,将其压缩并存储到内存缓存中
在我的 Node.js 中,我读取了 memcached 条目并提供了它(其中客户端是 memcache 客户端)
client.get('latest', function(err, response) {
if (err) { console.log("GET", err.type ); }
else{
result.writeHead(200,{
"Content-Type": "application/json",
"content-encoding":"gzip"
});
result.end(response['latest']);
}
});
我来了
内容编码错误
在页面上
您尝试查看的页面无法显示,因为它使用了 无效或不受支持的压缩形式。
我什至无法检查 FB 中的标题...任何想法我做错了什么?
【问题讨论】:
-
您的网络服务器通常不进行 gzip 压缩吗?因此,您是否有可能提供经过两次 gzip 压缩的内容?
-
我(还)对 node.js 一无所知,但是查看您的代码,您会得到“最新”,但随后返回“result.end(response['latest']);”。你不应该只返回“响应”吗?
-
@BotondBalázs:在这种情况下,node.js 是我的网络服务器......它应该提供已经压缩过的 json......尽可能少的开销
-
@DS_web_developer:那么对不起。我不知道node.js。您可以尝试在另一个浏览器中检查响应。也许 Chrome 会给你更多信息。或者尝试使用
curl获取它。您还可以尝试为gzencode()函数提供不同的参数 - 可能是不同的压缩级别。 -
@DS_web_developer - 好的,接下来。你注意到下面关于适配器的一点了吗? overclocked.com/mc/#adapters - 字符串适配器是默认的,你可能想要二进制?
client.setAdapter(mc.Adapter.binary);获取前?
标签: php node.js http-headers memcached gzip