gpt4 book ai didi

javascript - Node.js:如何仅在图像发生变化时请求图像

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:20 25 4
gpt4 key购买 nike

我正在设计一个 Node.js 应用程序。
它的任务之一是定期从某些公共(public)、外部站点下载一组图像。
一项要求是避免重复下载与上次下载相比没有更改的图像。
我计划使用“请求”模块,因为它相对于其他网络模块更加完整和灵活(如果我错了,请纠正我)。

这是我现在使用的代码(请忽略一些错误,例如将日期与 >< 运算符进行比较,将其视为伪代码...):

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()被调用两次:这是浪费资源吗?
内容请求是否可以以某种方式链接到第一个请求?
您能建议一种更清洁/更智能/更快的方法吗?

最佳答案

也许我遗漏了一些东西,但如果您知道最后修改日期,则应该将其作为If-Modified-Since header 与GET请求一起发送,并跳过HEAD请求。服务器应在适当的时候返回 304

How "304 Not Modified" works?

关于javascript - Node.js:如何仅在图像发生变化时请求图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32853929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com