【发布时间】:2020-06-27 23:00:41
【问题描述】:
我正在为我的后端使用 Node.js + Express 创建一个问答应用程序。前端将问题数据发送给后端,后端再向多个第三方API请求获取答案数据。
问题是,其中一些第三方 API 响应时间过长,因为它们必须进行一些密集的处理和计算。出于这个原因,我已经实现了一个缓存系统,可以为每个不同的问题保存答案数据。不过,每次第一次请求最多可能需要 5 分钟。
由于我的后端服务器等待并且在数据到达之前不响应前端(连接保持打开状态),它只能同时处理 6 个请求(这就是我发现的)。这在性能方面是不可接受的。
有什么办法可以解决这个问题?有没有办法不“阻塞”服务器,使其可以为 6 个以上的用户提供服务?
是否有一种设计模式,其中服务器给出初始响应,然后提供完整的数据?
也许,将请求设置为“睡眠”并为新连接打开空间?
【问题讨论】:
-
你是怎么解决这个问题的?
-
我创建了一个轮询和缓存机制。当客户端发送第一个请求时,服务器缓存他的请求,将其设置为“待处理”,然后发送待处理状态。然后客户端会每隔几秒发送一次请求,直到它收到带有请求数据或错误的 OK 状态响应。
标签: javascript node.js express design-patterns web-development-server