我看到一些其他的方法测量与使用跟踪,但我只是想知道这种方法测量正确.
我覆盖了以下每一个执行:
PreInit
Init
InitComplete
PreLoad
Load
LoadComplete
PreRender
PreRenderComplete
SaveStateComplete
Unload
然后我使用DateTime.Now.Tick存储处理程序执行的时间.
在卸载结束时,我将打印出它们的执行时间。
所以上面的时间应该是服务器生成页面所花费的时间?
我问是因为我注意到上面的一些页面总共花了879毫秒,但直到我的浏览器真正看到页面才花了几秒钟。
这几秒钟应该是从服务器下载页面所需的时间?
先谢了。
4条答案
按热度按时间pokxtpni1#
在全球.asax
5t7ly7z52#
是的,有时间让代码运行,也有时间让浏览器从服务器获取响应并将其输出到屏幕。您可以使用各种测量站点测量前端工作:
为了确定处理代码的时间,我将使用
StopWatch
class而不是DateTime
。DateTime更精确到小数点,但不太准确。StopWatch
正是为此而设计的,并且更适合用于计算时序。但是要避免多次调用它,因为这本身会增加页面处理的开销。我会创建一个new StopWatch()
,然后在最开始时调用Start,然后在最后调用stop。然后吐出经过的时间。vwkv1x7d3#
如果您只是在寻找总体时间,为什么不看看IIS日志中的时间值呢?
在浏览器中的额外时间可能是很多事情。抓取,图像,CSS,JavaScript文件,在页面中运行的javascript,以及HTML本身的客户端渲染。如果您想更好地了解实际发生的事情以及何时启动Fiddler,然后重新加载您的页面并查看Fiddler中发生的事情。
jm81lzqq4#
在.aspx页面的最顶部,如果您设置了Trace标志,它将给予一个相当好的读数,显示上述每个事件占用了多少时间,而无需添加任何额外的事件处理程序。例如
在你的代码背后,如果有任何其他的事件/功能,你想衡量,你可以添加
它将自动测量Page.Trace调用之间的时间间隔。