2011-03-15 137 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()(有一个例子)。