設置
打開fiddler,默認情況下Rules->Performance->Simulate Modem Speeds是未勾選狀態,此時網絡正常。當選中此選項后,網速就會變慢,打開網頁就會加載很久,這樣就實現了弱網效果。

備注:如果想了解(上傳/下載)網速具體數值,可以訪問http://www.speedtest.cn/網站,進行測試
限速原理
Fiddler限速是以網絡延遲的方式實現的,網絡延遲時間*網速=傳輸字節數
點擊Rules – Customize Rules(快捷鍵Ctrl + R)打開Fiddler ScriptEditor,或者直接點開右側主頁簽的FiddlerScript。


打開該文件后,Ctrl + F 查找m_SimulateModem標志位,可以看到如下代碼
if (m_SimulateModem) { // Delay sends by 300ms per KB uploaded. oSession["request-trickle-delay"] = "300"; // Delay receives by 150ms per KB downloaded. oSession["response-trickle-delay"] = "150"; }
注釋說明:
request-trickle-delay中的值代表每KB的數據被上傳時會被延時多少毫秒;
response-trickle-delay則對應下載時每KB的數據會被延時多少毫秒。
比如你要模擬上傳速度100KBps的網絡,那上傳延遲就是1KB/100KBps=0.01s=10ms,就改成10
默認設置下上傳延時為300ms下載延時為150ms,大致模擬出來的寬帶如下:
上傳帶寬 = 1KB/300ms = (1 * 8/1000) /0.300 ≈ 0.027Mbps
下載帶寬 = 1KB/150ms = (1 * 8/1000) /0.150 ≈ 0.053Mbps
(1MB = 1024 KB ≈ 1000 KB 為了運算簡便就用了1000的倍數,忽略誤差)
實際帶寬是在計算所得的基礎上乘2,至於原因,沒有深究
上傳帶寬=((1*8/1000)/0.300)*2.0≈0.106Mbps
下載帶寬=((1*8/1000)/0.150)*2.0≈0.053Mbps
假如我們要模擬2M左右的寬帶((1* 8/1000)/ x )*2.0=2
if (m_SimulateModem) { // Delay sends by 300ms per KB uploaded. oSession["request-trickle-delay"] = "8"; // Delay receives by 150ms per KB downloaded. oSession["response-trickle-delay"] = "8";
設置網絡環境參數
1、查找到if (m_SimulateModem)語句,修改代碼。模擬網絡帶寬不是恆定的一個低速的值,而是一定范圍內隨機抖動,下面的腳本實現了一個隨機延時量設置,使得網絡帶寬不是恆定為一個低速的值。
static function randInt(min, max) { return Math.round(Math.random()*(max-min)+min); } if (m_SimulateModem) { // Delay sends by 300ms per KB uploaded. oSession["request-trickle-delay"] = ""+randInt(100,200); // Delay receives by 150ms per KB downloaded. oSession["response-trickle-delay"] = ""+randInt(1,50); }
2、在代碼里找到onBeforeRequest,這里定義了在發送請求前做什么。加入如下代碼可以實現延遲:
oSession["request-trickle-delay"]="3000"; //請求階段延遲3秒 oSession["response-trickle-delay"]="3000"; //響應階段延遲3秒

備注:每次編輯並保存配置文件后,Simulate Modem Speeds選項會被取消,需要重新勾選。
作者:小魷魚Gun神
鏈接:https://www.jianshu.com/p/a9e5605bb454
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。