我正在尝试确定最适合我的 Web 应用程序的解决方案。我有一个页面会触发任意数量的 ajax 请求以从服务器检索数据。例如,加载的页面可能会向服务器发出 10 个 ajax 请求,每个请求可能需要 10 秒 (+-) 才能返回内容。
鉴于这是多用户和多并发环境中的 Web 应用程序,使用传统的 ajax 方法是一个好主意,还是选择长轮询,例如 SignalR。
两种方法(拉与推)的优缺点是什么?最终,我追求的是最节省资源的方法。
谢谢
我正在尝试确定最适合我的 Web 应用程序的解决方案。我有一个页面会触发任意数量的 ajax 请求以从服务器检索数据。例如,加载的页面可能会向服务器发出 10 个 ajax 请求,每个请求可能需要 10 秒 (+-) 才能返回内容。
鉴于这是多用户和多并发环境中的 Web 应用程序,使用传统的 ajax 方法是一个好主意,还是选择长轮询,例如 SignalR。
两种方法(拉与推)的优缺点是什么?最终,我追求的是最节省资源的方法。
谢谢
在您陈述的示例中,您谈论的是纯粹的“拉动”场景。即“当页面加载时,我希望 X、Y、Z 发生,然后我想查看结果”。
长轮询/websockets (SignalR) 对于 Push 场景很有用 - 即“哦,看我已经完成了这个超长进程......我最好告诉任何当前连接的用户”。
您可以使用 SignalR 运行那些普通样式的 AJAX 请求......但您不会获得任何性能增强。AJAX 将异步并行运行,一旦服务器端进程完成,您将执行一个回调。也许您可能会稍微提高性能,因为 signalR 将持续运行连接,因此您将失去创建连接的轻微延迟。另一方面,服务器将运行大量打开的连接,这可能会降低性能(特别是如果您使用 10 X 10 秒的计算来达到它)