我们在.Net Framework 3.5 SP1中创建了一个WPF应用程序,用于显示各种Web应用程序。 WPF应用程序使用Web浏览器控件来显示各种应用程序的Web页面。
我们检测这些网页以测量响应时间和各种其他参数,其中页面大小是一个重要参数。
下面的代码描述了我们如何访问页面大小。
void wbEvents1_DocumentComplete(object pDisp, ref object URL)
{ objInstrument.PageSize = Convert.ToInt32(((mshtml.HTMLDocumentClass)(((SHDocVw.IWebBrowser2)pDisp).Document)).fileSize);
}
但我们在这里面临以下问题:
我们只能获取Document对象的文件大小,即只下载HTML的大小而没有相关资源的大小,如(.css; .js; .img等)。我们需要什么是HTML文档的整体页面大小,包括HTML中的所有资源对象(.css; .js; .img等)。
如果下载的页面在其标题中包含以下任何参数,也是如此; IE不会返回fileSize属性的任何值。
Cache-Control = no-cache
Pragma = no-cache
请求帮助解决我们最早面临的上述两个问题。
答案 0 :(得分:0)
这不是一个直接的答案,但也许你可以考虑通过本地代理获取有问题的网页,本地代理可以监控和监控所有流量,并在运行过程外通过IPC将其传回父代应用程序。
在浏览器和网络之间放置一个代理,可以准确,完整地测量传输的字节数,每个请求花费的时间等等。可能有很多现有的监控解决方案可以按对象类型划分流量等或者您可以根据代理的原始信息编写自己的分析片段。也许,Squid +日志文件分析器插件或调整现有代理来收集所需的统计数据(本着CharlesProxy的精神)。
要指示浏览器控件使用代理,您可以使用InternetSetOption()(这是一个示例)。