Windows-7
在 Windows 7 上接受套接字上的連接需要一秒鐘以上
這是我所做的:
- 我編寫了一個最小的 Web 伺服器(使用 Qt,但我認為這與這裡無關)。
- 我在合法的 Windows 7 32 位上執行它。
問題:
- 如果我使用 Firefox、IE、Chrome 或 Safari 發出請求,我的伺服器大約需要一秒鐘才能看到有新的連接被接受。
線索:
- 使用 Firefox、IE、Chrome、Safari 之外的其他客戶端(wget,自己的測試客戶端,它只打開一個套接字)看到新連接只需幾毫秒。
- 我安裝了 Apache 並嘗試了上面提到的客戶端。正如預期的那樣,為請求提供服務大約需要 50 毫秒。
- 執行 Windows XP(或在 Linux 下編譯和執行相同的程式碼)時,該問題無法重現
- 該問題似乎僅在連接到 localhost 時才出現。一位朋友通過 Internet 連接並提供連接只需要幾毫秒。
- 在不同埠執行伺服器對 1 秒延遲沒有影響
這是我沒有運氣的嘗試:
- 停止 Windows Defender 服務
- 停止 Windows 防火牆服務
有任何想法嗎?這是 Windows 7 中一些巧妙的“安全功能”嗎?為什麼 Apache 不受影響?為什麼只有瀏覽器受到影響?
我和 MidnighToker 在一起 - 只有當你點擊“localhost”時,還是通過本地 IP 地址延遲?如果僅當您針對“本地主機”時,請檢查您的主機文件是否有奇怪的條目。Windows Vista 和 7 還包括一個用於 IPv6 的 HOSTS 條目(“::1 localhost”)。
由於我個人看到未使用的 IPv6 連接在 Firefox 中啟用和未使用時會減慢 Ubuntu 上的 Web 瀏覽連接,並且讀到其他人在 Windows 中看起來相似,所以這可能是需要考慮的事情(我個人沒有遇到過Vista 或 Win7 中的問題)。
在 Ubuntu 下,Firefox 有它自己的“不使用 IPv6”設置,可以修復延遲,而無需更改系統範圍的網路;所以也許 Firefox for Windows 也有它(不知道,我在 Windows 中使用 IE):
以下是如何在 Firefox 中禁用它,或許至少可以開始測試該理論:
1.在地址欄輸入about:config,輸入。
*2.*在列表中找到network.dns.disableIPv6 。
3.右鍵點擊->切換(您希望將其設置為“ true ”以禁用)
4.重新啟動您的 Mozilla 應用程序並重試。