2012-12-29 83 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

相關問題