【问题标题】:Does xmlhttprequest keep connection open after request has been processed?处理请求后 xmlhttprequest 是否保持连接打开?
【发布时间】:2012-12-14 09:43:47
【问题描述】:

我做了一个简单的ajax...

请求和响应标头都包含连接:Keep-Alive

我看了一下,发现客户端因此保持了持久连接 与服务器。这种支持流水线,客户端可以发送多个请求而无需等待每个响应。

所以我有一些问题:

  1. xmlhttprequest 实际在哪里打开到服务器的连接?
  2. 创建许多 xmlhttprequest 对象是打开它们自己的连接还是使用管道在同一连接上发送它...?
  3. 我想同时处理请求.. 我可以将请求排队(存储参数).. 并在 onreadystate 提供函数来处理它.. 即调用递归发出请求的函数?或者这根本不是一个好主意?
  4. 连接何时关闭..在什么阶段?

其他信息: 我不想为 ajax 使用 jquery 或任何其他库。不过你可以提议。一世 可以检查它们是如何工作的。 我正在使用 javascrip 和 php(codeigniter 框架)。 我希望能够处理多个请求(2)..和队列请求 达到限制时进行。

提前致谢:)

【问题讨论】:

  • 你明白http请求是通过tcp connection来完成的吗? http 使用 tcp 就像传真使用电话线一样。 tcp connectionConnection: Keep-Alive 中所指的内容。你真的不知道浏览器何时何地决定创建一个 tcp 连接,但通常浏览器会创建多个同时连接到服务器的 tcp 连接,如果这样做有好处的话。对 html、图像、css、ajax 请求等的请求都经过相同的行(尽管同样,浏览器通常会打开多行)。
  • 感谢您的回复。是的,我知道它是通过 Tcp 连接进行的。感谢您对 Connection: Keep-Alive 的澄清。我读过标准是 2 个同时连接,尽管有些浏览器支持更多。

标签: php javascript ajax codeigniter xmlhttprequest


【解决方案1】:

XMLHttpRequest 是一个对象,可让您在不刷新页面的情况下从服务器请求和接收数据。它使用HTTPHTTPS 请求。它与请求和接收 HTML 页面基本相同。您可以同步或异步打开它们。

XMLHttpRequest.open( Method, URL, Asynchronous, UserName, Password )

这里,Method 是要使用的HTTP 请求方法。见http://www.w3.org/TR/XMLHttpRequest/#the-open()-method

我想处理同时请求..我可以将请求排队(存储参数)..并在 onreadystate 提供函数来处理它..即调用递归发出请求的函数?或者这根本不是一个好主意?

我会创建一个 XMLHttpRequest 数组并处理数据并从数组 onreadystatechange 中删除 XMLHttpRequest。请记住,您将收到混合顺序的异步响应,或者可能根本不会收到响应。

连接何时关闭..在什么阶段?

收到数据后立即关闭。请注意,keep-alive 是关于保持会话活动,而不是连接。

【讨论】:

  • 不是我的。谢谢回复。我会检查更多。
  • 艾伦,不客气。我只是好奇,因为如果我的回答有问题,我不想误导任何人,我想从我的错误中吸取教训。
  • @Ertug > “请注意,keep-alive 是关于保持会话处于活动状态,而不是连接。”不真实。这一切都是为了保持(TCP)连接处于活动状态。没有“会话”之类的东西。
  • @Orwellophile,取决于你如何对待它,TCP 是基于 IP 的会话 :)
  • @pavel_karoukin 从技术上讲,我不得不不同意。 TCP 是一种基于 IP 的传输机制(第 4 层),可提供可靠的连接。设置新的 TCP 连接会带来开销,因此您希望尽可能保持打开状态。会话将存在于 TCP 连接(第 5 层)之上,并且通常不适用于 HTTP 请求,因为 HTTP 通常在应用层(7)上运行。所以,keep_alive 就是尽可能保持连接活跃。只是 HTTP 请求被关闭。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 2013-12-19
相关资源
最近更新 更多