如何处理耗时的ajax请求
Posted
技术标签:
【中文标题】如何处理耗时的ajax请求【英文标题】:How to handle time consuming ajax requests 【发布时间】:2015-05-19 13:05:11 【问题描述】:这是一个 SE 架构问题。以下是我们正在实施的系统模型。
以上是我们使用ajax处理数据调用的方式。问题是,如果调用在 salesforce 部分中处理的时间过长,API 管理器会引发超时,并且网站会收到响应,即 API 管理器会引发超时错误。
我想实现的方法是将请求发送到服务器,然后 API 管理器会向我发送一个在 salesforce 部分处理的大事务的 ID。当前端收到 ID 时,我将使用具有给定 ID 的单独 Web 服务轮询 API 管理器,以确定事务是否成功完成。这我需要定期调用,因为我不知道执行时间!
例如说,在获得 ID 后,我会每 5 秒进行一次 ajax 调用,以了解事务是否结束。
这是解决我面临的问题的明智方法吗?由于我无法控制任何其他部分,我想知道我的方法是否更好。
【问题讨论】:
【参考方案1】:感觉还不错。
在 API 管理器中实现某种工作队列。它存在几个可很好扩展的即用型解决方案(例如 gearman)。
向 API 管理器添加一个 Web 服务,以便获取工作队列中作业的状态
...然后你可以...
3.尝试删除模型中的一个系统(它包含许多可能的故障点)。客户端(Web 应用程序)可以直接与 API 管理器通信吗?或者可以在网络服务器上实现工作队列,并通过 wordpress 中的 ajax 功能提供
4.添加 websocket 支持,它比轮询更棒:)
【讨论】:
网页应用无法直接调用API管理器!相反,它通过 php 层,然后进入 API 管理器。问题是,保存功能是需要在销售人员部分进行的耗时部分。我使用 ajax 将数据发送到服务器,然后进程启动。问题是由于保存需要时间,API 管理器会引发超时异常。如果你能解释更多关于网络套接字的事情,我将不胜感激,因为我从未实现过网络套接字! Websockets 使服务器可以将数据推送到客户端/浏览器。当需要即时反馈但普通的请求/响应程序不需要时,它是使用的技术。在你的情况下,我猜它并不那么重要。 html5rocks.com/en/tutorials/websockets/basics以上是关于如何处理耗时的ajax请求的主要内容,如果未能解决你的问题,请参考以下文章
flask session session已过期,再发送ajax请求如何处理?