今天用C#編寫了一個Chrome Remote Debugger的客戶端程序,發現使用rest和websocket程序時第一次連接的時候特別慢,大概每次都要消耗一秒左右,而用chrome直接連接卻沒有這種情況。
由於后續編寫蜘蛛時也經常要調試,每次多消耗兩秒覺得開銷有點大,便准備着手解決它。
最開始以為是webproxy的問題,后來查看了一下,確實沒有代理。便用Fiddler模擬了一下rest請求試了一下,它也需要一秒左右。便對比了一下chrome和fiddler的請求包,發現Request的Url有所不同:
-
Chrome用的Host是127.0.0.1:http://127.0.0.1:9222/
-
Fiddler用的Host是localhost:http://localhost:9222/
於是便將程序中的請求也改成了127.0.0.1,我的程序便也變快了。
解決了問題后,回頭來再分析一下原因,最開始以為是我的dns解析出問題了,試了一下,解析localhost是很快的,地址也是正常的。於是我便自己寫了一個websocket server自己嘗試連接了一下試試,發現出現了同樣的現象:服務器和客戶端一個使用localhost,一個使用127.0.0.1的時候,就會出現一秒左右的連接延遲,一致的時候就是正常的。
看來這個並不是Server端Chrome的問題,解決方式也知道了。至於是不是協議規定的,目前還沒有時間詳細研究,后續有空再繼續研究一下。