Web API:Chrome网络标签报告了大量的请求处理时间,但请求以毫秒结束

时间:2016-09-28 10:12:51

标签: asp.net angularjs google-chrome

我正在研究ASP.NET / Angular网站上的一些性能问题,我注意到谷歌浏览器中有一些我无法理解的内容。

.NET Web Api完成请求所花费的时间需要几毫秒,但谷歌浏览器会报告它花费几个

以下是一些截图来说明我的意思: Screenshot with highlighted request that took 2,59 seconds to complete 如您所见,请求需要2.59秒才能完成。

如果我拿出这个请求并单独进行(右键单击并选择“在新标签中打开”,我会得到一个完全不同的结果,如下所示:

enter image description here

这一次,请求耗时81毫秒,这与第一张截图中报告的2,59秒差异很大。

调试应用程序向我显示此请求中没有任何特殊内容。它只返回一个列表。执行此操作的查询是快速的。我也可以100x运行此请求并保持快速,但在应用程序中似乎很慢。

我对可能发生的事情感到茫然。

我调查了以下内容:

  1. 我以为我的web api正在逐个处理请求,首先完成第一个请求然后再转到第二个请求。我已经通过在两个web api方法上设置断点来测试它,并且它们同时被触发并间歇地完成。

  2. 我认为这可能是由于实体框架中的第一个请求很慢而后来很快。它不是,因为如果我第一次加载页面,然后第二次加载页面,我会看到完全相同的结果。

  3. 请求是使用Angular完成的,如下所示:

    return $http.get(service.url + '/organisationsorts').success(function(data)
           { //data is processed here });
    

    有没有人对如何进一步看待这个有任何建议?我能尝试什么?

    使用的技术是:

    1. .NET Web Api
    2. 实体框架
    3. Angular JS执行请求
    4. 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。

0 个答案:

没有答案