首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Node.js接口-来自多个客户端的重复数据请求

Node.js接口-来自多个客户端的重复数据请求
EN

Stack Overflow用户
提问于 2018-06-08 07:50:37
回答 1查看 764关注 0票数 1

我有一个使用Restify的Google,它基本上是在Node.JS工作表中使用的其他几个api的聚合器。

当Google工作表最初打开时,它向我的服务器发出几个请求,从各种API请求一堆数据,然后我的服务器会尽职尽责地查找并返回这些数据。

我已经实现了基本的基于内存的缓存--如果对相同数据的请求进来了,它会从内存中为它提供服务,直到过期时间到来(我很快就会转向Redis )。

我的问题是,当第一个请求仍在查找/解析/服务时,对相同数据的第二个请求经常会出现,这意味着我正在并行请求相同(几of )的数据。

我如何有效地暂停第二个请求,并让它等待,直到第一个请求的数据可用?我不介意有一个很高的超时时间,并在第二个请求开始之前等待第一个请求结束,或者也可以采用某种“后退并立即重试”的逻辑。

我认为某种承诺或保存回调对此最好,但我不确定有什么最佳实践或建议的方法来实现这一点。

我不可能在服务器端定期请求和缓存数据,因为客户端可以请求的值的潜在范围相当高。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-08 07:55:25

保持承诺的缓存。如果请求正在进行中,缓存将指示它已经被请求,您仍然可以await未解析的promise,然后在数据准备就绪时响应这两个请求。

您的其余代码将需要重构,以await缓存中的值,而不管promises是否已解析,并在请求启动而不是完成时向缓存中添加条目。

如果缓存中的promise已经被解决,那么await只会在事件循环中停止用户函数的异步流,这意味着您可以免费查看挂起的请求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50751591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档