長時間リーダー、初めてのポスター。node.jsのMemcacheがさまざまなサイズのオブジェクトを返しています
OS X 10.7でノードv0.6.6を使用しています。私はまだ他の環境でこれを試していません。 http://imgur.com/NuaK4を(および他の多くのJPGは、これを行う):私は次のコードを使用する場合(console.log()
によって報告されるように)https://github.com/elbart/node-memcache
は、data
がランダムにこのイメージにつながる、いくつかのより多くのバイトが含まれています。私は、このクライアントを使用しています。 faviconはOKと思われ、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という1つのイメージが報告されています。この問題は、ディスクからデータを直接読み取ってノードで処理すると発生しません。
ありがとうございます。
ノードのバージョンを更新しても問題は解決しません。実際のテストソースの写真と壊れた写真は、下記の私のコメントにあります(stackoverflowはリンクを許可していません)。
同じピクチャの破損していないバージョンを参照することはできますか?また、あなたのノードのバージョンをアップグレードしようとすると、ノードがバッファをどのように扱うかのバグかもしれませんね? – nak
ご回答いただきありがとうございます。ノードのバージョンを更新しても問題は解決しません。実際のテストソース写真:http://imgur.com/XUTf2;実際のテストの壊れた写真:http://imgur.com/NuaK4 – joneszach
私は2つのファイルで 'vbindiff'を実行しました。ここでは破損が始まる場所があります:http://i.imgur.com/gqTKW.png ...そして方法私の唯一のアイデアの腐敗のルール。 memcacheのバグかもしれません。私はそれを自分で使ったことはありません。新しいバージョンがあればRedisを試してみるか、Memcacheを更新することをお勧めします。申し訳ありませんが、私はもっと助けになることはできませんでした! – nak