我设置了一个时间间隔,以便在用户的Spotify帐户向我的快速服务器发送请求时,轮询用户的Spotify帐户。
app.post('/party', _ensureAuthenticated, function(request, response) {
const token = decrypt(request.user.encryptedAccessToken);
setInterval( () => {
pollSpotify(token)
}, pollInterval);
});
我的问题是,如果多个用户针对不同的帐户发布此帖子请求,在快速服务器上设置多个间隔,这会降低我的服务器性能吗?如何加班清除这些间隔?什么是从我的快递服务器轮询spotify的更好方法?
答案 0 :(得分:2)
这会降低我的服务器性能吗?
是的,构建越来越多的setInterval()
计时器最终会影响您的服务器性能。它对服务器的影响程度取决于pollInterval
是什么以及每个间隔必须处理多少以及您拥有多少计时器。
而且,由于您无法阻止其中一个计时器,因此即使用户离开您的网站几天,它们也会永远堆积起来。并且,如果给定用户他们不止一次访问/party
,您甚至会获得重复项。
为了建议更好的设计,我必须了解您在pollSpotify(token)
中所做的事情以及您在那里找到的结果所做的事情。
至少,您需要能够知道用户何时不在您的网站上,这样您就可以停止为其运行的计时器,并防止给定用户重复。
如果您只有一个轮询计时器来运行所有轮询并且它代表活动的用户/令牌数组中的每个项目进行检查,那么它将更具可伸缩性。然后,您可以在用户请求时添加/删除数组中的项目,或者将其作为非活动状态超时。
当然,您需要知道用户何时不再在您的网站上有效,以便您可以代表他们停止投票。