首先看原理:
(來源:《MobilePerformanceVelocity2011.pdf》 by DavidWei.)
這方案有兩個關鍵點:
1、為了避免各種DNS緩存,每組請求必須用一個從來沒被用過的全新N級域名。這就要求你的域名支援泛解析。例如我為了這個實踐,開了*.qgy18.com的解析。
2、每組的第一個請求響應必須以HTTP/1.0傳回。我開始還沒注意這個,經aoao提醒才明白,這樣才可以確定後面的請求會重建Connection。
t2和t1指向同一個域名,且都需要重建立立連接配接,是以t2-t1是DNS解析時間;t2傳回Connection: Keep-Alive,t3是在Keep-Alive指定的timeout時間内發起的新請求,且傳回内容為空,是以是RTT(Round-Trip Time);t4在t3的基礎上隻是把傳回内容大小由0k變成10k,是以t4-t3是加載這10k資源花費的時間,這就可以得到網絡帶寬了。為了減少網絡波動,也可以多測幾次取平均值。
明白了原理就好辦了,剩下的幾行代碼相信大家都會寫,略過。
https://imququ.com/post/how-to-get-dns-time-in-browser.html