我应该使用什么编码来正确生成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标头中