在我的ASP.NET MVC3应用程序中,我有两个非常简单的控制器操作,其中一个返回带有一小段硬编码文本的ContentResult
,另一个返回带有代码403的HttpStatusCodeResult
。
部署应用程序,然后将一组请求从同一台计算机多次发送到该控制器操作所服务的路由,然后从另一台计算机向这些路由发送一组等效的请求。在两者之间没有执行任何配置更改,应用程序池没有重新启动 - 没有那样。
我查看了IIS日志,看到time-taken
(请求在Web服务器内部花费的时间,不包括任何网络延迟,DNS查找等)根据请求是否是从是否使用同一台计算机,也取决于所调用的操作。如果它来自同一台计算机time-taken
,则两个操作的时间大约为15毫秒。如果它来自另一台计算机time-taken
,则返回ContentResult
的操作大约为260毫秒,返回403的操作大约为100毫秒。
显然,当请求来自另一台计算机时,是否依赖于响应正文中是否返回任何内容。
我的代码没有任何明确的逻辑可以根据其来源和结果更改请求的处理方式。
什么可能导致时间差异?
答案 0 :(得分:0)
因此来自localhost的请求比来自远程计算机的请求更快。这非常有意义 - localhost不必向网络发出网络请求,找到远程主机,通过网络发送请求,然后等待响应。
话虽如此 - 如果您的应用程序在本地运行15毫秒,即使在相对较近的网络上运行260毫秒,那么它也很慢:)。