Node.js:如何请求一个图像只有当它改变

我正在devise一个node.js应用程序。
其任务之一是定期从一些公共的,外部的网站下载一组图像。
一个要求是避免重复下载没有从以前的下载中改变的图像。
我打算使用“请求”模块,因为它比其他networking模块更加完整和灵活(如果我错了,请纠正我)。

这是我现在使用的代码(请忽略一些错误,如比较date与><运营商,认为它是伪代码 …):

 var request = require('request'); var myResource = { 'url': 'http://www.example.com/image1.jpg', 'last-modified': 'Mon, 28 Sep 2015 08:44:06 GMT' }; request( myResource.url, { method: 'HEAD'}, function (err, res, body) { if (err) { return console.error('error requesting header:', err); } var lastModifiedDate = res.headers['last-modified']; console.log('last modified date:', lastModifiedDate); if (lastModifiedDate > myResource['last-modified']) { // resource did change request( myResource.url, function (err, response, contents) { if (err) { return console.error('error requesting content:', err); } myResource['last-modified'] = lastModifiedDate; storeContents(contents); // store contents to DB } ); } } ); 

这个代码应该工作(原则上)。
但是我问: request()被调用两次:这是浪费资源吗?
内容请求可以被链接到第一个请求吗?
你能build议一个更清洁/更聪明/更快的方法吗?

也许我错过了一些东西,但是如果你知道last-modifieddate,那么你应该用GET请求作为If-Modified-Since标题发送,并跳过HEAD请求。 服务器在适当的时候应该返回一个304

如何“304未修改”的作品?