In my nodeJS app, I'd like to generate ETags for all the content that I return to the client. I need the ETag to be based off the actual content of the file instead of the date, so that the same file across different node processes has the same ETag.
Right now, I am doing the following:
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);
});
I am not sure what encodings I should be using for the different crypto functions in order to have a proper system in place. Should I be using something other than hex
? Should I get the fs.readFile
call to return a hex encoded buffer? If so, will doing so impact the content returned to users?
Best, and Thanks,
Sami