2012-12-29 85 views
5

我做了一个简单的Ajax ...xmlhttprequest在请求处理后是否保持连接打开?

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

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

所以我有一些问题:

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

其他信息: 我不想使用jquery或任何其他librarie为ajax.You虽然可以提出。我可以检查它们是如何工作的。 我使用javascrip和php(codeigniter框架)。 我希望能够处理多个请求(2)..和队列请求,当达到限制时,会产生 。

感谢提前:)

+0

你是否明白http请求是通过使用'tcp connection'完成的? http使用tcp就像传真使用电话线一样。'tcp connection'是'Connection:Keep-Alive'中引用的内容。您并不知道浏览器何时或在哪里决定创建tcp连接,但通常浏览器会创建多个同时到服务器的tcp连接,如果这会有益的话。对html,图像,CSS,ajax请求等的请求......都经过相同的线路(尽管浏览器通常会打开多行)。 – goat

+0

感谢您的回复。 Yups我知道它是通过TCP连接发生的。感谢您澄清关于Connection:Keep-Alive。我已经读过,标准是2个同时连接,尽管一些浏览器支持更多。 –

回答

3

XMLHttpRequest是一个对象,它让你重新申请并无需刷新页面接收来自服务器的数据。它使用HTTPHTTPS请求。它与请求和接收HTML页面基本相同。你可以打开它们同步或异步。

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

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

我要同时处理的请求..我可以排队请求(存储参数)..和在onreadystate提供函数来处理它..即呼吁,使请求的递归函数?或者它根本不是一个好主意?

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

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

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

+1

为什么我低调? – Ertug

+0

不是由我。谢谢回复。我会更多地检查它。 –

+0

艾伦,不客气。我只是好奇,因为如果我的答案有错,我不想误导任何人,我想从我的错误中吸取教训。 – Ertug

相关问题