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

康纳·贝尔

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

最初打开Goog​​le工作表时,它会向我的服务器发出多个请求,以请求来自各种API的一堆数据,然后我的服务器会认真地查找并返回。

我已经实现了基本的基于内存的缓存-如果对相同数据的请求传入,它将从内存中为它提供服务,直到达到到期时间为止(我愿意不久就转向Redis)。

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

如何有效地暂停第二个请求,让它等待直到第一个请求的数据可用?我不介意设置高超时时间并在第二个请求开始之前等待第一个请求结束,或者可以执行某种“退后一分钟再试一次”的逻辑。

我想象某种方式的promise或将回调保存在某处将是最好的选择,但是我不确定有什么样的最佳实践或建议的方法。

对于我来说,不可能定期请求并缓存服务器端的数据,因为客户端可以请求的值的潜在范围非常大。

帕特里克·罗伯茨

保留承诺。如果正在处理请求,则高速缓存将指示它已被请求,您仍然可以await处理未解决的承诺,然后在数据准备就绪时对两个请求进行响应。

await无论是否解决了承诺,都需要将其余代码重构为缓存中的值,并在启动请求而不是完成请求时将条目添加到缓存中。

如果已经解决了缓存中的承诺,则await只会在事件循环中按一个勾号停止用户功能的异步流,这意味着您将获得基本上免费查看未决请求的优势。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

没有任何前端的Node JS Deploying API到客户端

MarkLogic 8-将大型结果集流式传输到文件-JavaScript-Node.js客户端API

如何在Node.js服务器上的多个客户端之间同步数据

来自Node.js的Office JavaScript API?

如何配置AWS EC2实例中的Node.js以接受来自客户端的HTTPS请求

如何将客户端Javascript数组和通过Node.js API POST到MongoDB数据库中?

指定客户端端口Node js请求

Express.js与Node.js,多个客户端

如何使用来自Node.JS客户端的容器映像启动Google Cloud实例?

在node.js中顺序合并来自多个GET请求的数据

使用Gmail API Node.js客户端发送大型附件(> 5 MB)

将YouTube API与Node.js客户端一起使用

Dropbox令牌API在Node.js中返回“缺少客户端凭据”

MarkLogic-JavaScript node.js客户端API-QueryBuilder-集合之间的联接

来自多个模块的Node.js数据库初始化

需要多个API文件Node.js

node.js 客户端的 Adobe Analytics Segments API 身份验证问题

我们可以通过 node.js 检测请求类型(来自 html 或用户客户端)吗

Node.js 的多个 API 请求

marklogic 使用带有子元素的 node.js 客户端 api 查询文档

在 Node js 中 Rest Api 请求(curl 到 Node.js,python 到 Node.js)

gatsby-node.js 多个 api 调用

如何将 vue.js 客户端添加到现有的 node.js api?

如何在 Node.js 和 React 中分离客户端、API、管理员?

在 Node.js 中从客户端向服务器发送 HTTP2 中的多个 JSON 数据

Node.js - PostgreSQL (pg) :客户端已经连接。您不能重复使用客户端

YouTube 数据 API Node.js quickstart.js 问题

插入大量数据(Node.js API)

连接来自多个 fetch JS (RAWG API) 的数据