我正在研究ASP.NET / Angular网站上的一些性能问题,我注意到谷歌浏览器中有一些我无法理解的内容。
.NET Web Api完成请求所花费的时间需要几毫秒,但谷歌浏览器会报告它花费几个秒。
以下是一些截图来说明我的意思: 如您所见,请求需要2.59秒才能完成。
如果我拿出这个请求并单独进行(右键单击并选择“在新标签中打开”,我会得到一个完全不同的结果,如下所示:
这一次,请求耗时81毫秒,这与第一张截图中报告的2,59秒差异很大。
调试应用程序向我显示此请求中没有任何特殊内容。它只返回一个列表。执行此操作的查询是快速的。我也可以100x运行此请求并保持快速,但在应用程序中似乎很慢。
我对可能发生的事情感到茫然。
我调查了以下内容:
我以为我的web api正在逐个处理请求,首先完成第一个请求然后再转到第二个请求。我已经通过在两个web api方法上设置断点来测试它,并且它们同时被触发并间歇地完成。
我认为这可能是由于实体框架中的第一个请求很慢而后来很快。它不是,因为如果我第一次加载页面,然后第二次加载页面,我会看到完全相同的结果。
请求是使用Angular完成的,如下所示:
return $http.get(service.url + '/organisationsorts').success(function(data)
{ //data is processed here });
有没有人对如何进一步看待这个有任何建议?我能尝试什么?
使用的技术是:
Web Api请求的一个示例:
[Route("organisationsorts")]
[HttpGet]
public IList<SortOrganizationListDto> GetAllOrganisationSorts()
{
return _service.GetAllOrganisationSorts();
}
相应的实施:
public IList<SortOrganizationListDto> GetAllOrganisationSorts()
{
try
{
return Uow.GetStandardRepo<SortOrganisation>().GetAll().OrderBy(x => x.Name).Project().To<SortOrganizationListDto>().ToList();
}
catch (Exception ex)
{
LogError("GetAllOrganisationSorts has failed", ex);
return null;
}
}
使用Entity Framework从表中选择5行,并通过AutoMapper将其投影到ListDto。