0

在我的 ASP.NET MVC3 应用程序中,我有两个非常简单的控制器操作,其中一个返回ContentResult一小段硬编码文本,另一个返回HttpStatusCodeResult代码 403。

部署应用程序,然后将一组请求从同一台计算机多次发送到该控制器操作所服务的路由,然后从另一台计算机向这些路由发送等效的请求包。两者之间没有执行配置更改,没有重新启动应用程序池 - 没有那样的事情。

我查看了 IIS 日志,发现time-taken(请求在 Web 服务器中花费的时间,不包括任何网络延迟、DNS 查找等)非常不同,具体取决于请求是否从同一台计算机发送,也取决于调用了哪些动作。如果它来自同一台计算机time-taken,则两个操作大约需要 15 毫秒。如果它来自另一台计算机time-taken,则动作返回大约 260 毫秒,ContentResult动作返回 403 大约 100 毫秒。

显然,当请求来自另一台计算机时,响应正文中是否返回任何内容是有依赖性的。

我的代码没有任何明确的逻辑来改变请求的处理方式,具体取决于请求的来源和结果。

什么可能导致时间差异?

4

1 回答 1

0

因此来自 localhost 的请求比来自远程计算机的请求更快。这很有意义——本地主机不必向网络发出网络请求、找到远程主机、通过网络发送请求然后等待响应。

话虽如此 - 如果您的应用程序在本地花费 15 毫秒,在相对较近的网络上花费 260 毫秒,那么它很慢 :)。

于 2013-07-02T17:36:43.640 回答