2011-03-15 135 views
0

我們在.Net框架3.5 SP1,用於顯示各種Web應用程序創建一個WPF應用程序。 WPF應用程序使用Web瀏覽器控件來顯示各種應用程序的網頁。測量頁面大小

我們的儀器在這些網頁中測量響應時間以及其他各種參數,其中的頁面大小是一個重要參數。

下面的代碼描述了我們是如何訪問頁面大小。

void wbEvents1_DocumentComplete(object pDisp, ref object URL) 

{ objInstrument.PageSize = Convert.ToInt32(((mshtml.HTMLDocumentClass)(((SHDocVw.IWebBrowser2)pDisp).Document)).fileSize); 

} 

但是,我們在這裏面臨着以下問題:

  1. 我們能夠得到的只有Document對象即下載的HTML的大小的文件大小隻有無相關資源的大小(.css; .js; .img等)。我們需要的是HTML文檔的整體頁面大小,包括HTML中的所有資源對象(.css; .js; .img等)。

  2. 此外,在如果下載的頁面有任何在其報頭中的以下參數中的情況下; IE不會爲fileSize屬性返回任何值。

    Cache-Control = no-cache

    Pragma = no-cache

請求在解決我們所面臨的最早的上述2個問題的幫助。

回答

0

這不是一個直接的答案,但也許你可以考慮通過當地的代理,如果用完的進程可能監測和儀器上的所有流量,並通過IPC通信回父應用程序獲取有問題的網頁。

在瀏覽器和網絡之間放置一個代理服務器會給你傳輸字節的精確和完整的度量,花在每個請求上的時間等。可能有很多現有的監控解決方案,它們會按對象類型分解流量,等等,或者您可以編寫自己的分析報告,給出來自代理的原始信息。也許,Squid +日誌文件分析器插件或修改現有的代理來收集所需的統計信息(本着CharlesProxy的精神)。

要指示瀏覽器控制用戶的代理,你可以使用InternetSetOption()(有一個例子)。