2013-09-05 2 views
5

Glimpse의 HUD는 타이밍에 대한 매우 유용한 정보를 제공하며, 다양한 브라우저의 개발자 툴을 사용하여 네트워크를 캡처하는 것처럼 보입니다.Glimpse는 서버, 유선 및 클라이언트의 타이밍을 어떻게 계산합니까?

여기 by Phil Haack에 설명 된대로 HttpModule 사용자 지정을 간단하게 구현하면 서버 처리 타이밍이 완전히 달라집니다. 받은 타이밍은 Glimpse가보고하는 타이밍보다 항상 낮습니다. 그러나 브라우저 툴링 타이밍에 훨씬 가까워졌습니다.

Glimpse는 분명히 이것을 계산하는 훨씬 더 정교한 기술을 사용합니다.

  • 서버 처리 시간은 어떻게 계산됩니까?
  • 배선 시간은 어떻게 정확하게 계산 되나요?
  • 클라이언트 타이밍이 모두 Javascript 이벤트를 수신하는 것을 기반으로한다고 상상해보십시오. 이 올바른지?

답변

8

클라이언트를 통해 전송되는 glimpse.js 클라이언트 파일의 일부입니다 glimpse.hud.js 파일을 살펴 걸릴 경우, 당신은 모든 타이밍이 구현 된 Navigation Timing API 기반으로하는 것을 볼 수 있습니다 브라우저에서.

HUD에서 Glimpse로 표시되는 타이밍은 해당 API에서 제공하는 타이밍을 기준으로 계산됩니다. 그래서 첫 번째 엿볼가 성능 문제를 찾을 수있는 위치에 추가적인 가치를 제공 할 수있는 계산 타이밍을 시작

var timingsRaw = (window.performance 
       || window.mozPerformance 
       || window.msPerformance 
       || window.webkitPerformance 
       || {}).timing; 

된 후 그 타이밍에 보류됩니다 (서버에 문제가 클라이언트에 있습니다 ...)

processTimings = function (details) { 
    var result = {}, 
     networkPre = calculateTimings('navigationStart', 'requestStart'), 
     networkPost = calculateTimings('responseStart', 'responseEnd'), 
     network = networkPre + networkPost, 
     server = calculateTimings('requestStart', 'responseStart'), 
     browser = calculateTimings('responseEnd', 'loadEventEnd'), 
     total = network + server + browser; 
    ... 
}; 

calculateTimings = function (startIndex, finishIndex) { 
    return timingsRaw[finishIndex] - timingsRaw[startIndex]; 
}; 

당신이 볼 수 있듯이

,이 또한 효율적으로 서버에서 계산 당신의 타이밍은, 일별로 표시된 것 다음 낮은 이유를 설명 서버,에 대해 표시된 타이밍에 적용됩니다.

참고 : 물론 이러한 타이밍은 HTTP 탭의 HUD에 표시된 타이밍에만 적용됩니다. 예를 들어 Timeline 탭에 표시된 시간은 서버에서 계산됩니다. 서버에서 다른 처리 단계 사이의 시간을 보여주기 때문입니다. 명백한 이유로 브라우저에서 시간을 측정 할 수 없습니다.

이 질문에 대한 답변을 보내주십시오.

+0

감사합니다. 나는 숲에서 나무를보기 위해 싸우고 있었다. – Jarfish