SignalR方法调用-比传统AJAX调用更快



如果我的web应用程序中有许多常规的AJAX方法,但我引入了一个始终在线的SignalR连接,那么将常规的AJX方法改为hub方法值得重构吗?既然它使用的是已经存在的连接,它会更快吗?

IMHO这将是对SignalR的滥用。

它会更快吗?这实际上取决于几个因素。第一个问题是最终使用哪种运输方式。如果是Web套接字,那么,是的,因为消息将通过保证已经建立的连接发送,但如果是SSE或LongPolling,则每次发送消息时仍会执行简单的旧HTTP POST。第二个因素是,如果服务器允许Keep Alive连接,那么浏览器将在请求之间的一段时间内保持与服务器的TCP连接打开,因此在建立连接方面不会有任何开销。

此外,我们不要忘记我们强大的朋友GET动词,以及它在网络最重要的功能之一:缓存方面带来的所有好处。如果你有很多可缓存的数据,你就不想通过网络套接字发送实时消息来获取和检索这些数据,因为如果你这样做的话,你基本上会扔掉整个网络基础设施。浏览器再也帮不了你了,你必须自己用本地存储和自定义消息来构建所有的智能,这将是疯狂的。:)您还完全放弃了代理缓存公共数据的功能,这在性能方面被严重低估了。

我的指导是,你可以把简单的请求/响应完全保留为今天利用AJAX的方式,只使用SignalR这样的技术来实现它的目标:实时通信。