如果我的 Web 应用程序中有许多常规 AJAX 方法,但我引入了始终在线的 SignalR 连接,是否值得重构以使常规 AJAX 方法改为集线器方法?由于它使用的是已经存在的连接,它会更快吗?
问问题
949 次
1 回答
6
恕我直言,这将是对 SignalR 的滥用。
会更快吗?这实际上取决于几个因素。第一个是最终使用哪种传输方式。如果它是 Web Sockets,那么,是的,因为消息将通过保证已经建立的连接发送,但如果它是 SSE 或 LongPolling,那么每次发送消息时你仍然在做一个普通的旧 HTTP POST。第二个因素是,如果服务器允许 Keep-Alive 连接,那么浏览器无论如何都会在请求之间的一段时间内保持与服务器的开放 TCP 连接,因此无论如何建立连接都不会产生开销。
此外,我们不要忘记我们强大的朋友 GET 动词以及它带来的所有好处,因为它是 Web 最重要的特性之一:缓存。如果您有大量可缓存的数据,您不会希望通过 Web 套接字发送实时消息来获取和检索这些数据,因为如果这样做,您基本上会丢弃整个 Web 基础设施。浏览器无法再为您提供帮助,您必须自己使用本地存储和自定义消息构建所有智能,因为没有更好的词,这将是疯狂的。:) 您还完全放弃了代理缓存公共数据的功能,就它对性能的帮助程度而言,它被严重低估了。
我的指导是,您可以完全按照今天利用 AJAX 的方式保留简单的请求/响应,并且仅将 SignalR 之类的技术用于其预期目的:实时通信。
于 2013-07-11T04:42:08.960 回答