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