gpt4 book ai didi

asp.net - 我可以在 IHttpModule 中向客户端发送响应后拦截吗

转载 作者:行者123 更新时间:2023-12-02 04:02:31 25 4
gpt4 key购买 nike

我有一个自定义 IHttpModule 用于记录所有 HTTP 请求和响应,目前运行良好,但我很想扩展它,以便确定响应实际需要多长时间。

响应记录在 HttpApplication.EndRequest 事件中,但此事件在请求实际发送到 Web 客户端之前触发。虽然这可以让我确定服务器处理响应所需的时间,但我也希望能够计算客户端实际接收响应所需的时间。

是否有事件或其他机制允许我在客户端完成接收响应后进行拦截?

最佳答案

所以这需要客户端代码。但并不完全清楚你想要测量什么。从最小到最大,时间可能是

  • 服务器应用程序内的时间 - 由您已经拥有的代码测量。
  • 您的代码可以在开始时从“Now()”或使用 HTTP 对象设置开始。对站点的第一次调用会发现这些开始时间之间存在很大差异,否则它们应该几乎相同。
  • 服务器网站上的时间 - 我相信大多数托管服务(如 IIS)已经衡量了这一点。
  • 服务器机器 - 我相信这就是“mo”所指的。您必须在服务器机器上进行某种外部监控,比如 WireShark。
  • 客户端机器 - 同样,您必须在客户端机器上进行某种外部监控。这将是最难获得的,但我认为这确实是您所要求的。
  • 客户端应用程序 - 这是您可以使用 javascript 衡量的内容。

  • 除非这是“第一次通话”(见 Slow first page load on asp.net siteASP.NET application on IIS7 - very slow startup after iisreset),我相信所有这些时间都将如此接近,以至于您可以使用“足够好”的方法来代替。

    如果您必须测量此调用的客户端时间,那么您将陷入困境。但是,如果您只是想要更好的数字,只需继续用已有的数据衡量 1.(应用程序时间),并确保同时衡量请求和响应的大小。

    然后通过在各种目标客户端机器上进行测试来设置调整该时间的基线。
  • 测量从客户端到服务器的 ping 时间
  • 测量中等大小内容的传输时间 - 上传和下载
  • 确定数字以获得平均调整

  • 您最终应该得到如下公式:

    [AdjustedTime] = [PingTime] + [ServerTime]
    + ([UploadSpeed] * [RequestSize])
    + ([DownloadSpeed] * [ResponseSize]);

    这将是预期的客户端响应时间。

    关于asp.net - 我可以在 IHttpModule 中向客户端发送响应后拦截吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9576446/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com