我試圖建立從Silverlight應用程序到Apache頁面(即,不爲每個HTTP請求創建新的TCP連接)由Apache服務器託管的HTTP持久連接。服務器響應中的「連接:保持活動」
爲此,我需要Web服務器發送其HTTP響應,並將「Connection」頭設置爲「Keep-alive」。客戶端,似乎沒有任何問題,因爲Silverlight提供的網絡API基本上是瀏覽器網絡功能的一個包裝,從我讀過的內容來看:如果瀏覽器支持HTTP 1.1和Connection:Keep-Alive默認情況下,它的請求,沒關係。內容長度也很好定義,以便服務器知道何時必須發送響應。但是,服務器對PHP請求的響應系統地將「Connection:」設置爲「close」,從而結束連接並阻止持續連接。
我試過一些東西來解決這個問題:不同的方法(GET和POST),在我的腳本的開頭,明確給出了一個「連接:保持活動」的響應以下PHP代碼:
header("Connection: Keep-alive");
後者將預期的標題添加到響應中,這很好,但附加語句「Connection:close」仍然附加在響應標題中。
它是強制「關閉」(出於某種安全或性能目的,我猜測)的PHP或Apache的功能,還是我只是在這裏失去了一些東西?
在此先感謝。
P.S. :通過嗅探數據包,我注意到沒有多少網站使用「Keep-alive」並且TCP連接重新建立。 Keepalive是HTTP 1.1下的默認和首選行爲嗎?
這可能阿帕奇,而不是PHP - 給我所知,PHP擁有沒有控制權。您可以通過嘗試通過相同的連接請求靜態文件進行驗證。 Apache指令:http://httpd.apache.org/docs/2.2/mod/core.html#keepalive – 2010-06-07 16:45:17