使用powershll和IECapt取得網頁瀏覽速度
前陣子在查個問題,我必須要取得瀏覽網頁時所需花費的時間作為釐清問題的參考依據。 一個網頁的呈現,簡單的講,在瀏覽器發出request後,逐一由網站取得html、css、javascript、圖檔等等。接者,瀏覽器會做解析、處理、執行、呈現。 先撇除使用者端因使用不同的瀏覽器、版本,造成網頁呈現速度不同的這個因素(當然還要剔除網路問題)。一般來講,網站主機端的軟硬體效能,以及html、css、javascript也深深影響網頁最後需要多少時間才能呈現… 以上詳細的過程,和相關技術,講起來簡單,其實又是另一門很深的功夫和學問。建議可以參考下面兩份資料 Yahoo - YSlow Google - Page Speed 因此,取得瀏覽網頁時所需花費的時間,必須要能儘量符合人們使用瀏覽器觀看網頁時的狀況。而不能使用wget這類的方式來測試單獨取得html的速度。思考了很久,最後還是使用 powershell 和 IECapt 。 簡單的說明一下作法…先提 IECapt ,他是一個在指令列(command-line)下執行的小工具程式。是透過 IE 去擷取特定的網頁畫面,並存成圖檔。也因此,使用 IECapt 同等於使用IE去瀏覽網頁。 接者,就只是很單純的利用 powershll去呼叫 IECapt 『瀏覽』網頁,並計算每次瀏覽網頁時時間。也就是計算呼叫起來,直到結束之間的時間差。 不過,在做長期監控時需要考量一點。就是每次測試時,無法確定在測試的當下,被測試的主機狀態如何?特別是下列兩種狀況。因此需要設定 time out 時間,避免測試時因下列狀況卡住 被測試的主機,當下因各種問題,造成反應異常緩慢。 當為此情況時,測試結果為time out 時間。 被測試的主機,當下已經無法提供服務(如,如法連線)。 當為此情況時,測試結果為0。 以下,就是測試速度的程式碼 附註: IECapt 有時會發生不明異常,而中斷。這點,目前我還沒比較好的解決方案… #避免留有之前測試所產生的圖檔 if ( Test-Path webservet_test.jpg){ remove-item $pwd \ $testcaptfile -force } #產生shell,準備開始測試 $WshShell = New-Object -ComObject W...