Fiddler是一個(gè)web調(diào)試代理扒腕。它能夠記錄所有客戶端和服務(wù)器間的http請(qǐng)求,允許你監(jiān)視,設(shè)置斷點(diǎn)吭净,甚至修改輸入輸出數(shù) 據(jù),fiddler包含了一個(gè)強(qiáng)大的基于事件腳本的子系統(tǒng)肴甸,并且能夠使用.net框架語言擴(kuò)展寂殉。更多詳細(xì)的信息我們可以在fiddler的官方網(wǎng)站上去了 解,http://www.fiddler2.com/fiddler2/原在,上面詳細(xì)介紹了fiddler的用法與擴(kuò)展友扰。
限速對(duì)于web前端研發(fā)是非常重要的,由于開發(fā)者的機(jī)器一般配置都很高庶柿,并且是在localhost下來調(diào)試程序村怪,所以很難模擬到用戶的真實(shí)使用情 況,如正在下載JS,css等靜態(tài)資源的時(shí)候浮庐,頁面的一個(gè)渲染情況甚负。當(dāng)網(wǎng)速很慢的時(shí)候,我們更希望看到的是先渲染出用戶界面审残,而不是讓用戶看到一片空白梭域。 那么這個(gè)時(shí)候,網(wǎng)絡(luò)限速就能很方便在localhost針對(duì)類似的情況來做性能調(diào)試與優(yōu)化搅轿。
我們可以通過fiddler來模擬限速碰辅,因?yàn)閒iddler本來就是個(gè)代理,它提供了客戶端請(qǐng)求前和服務(wù)器響應(yīng)前的回調(diào)接口介时,我們可以在這些接口里 面自定義一些邏輯没宾。Fiddler的模擬限速正是在客戶端請(qǐng)求前來自定義限速的邏輯凌彬,此邏輯是通過延遲發(fā)送數(shù)據(jù)或接收的數(shù)據(jù)的時(shí)間來限制網(wǎng)絡(luò)的下載速度和 上傳速度,從而達(dá)到限速的效果循衰。
他提供了一個(gè)功能铲敛,讓我們模擬低速網(wǎng)路環(huán)境…啟用方法如下:
Rules → Performances → Simulate Modem Speeds (如下圖)
勾選之后,你會(huì)發(fā)現(xiàn)你的網(wǎng)路瞬間慢超多…
(想當(dāng)年國中時(shí)我們的網(wǎng)路速度也是一路降子走來啊…)
如果你覺得模擬的速度慢到一個(gè)爆炸会钝,不Make Sense 的話…
你也可以自己定義Modem Speeds 究竟要多快…
點(diǎn)開Rules → Customize Rules (如下圖)
找m_SimulateModem這個(gè)字伐蒋,你會(huì)找到下面這段:
這就是他模擬網(wǎng)路速度的原理,每上傳/下載1KB 要delay 多久…
如果你習(xí)慣用kbps 去算的話迁酸,那么我們的算法就是 1000/下載速度 = 需要delay的時(shí)間(毫秒)先鱼,比如50kb/s? 需要delay200毫秒來接收數(shù)據(jù)。
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "300";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "150";
請(qǐng)注意奸鬓,當(dāng)你存檔之后焙畔,原本已經(jīng)勾選的Simulate Modem Speeds 會(huì)被取消勾選,
要記得再到Rules → Performances → Simulate Modem Speeds 勾選喔~
同場(chǎng)加映:讓Fiddler 只針對(duì)某個(gè)Process 進(jìn)行Debugging
以Windows 為例串远,F(xiàn)iddler 開了之后宏多,只要是走IE 下「網(wǎng)際網(wǎng)路選項(xiàng)」的程式(IE, Chrome)
預(yù)設(shè)所有流量都會(huì)經(jīng)過Fiddler
如果你覺得你在模擬低速網(wǎng)路連網(wǎng)頁時(shí),不想影響其他程式…
你可以指定Fiddler 只針對(duì)某Process Debug...
方法為澡罚,把Fiddler 視窗中伸但,那個(gè)很像靶心的東西給拉到你要Debug 的程式上(如下圖)
被你靶心拉到的程式,在一瞬間會(huì)有「觸電」的感覺如下圖XD
放開滑鼠后留搔,F(xiàn)iddler 就只會(huì)監(jiān)控你指定的Process 啰~
其他Fiddler 小秘技(from Vexed's Blog)
Fiddler替換線上檔案為本機(jī)端檔案或另一個(gè)線上檔案
先講將線上檔案替換為本機(jī)端檔案更胖。 方法是點(diǎn)下Fiddler 右上的AutoResponder ,勾選Enable automatic responses 和Unmatched requests passthrough 隔显,按下右邊的Add :
再將下方的Rule Editor 第一行修改為線上檔案位址:
線上檔案位址也可以使用Regular Expression 闸准,開頭加上regex: 即可叼风。
按下Rule Editor 第二行右邊的箭頭昵慌,選擇Find a file ... :
選擇要替換成的本機(jī)端檔案袭蝗,按下右邊的SAVE :
大功告成!
將線上檔案替換成另一個(gè)線上檔案哺窄,步驟幾乎一模一樣捐下,差別僅在Rule Editor 第二行填入的是另一線上檔案位址:
感謝草兒介紹AutoResponder這么好用的東西m(__ __)m 。
更多AutoResponder的說明請(qǐng)參考Fiddler官方文件- AutoResponder Reference 萌业。
Fiddler替換HTTPRequest Host
這邊指的替換HTTP Request Host是坷襟,所有原先發(fā)到a.com的HTTP Request , Fiddler都幫你轉(zhuǎn)發(fā)到b.com 生年,而在瀏覽器中毫無感覺婴程。測(cè)試debug過程中常有這種需求,例如用www.dev.demo.com替換 www.demo.com 抱婉。
替換的方法有兩種档叔,一種是暫時(shí)的桌粉,一種是永久的。 暫時(shí)的方法是在Fiddler 左下角輸入:
urlreplace www.demo.com www.dev.demo.com
按下Enter 衙四,所有原先發(fā)到www.demo.com 的HTTP Request 就轉(zhuǎn)發(fā)到www.dev.demo.com 了铃肯。
要清除轉(zhuǎn)發(fā),請(qǐng)?jiān)谕晃恢幂斎耄?/p>
urlreplace
按Enter 就可以了传蹈。
更詳細(xì)的說明請(qǐng)參考Fiddler官方說明文件- QuickExec Reference 押逼。 可以發(fā)現(xiàn)urlreplace 做的是整個(gè)網(wǎng)址字串的取代,所以可以動(dòng)手腳的地方不只于此惦界。
永久的方法是修改Fiddler的CustomRules.js挑格,注意是.js! 點(diǎn)下Fiddler 上方的Rules 沾歪,再點(diǎn)Customize Rules :
如果有安裝FiddlerScript Editor 漂彤,會(huì)用FiddlerScript Editor開啟CustomRules.js ,否則會(huì)用筆記本開啟瞬逊。 或者也可以到「我的文件 Fiddler2 Scripts 」直接編輯CustomRules.js 显歧。
請(qǐng)先在CustomRules.js 找到:
static function OnBeforeRequest ( oSession : Session ) {
// ...
}
在函式OnBeforeRequest 中加入:
if ( oSession . HostnameIs ( 'www.demo.com' ) )
oSession . hostname = 'www.dev.demo.com' ;
將CustomRules.js 存檔仪或, Fiddler 會(huì)自動(dòng)重新載入CustomRules.js 确镊,原先發(fā)到www.demo.com 的HTTP Request 就會(huì)自動(dòng)轉(zhuǎn)發(fā)到www.dev.demo.com 。
更詳細(xì)的說明請(qǐng)參考Fiddler官方說明文件- Script Samples 范删。