我有一个自定义的IHttpModule用于记录所有HTTP请求和响应,这目前工作得非常好,但我很乐意扩展它,以便我可以确定响应实际需要多长时间。
响应记录在HttpApplication.EndRequest事件中,但此事件在请求实际发送到Web客户端之前触发。虽然这允许我确定服务器处理响应所花费的时间,但我也希望能够计算客户端接收响应所花费的时间。
是否有事件或其他机制允许我在客户端收到回复后拦截?
答案 0 :(得分:1)
因此需要客户端代码。但并不完全清楚你想要衡量的是什么。从最小到最大,时间可能是
除非这是“第一次通话”(请参阅Slow first page load on asp.net site或ASP.NET application on IIS7 - very slow startup after iisreset),否则我相信所有这些时间都非常接近,您可以使用“足够好”的方法。
如果你必须衡量这个电话的客户时间,那么你就会陷入困境。但是如果您只想要更好的数字,只需继续使用您已有的数据来衡量1.(申请时间),并确保同时衡量请求和响应的大小。
然后通过在各种目标客户端计算机上进行测试,设置一个用于调整该时间的基线。
你应该得到一个类似的公式:
[AdjustedTime] = [PingTime] + [ServerTime]
+ ([UploadSpeed] * [RequestSize])
+ ([DownloadSpeed] * [ResponseSize]);
这将是预期的客户响应时间。
答案 1 :(得分:0)
是的,你可以处理HttpApplication.EndRequest
答案 2 :(得分:0)
另一种方法可能是挂钩(例如:将服务编写响应时间的Windows服务)到您的网络服务器(IIS)并追踪这些事件。如果您想分析时间,客户需要获取您的内容。
但我认为,iis已经能够做到这一点。
它取决于一点点,你想要什么。