我很好奇是否有某种类型的标准限制从服务器端角度使用AJAX投票而不是SSE。
- 每秒请求1:我很确定SSE更好
- 每分钟的1个请求:我敢肯定Ajax更好
但是每5秒要求1个请求呢?我们如何计算AJAX或SSE的极限频率在哪里?
对ajax的每分钟要求总是更好,因此从一开始就将假设有缺陷。任何频繁的投票几乎总是一个昂贵的选择。从我们以前的另一个问题的评论中,您似乎是从一个信念开始,即开放的TCP套接字(SSE连接还是WebSocket连接(对服务器性能的昂贵。闲置的TCP连接将零CPU(也许很长一段时间,可能会发送一个存放,但是除此之外,闲置套接字不使用CPU(。它确实使用了一些服务器内存来处理套接字描述符,但是高度调谐的服务器可以同时具有1,000,000个开放式插座。因此,您的CPU使用情况将更多地是关于建立了多少个连接,以及他们每次建立服务器都要做什么,而不是关于有多少(且大部分是空闲(连接的连接。
请记住,每个HTTP连接都必须创建一个TCP套接字(这是客户端/服务器之间的往返(,然后发送HTTP请求,然后获取HTTP响应,然后关闭套接字。每分钟有很多数据往返。如果连接是https,则由于加密层和端点认证,建立连接的工作和往返。因此,当您可以创建一个SSE连接时,每分钟每分钟每分钟就可以为数十万个客户进行资源和带宽的大量浪费,而客户只需收听该连接上的服务器流传输的数据。
正如我在对另一个问题的较早评论中所说的那样,这些类型的问题在抽象上并不是真正可以回答的。您必须对客户端和服务器都有特定的要求,并对所交付的数据以及对客户的紧急程度以及特定的轮询间隔和特定规模有特定的了解,以便开始进行一些计算或测试安全带评估哪种可能是做事更理想的方法。有太多的变量无法提出一个纯粹的假设答案。您必须定义一个方案,然后分析该特定方案的不同实现。
每秒请求数量只是许多可能的变量之一。例如,如果大多数时间进行轮询,实际上没有什么新鲜事物,那么这给SSE案例提供了更大的优势在大多数情况下,开放的插座(,而民意测验也会产生连续的负载,即使无关。
服务器推送的#1优势(无论是使用SSE还是WebSocket实施(是,当实际上有相关数据发送到该特定客户端时,服务器只需要与客户端执行任何操作。剩下的时间,插座只是坐在那里(可能偶尔会长时间间隔,发送一个静止的时间(。
对投票的#1缺点是,客户可能有很多次对服务器进行轮询,服务器必须花费资源来处理投票请求,只能告知客户没有什么新的。
我们如何计算AJAX或SSE的极限频率在哪里?
这是一个非常复杂的过程。在特定情况下,需要定义许多变量。它不像请求/秒那样简单。然后,您必须决定要测量或评估的内容以及在什么规模上?"服务器性能"您是您唯一提到的,但是必须完全定义,并且必须将CPU使用和内存使用等不同的因素加权到您正在测量或计算的任何因素。然后,如果计算未得出明显的答案,或者决定如此关键以至于您想用真实的指标验证计算,则您甚至可能需要运行一些测试安全带。
听起来您正在寻找一个"大于x请求/分钟"之类的答案,您应该使用民意调查而不是SSE"。而且我认为没有那么简单的答案。这取决于远比请求/分钟或请求/秒
"轮询"在各方上都蒙受了开销。如果您可以避免,请不要进行轮询。
如果SSE是一种选择,则可能是一个不错的选择。"这取决于"。
问:您的应用程序需要处理什么(如果有(类型的"事件"?