最近訪問某知名網站的速度很是慢,有時候須要2分鐘還沒徹底打開,頁面展現了一半就卡住,而後等半天才繼續顯示下面部分。這種狀況已經有幾個月了,不知道是他們服務器緣由仍是我所在網絡的問題,可是基本上在其餘網絡訪問速度也慢,若是是網站自身的問題,我天然沒辦法解決,只能本身動手,先看看問題出在哪裏,而後分析一下有沒有可能繞過相關問題。因而用上了一個很好的HTTP分析工具,Fiddler Web Debugger 。php
Fiddler的功能很強大,它不只能夠查看HTTP的通訊信息,也能夠進行分析,從而發現通訊過程當中的問題,爲優化網站頁面和提升性能提供依據。另外,它提供了對url請求進行重定向處理(AutoResponder)的功能,用戶能夠在請求url時進行自定義處理,這也就爲以制定方式訪問頁面提供了可能性,這也是本文依靠的主要功能。css
這個軟件的具體使用方法能夠參考《HTTP調試工具:Fiddler的使用方法介紹》本文只介紹如何用它來解決實際問題。html
步驟一:獲取與網站頁面的通訊信息web
爲了保證只監控到指定網頁的通訊信息,我只打開了一個IE,而且在fiddler設置只監控web browers(默認是All Processs)另外經過fiddler清除了IE緩存,從而能獲取更加真實頁面加載時間。而後在IE中輸入相應網址(就不具體指明瞭)進行訪問,這時能夠看到fiddler左側出現許多訪問這一網站的請求url,等待中……。直到IE狀態欄顯示加載完畢的提示「完成」,這時中止fiddler的通訊捕獲,這樣就完成了通訊捕獲。如下是局部抓圖:正則表達式
步驟二:分析性能瓶頸緩存
接下來就是分析上面各個sessions(請求),找出哪些請求致使了加載頁面慢,我通常按照以下步驟:服務器
(1)找到不正確的請求網絡
全選全部sessions,而後,選擇右面的Statistics功能,這樣就能夠統計出這些sessions的整體信息,以下圖(部分):session
這裏我關注的是從請求開始到返回請求的整個時間,這裏消耗了2分56秒(Sequence (clock) time),顯然,這是不能夠接受的速度。而後我發現,在response codes中,統計的HTTP/502有12個,要知道,Http 5xx表明的是服務器錯誤,通常來講,這種錯誤會致使服務器反應很長時間才返回給客戶端一個錯誤的代碼信息,從而可能致使請求速度的急劇降低。有可能這個網站就是由於這些錯誤請求致使加載頁面慢的。查了一下:工具
502 - 網關錯誤:若是試圖運行的 CGI 腳本不返回有效的 HTTP 標頭集,將出現此錯誤消息。若要解決此問題,必須調試 CGI 應用程序,以肯定它爲何會將無效的 HTTP 信息傳遞給 IIS。
也就是說有12個url請求出現了這一錯誤。其實在左側sessions中,也能夠看出來,它以紅色驚歎號開頭,而且能夠知道請求的url等信息。
(2)經過timeline功能查看全部消耗的時間
全選sessions後,在界面右側的timeline功能,能夠以圖形方式統計請求各個文件耗費的時間(這裏會以請求的文件爲單位,將那些請求文件相同可是參數不一樣的url合併統計):
其中橫座標是時間,縱座標是請求文件,能夠分析一下到底是頁面仍是圖片等加載時間比較長,經過分析,確實是那12個錯誤請求致使的加載慢,其餘的css、js和圖片,消耗的時間能夠忽略。
步驟三:解決性能瓶頸
性能問題本該是網站來解決的,我沒那個能力去真正解決性能問題,這裏只是經過別的方法,來繞過致使瓶頸的問題罷了。分析了一下這12個錯誤請求url,歸根結底就是一個adjs.php和gmjs.php,固然每一個請求的參數有所不一樣。這其實在加載頁面時候經過他們這些sessions前面圖標就能夠看出是有問題的:
下箭頭表示正在下載,然而,我觀察了,在這個請求時,下載時間很長,卡住了好久,而後變成紅色歎號圖標,才繼續請求別的url。
分析adjs.php和gmjs.php文件,從命名來看,應該是與頁面中廣告有關的,對於用戶來講,不要這個請求也應該不影響瀏覽網頁吧,因此這裏就是要想辦法在請求時候,若是是關於這兩個文件的請求,想法子繞過去就行了。
這就用上了fiddler的AutoResponder功能。開篇介紹了,這個功能能夠對請求進行攔截,並進行自定義處理。
首先選擇「AutoResponder」選項卡,而後選擇「Enable Automatic Responses」,選擇「add」按鈕來添加一個規則:
我這裏選擇若是請求包含「adjs/php 」(隱去前面的具體網址),則放棄(*drop)不去請求,固然這裏的字符串是能夠用正則表達式實現更爲複雜的字符串匹配,另外,也能夠選擇其餘匹配後的處理方式,好比讓本地模擬一個response,而不用真的到服務器請求了。
選擇保存。再次按照步驟一,加載頁面,cool,瞬間加載完畢,不影響瀏覽,廣告少了一些,看來那兩個致使加載慢的頁面就是與廣告相關的。
這種經過fiddler來過濾rul請求的功能,還能夠實現更多功能,好比過濾掉對於音頻、視頻、圖片等的請求,只獲取瀏覽者須要的內容。