2011-03-15 4 views
0

우리는 .NET Framework 3.5 SP1에서 작성된 WPF 응용 프로그램을 사용하여 다양한 웹 응용 프로그램을 표시합니다. WPF 응용 프로그램은 웹 브라우저 컨트롤을 사용하여 다양한 응용 프로그램의 웹 페이지를 표시합니다.웹 페이지 크기 측정

Google은 응답 시간과 다양한 기타 매개 변수를 측정하기 위해 이러한 웹 페이지를 계측하며 페이지 크기는 중요한 매개 변수입니다.

아래 코드는 페이지 크기에 액세스하는 방법을 설명합니다.

void wbEvents1_DocumentComplete(object pDisp, ref object URL) 

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

} 

그러나 우리는 여기에 다음과 같은 문제에 직면하고있다 : 우리는 관련 자원의 크기없이 다운로드 된 HTML의 크기, 즉 문서 객체 만 파일 크기를 얻을 수 있습니다

  1. (.css; .js; .img 등). 우리가 필요로하는 것은 HTML 내의 모든 자원 객체 (.css, .js, .img 등)를 포함하여 HTML 문서의 전체적인 페이지 크기입니다.

  2. 다운로드 한 페이지의 헤더에 다음 매개 변수 중 하나가있는 경우에도 마찬가지입니다. IE는 fileSize 속성에 대한 값을 반환하지 않습니다. 우리가 초기에 직면하고있는 위의 두 문제 해결에 도움을

    Cache-Control = no-cache

    Pragma = no-cache

요청.

답변

0

이것은 직접적인 대답은 아니지만 문제를 일으키는 웹 페이지를 로컬 프록시를 통해 가져 오는 것을 고려해 볼 수 있습니다. 로컬 프록시는 모든 트래픽을 모니터링하고 계량화하여 프로세스 외부에서 실행되면 IPC를 통해 상위 응용 프로그램에 다시 통신 할 수 있습니다. .

브라우저와 인터넷 사이에 프록시를 배치하면 전송 된 바이트를 정확하게 측정 할 수 있고 각 요청에 소요 된 시간 등을 알 수 있습니다. 객체 유형별로 트래픽을 분석 할 수있는 기존 모니터링 솔루션이 많이있을 것입니다. 또는 프록시로부터 원시 정보를 제공받은 자신의 분석 파트를 작성할 수 있습니다. 아마도, Squid + 로그 파일 분석기 플러그인 또는 기존의 프록시를 적용하여 필요한 통계를 수집하십시오 (CharlesProxy의 정신으로).

브라우저 컨트롤에 사용자에게 프록시를 지정하려면 InternetSetOption() (예가 있습니다)을 사용할 수 있습니다.

관련 문제