0

我们有一个在 .Net Framework 3.5 SP1 中创建的 WPF 应用程序,用于显示各种 Web 应用程序。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, etc) 中的所有资源对象。

  2. 此外,如果下载的页面在其标题中具有以下任何参数;IE 不会为 fileSize 属性返回任何值。

    Cache-Control = no-cache

    Pragma = no-cache

请求帮助以解决我们最早面临的上述 2 个问题。

4

1 回答 1

0

这不是一个直接的答案,但也许您可以考虑通过本地代理获取有问题的网页,该代理可以监控和检测所有流量,并在进程外运行时通过 IPC 将其传达回父应用程序。

在浏览器和网络之间放置一个代理可以让您准确和完整地测量传输的字节数、每个请求花费的时间等。可能有很多现有的监控解决方案会按对象类型等细分流量,或者您可以根据代理的原始信息编写自己的分析片段。也许,Squid + 日志文件分析器插件或调整现有代理来收集所需的统计信息(本着CharlesProxy的精神)。

要指示浏览器控件使用代理,您可以使用InternetSetOption()(有一个示例)。

于 2011-03-17T01:58:50.833 回答