簡體   English   中英

HTTP請求的keep_alive和persistent選項有什么區別?

[英]What's the difference between keep_alive and persistent option for HTTP request?

有人可以解釋我們以下參數之間的行為差​​異:

Zend_Http_Client類中的keep_alive參數?

在Zend_Http_Client_Adapter_Socket類中持久化

我想了解我需要做些什么來保持一堆HTTPS連接打開(以避免SSL的取消)。

謝謝,加斯頓

如果你使用持久連接,你也應該使用keep-alive,因為如果不保持Alive HTTP 1.1連接,你的persitent將不得不做很多工作來模擬這項工作。

編輯:(是時候吃了)

Keepalive設置講述了由服務器設置的非常短的時間設置。 Apache默認為Keep-Alive請求處理15秒 ,但當前優化設置為5秒。 這主要是為了幫助HTTP客戶端下載附加到同一HTTP連接中的頁面的js和css。 如果您可以調整服務器設置,您可以嘗試最長的Keep-Alive查詢(但要小心,這將嚴重限制服務器加入的客戶端數量)。

持久連接模式是為了真正模擬長期持久連接,打開的套接字在腳本結束時不會關閉。 你應該非常小心這樣的設置。 你在CLI模式嗎? FCGI? 如果你在apache進程中運行,我真的不確定你會在下一個請求上獲得相同的連接(這可能會被另一個apache進程處理),如果你的代碼運行起來甚至更糟大型部署中的幾個apache服務器。 這是針對客戶端(PHP)的,但它對目標服務器來說也是一個巨大的痛苦。

重新編輯 :(必須說一些關於SSL的內容)

您確定需要優化SSL否定時間嗎? SSL使用Cache(至少在服務器端)將限制限制為第一個請求。 SSL會話的客戶端緩存可能由PHP stream_socket_client函數(由Zend類使用)完成。如果不是,您可以自己測試一個新類(只需要實現該接口)並嘗試使用curl,因為curl使用默認情況下SSL會話緩存。

KeepAlive意味着連接可以在單個請求的過程中重用,盡管它將在請求結束時關閉。 持久性意味着連接將在單個請求之后生存,以便由后續請求在同一PHP進程上使用。

僅供參考,雖然keep-alive應該重用HTTP連接,但適配器類(至少最近為1.10)無法正確處理此問題並且無論標志如何都會打開新連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM