我应该使用什么编码来正确生成nodeJS中encryption的ETag?

在我的nodeJS应用程序中,我想为所有返回给客户端的内容生成ETags。 我需要ETag基于文件的实际内容而不是date,以便跨不同节点进程的同一文件具有相同的ETag。

现在我正在做以下工作:

var fs = require('fs'), crypto = require('crypto'); fs.readFile(pathToFile, function(err, buf){ var eTag = crypto.createHash('md5').update(buf).digest('hex'); res.writeHead(200, {'ETag': '"' + eTag + '"','Content-Type':contentType}); res.end(buf); }); 

我不知道我应该使用不同的encryption函数来编写适当的系统。 我应该使用非hex东西吗? 我应该得到fs.readFile调用返回一个hex编码的缓冲区? 如果是的话,会不会影响回报给用户的内容?

最好的和谢谢,
萨米

你做得很好。 没有理由以任何特殊的格式对文件进行编码,并且使用hex输出是非常标准的。 要求,松散地说,是:

  • 相同的文档应该总是返回相同的ETag
  • 文档中的任何更改都会导致ETag中的更改
  • ETag数据应该整齐地放入HTTP标头中