Chrome网络时机,如何改进内容下载

Maa*_*ine 6 asp.net-mvc google-chrome google-chrome-devtools angularjs iis-8

我正在检查Chrome DevTools中的XHR调用时间以改善请求缓慢,但我发现99%的响应时间浪费在内容下载上,即使内容大小小于5 KB且应用程序在localhost上运行我的本地机器没有网络问题).

但是当使用Replay XHR菜单重播呼叫时,内容下载时间从2.13秒急剧下降到2.11毫秒(如下面的屏幕截图所示).数据不会在浏览器级别缓存.

  • 呼叫时间示例 呼叫时间示例

  • 中继的相同示例 重播的相同示例

有人可以解释为什么内容下载时间很慢以及如何改进它.

该应用程序是一个结合angularJS的ASP.NET mvc 5解决方案.

Web服务器详细信息: - Windows Server 2012 R2 - IIS 8

预先感谢您对我们的支持!

Kay*_*ues 18

我无法最终告诉你原因,但我可以提供一些你可以调查的变量,这可能有助于你弄清楚发生了什么.

高速缓存

我知道你说数据没有在浏览器级别缓存,但我建议再次检查.因为初始请求需要2s,然后重复请求只需要2ms,这听起来像缓存.

如何检查:

  1. 转到" 网络"面板.
  2. 查看请求的" 大小"列.如果你看到from memory或者from disk cache它是从缓存中提供的.

大小栏

慢速开发服务器或机器

我最初的想法是,你在开发机器上做的工作比它能处理的要多.也许服务器需要的资源多于机器可以处理的资源.也许你有很多其他程序正在运行,你的内存/ CPU正在增加.

如何检查:

  1. 在功能更强大的服务器上运行您的应用程序,看看该模式是否仍然存在.

前端应用程序正在做太多的工作

我不确定这最后一个确实有意义,但值得检查.也许你的Angular应用程序在初始请求期间正在做大量的JS工作,并且它正在最大化你的CPU.因此,当您发出初始请求时,整个浏览器都会停止运行.

如何检查:

  1. 转到" 性能"面板.
  2. 开始录制.
  3. 执行导致您的应用发出初始请求的操作.
  4. 停止录音.
  5. 检查CPU图表.如果它完全超出,那么你的应用程序确实做了很多工作.

CPU图表

如果有任何帮助,请发表评论并告诉我.

  • 感谢您的回答Kayce,是的,正如您所说的前端应用程序做了太多工作,打开对话框($ mdDialog)时有超过500个观察者,因为它是一个角度js应用程序,所有$ http调用触发一个摘要周期含义更多的工作.要解决这个问题,我有两个选择要么禁用对话框打开承诺的观察者,要么在完成时重置它们,要么使用网络工作者进行所有xhr调用,这两个解决方案都给出了令人印象深刻的结果. (5认同)