Javascript HTTP/is如何在AJAX应用程序中保持活力

Javascript HTTP/is如何在AJAX应用程序中保持活力,javascript,ajax,http,Javascript,Ajax,Http,“保持活动”在HTTP中存在。有人说应该使用它,但我无法得出任何结论。 因此,请提供您的意见/答案/观点,以便我能对此有所了解 它是干什么的 应该做和不应该做的场景 它如何使AJAX应用程序变得更好 风险应做和不应做(如有) 感谢大家的投入 它使客户端的TCP套接字保持打开状态,因此您没有重新建立连接来发送另一个HTTP请求 当一行中有许多请求时,“保持活动”可提高http性能。但是,如果请求很少,则不应使用它(如果在一段时间内没有更多来自客户端的请求,服务器通常会关闭连接) 嗯,如果A

“保持活动”在HTTP中存在。有人说应该使用它,但我无法得出任何结论。 因此,请提供您的意见/答案/观点,以便我能对此有所了解

  • 它是干什么的

  • 应该做和不应该做的场景

  • 它如何使AJAX应用程序变得更好

  • 风险应做和不应做(如有)

    感谢大家的投入

  • 它使客户端的TCP套接字保持打开状态,因此您没有重新建立连接来发送另一个HTTP请求
  • 当一行中有许多请求时,“保持活动”可提高http性能。但是,如果请求很少,则不应使用它(如果在一段时间内没有更多来自客户端的请求,服务器通常会关闭连接)
  • 嗯,如果AJAX应用程序向服务器发送大量请求,那么保持有效性可以提高其性能
  • 服务器端存在套接字耗尽的风险,所以服务器有权中断甚至保持活动连接

  • 首先,如果您与服务器的连接使用的是HTTP/1.1,那么您很可能已经在使用“保持活动”

    这是什么?从逻辑上讲,HTTP是一种无连接协议。也就是说,对服务器的每个请求/响应都会创建一个新连接,执行其业务并断开连接。但是,在HTTP/1.1中,默认行为是保持连接打开,以供后续对服务器的请求使用。HTTP/1.0中添加了“保持活动”标头以允许选择此行为,在HTTP/1.1中,服务器需要通过关闭连接本身和/或发送“连接关闭”标头来选择退出

    为什么它是有益的?创建连接,特别是需要验证的连接可能需要一些时间。通过重新使用现有连接,可以大大减少设置和身份验证工作

    它如何使您的AJAX应用程序变得更好?你可能已经从中受益


    风险是什么?当通过共享设备进行连接时,可能会代表客户端连接到服务器,其他客户端可能会重新使用该连接,但是,这也使得其他客户端可以使用服务器为不同用户验证的连接。

    实际上,这归结为性能和资源问题

    使用高(er)保持活动可减少请求的延迟。如果您在SSL上运行,并且有额外的握手来建立连接,那么这尤其是一个问题

    这将意味着有更多的服务器进程。线程处于空闲状态,等待后续请求或保持活动状态过期。这会占用内存,从而降低服务器速度

    因此,您确实需要仔细研究一下,看看在浏览器性能和服务器负载方面什么是可以接受的

    身份验证(基于基本/摘要/会话)是不相关的-它是经过身份验证的请求-而不是套接字连接

    请注意,上次我进行新的Apache安装时,“保持活动”的默认设置为5秒。对于一个非ajax站点来说,这段时间长得可笑

    C.

    它“使其他客户端可以使用服务器为其他用户验证的连接”——我不理解这一点。HTTP是无状态的,因此多个客户端是否使用同一个TCP连接肯定无关紧要?HTTP是“逻辑上”无状态的,但连接不是。在大多数情况下,连接是匿名的,不具有任何意义。但是,身份验证通常在连接级别进行(例如IIS上的NTLM)其中,一旦建立了连接,多个请求将共享连接的相同身份验证状态。多个请求将共享连接的相同身份验证状态并不意味着其他客户端可以使用服务器已为不同用户验证的连接,假设不同的用户是不同的进程。连接是进程特定的,并且在操作系统级别受到保护。另一个进程不能共享已针对不同进程进行身份验证的相同连接。