node.js - Node.js 中的 Memcache 返回大小不同的对象

标签 node.js binary memcached

长期读者,第一次发帖。

我在 OS X 10.7 上使用 Node v0.6.6。我还没有在任何其他环境中尝试过这个。我正在使用这个客户端:https://github.com/elbart/node-memcache

当我使用以下代码时,data 随机包含更多字节(由 console.log() 报告),这会导致此图像:/image/MzOsw.jpg (和许多其他 JPG 都是这样做的)。 favicon 看起来不错,HTML/CSS/javascript 都可以工作。

换句话说:如果我请求图像,大约 70% 的时间图像会正确返回;另外 30% - data 报告了更多字节,并且图像在浏览器中显示为损坏。

client.get(key, function(err, data) {
    if (err) throw err;
    if (data) {
        res.writeHead(200, {'Content-Type': type, 'Content-Length': data.length});
        console.log('Sending with length: ' + data.length);
        res.end(data, 'binary');
    }
});

我已经搞砸了几个小时了,老实说我被难住了。我希望有人能告诉我我的方法中的错误。我尝试搜索是否有一种方法可以使用 memcache 正确存储二进制数据,但没有相关信息。

额外信息:它发生在各种 JPG 图像上;所有图像的文件大小约为 100-300KB 或更小。例如,一张图像报告了以下大小:286442、286443、286441。如果我直接从磁盘读取数据并通过 Node 提供服务,则不会出现此问题。

提前致谢。

编辑 我更新了我的 Node 版本,但问题仍然存在。实际测试源照片和损坏的照片可以在我下面的评论中找到(stackoverflow 不允许更多链接)。

最佳答案

Elbart 的 node-memcache 无法正确处理二进制值,原因是 Steve Campbell 提出的:node-memcache 不允许客户端直接访问缓冲区。通过对缓冲区进行字符串化,二进制数据被破坏。

使用“mc”npm。 ( npm 安装 mc )

警告:我是“mc”npm 的作者。我专门编写它来通过内存缓存的文本协议(protocol)处理二进制值。

关于node.js - Node.js 中的 Memcache 返回大小不同的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9901628/

相关文章:

PHP memcache 随着键数量的增加返回 false

node.js - 在 .env 文件中使用插值

node.js - React - 将图像导入到 base64

Python3 在字节数组中搜索

memcached - 如何在 mac 上配置启用 SASL 的 memcached 用户名和密码

caching - 远程/云 memcached 服务有什么意义?

node.js - 如何聚合数组中 ObjectID 出现的次数?

javascript - v8 对嵌套函数的优化效果如何?

java - 线程中的异常 "AWT-EventQueue-0"java.lang.NumberFormatException : For input string: "11101110110100011110111011010001"

python - iOS 和 Python 之间的共享二进制格式