Glimpse如何计算服务器,电线和客户端的时序?

Jar*_*ish 6 asp.net glimpse

Glimpse的HUD提供了一个非常有用的时间视图 - 它们似乎与各种浏览器的网络捕获开发人员工具相关联.

如果我采用Phil HaackHttpModule所详述的自定义的简单实现,我会得到完全不同的服务器处理时序.收到的时间总是远低于Glimpse报道的时间.然而,Glimpse与浏览器工具时序的关系更加紧密.

Glimpse显然使用了更为复杂的技术来计算它.

  • Glimpse如何计算服务器处理时间的持续时间?
  • 如何精确计算电线时间?
  • 我想客户端时间都是基于听Javascript事件.它是否正确?

cgi*_*els 9

如果你看看在glimpse.hud.js文件,这是一部分glimpse.js被发送到客户端的客户端文件,然后你会看到所有的计时都是基于导航计时API由实施浏览器.

根据该API提供的时间计算Gynmpse在HUD中显示的时间.所以首先Glimpse抓住了这些时间

var timingsRaw = (window.performance 
               || window.mozPerformance 
               || window.msPerformance 
               || window.webkitPerformance 
               || {}).timing; 
Run Code Online (Sandbox Code Playgroud)

之后,它开始计算时间,可以提供一些额外的值来查找性能问题的位置(服务器上,客户端上的问题...)

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];
};
Run Code Online (Sandbox Code Playgroud)

如您所见,这也适用于服务器显示的时序,这解释了为什么您在服务器上有效计算的时间低于Glimpse显示的时序.

注意:当然,计算这些计时的方式仅适用于HTTP选项卡上HUD中显示的计时.例如,时间线选项卡中显示的计时是在服务器上计算的,因为它们显示服务器上不同处理步骤之间的时间,这显然是浏览器无法计时的原因.

我希望这回答了你的问题.