Asp.net mvc 3 带有IE的MVC 3,捆绑包性能差
我们在IIS6机箱上部署了一个MVC3网站。 一切运行正常,但性能糟糕透顶。 有人能帮我理解吗Asp.net mvc 3 带有IE的MVC 3,捆绑包性能差,asp.net-mvc-3,performance,internet-explorer,iis-6,Asp.net Mvc 3,Performance,Internet Explorer,Iis 6,我们在IIS6机箱上部署了一个MVC3网站。 一切运行正常,但性能糟糕透顶。 有人能帮我理解吗 为什么我需要20秒的响应时间才能获得脚本包 为什么即使设置了Expires头,捆绑脚本也不会被IE缓存 该网站在Chrome上的速度快了好几倍(我注意到缓存行为是正确的),但我们不能强迫客户使用它。 任何帮助都会很好。我有点想知道是服务器端的设置强制每个请求重新编译包,还是IE像往常一样 编辑:根据评论请求,我还包括捆绑请求标题: 如果两种浏览器之间完全重新加载的下载时间不同,则可能是因为您使
- 为什么我需要20秒的响应时间才能获得脚本包
- 为什么即使设置了Expires头,捆绑脚本也不会被IE缓存
如果两种浏览器之间完全重新加载的下载时间不同,则可能是因为您使用类似angularjs的客户端框架进行了大量计算(我发现两种浏览器之间高度复杂的angularjs应用程序的性能有很大差异) 如果两个浏览器显示相同的下载时间,则可能是网络问题,也可能是服务器问题 IE缓存可能是一个单独的问题,将您的问题分为两部分——首先查找下载速度慢的原因 我现在所能做的就是提出一种找到问题的方法 总结你所知道的 看起来你有:
- 服务器从现在起一年后发送一个Expires标题
- 重新加载页面时(即不使用
强制进行完全刷新)Ctrl+F5
- IE不注意缓存头,当它发送新的请求时,如果自修改,则不使用
;如果不匹配,则不使用
- Chrome的行为不同,并且尊重
和/或过期
响应头(它甚至不会再次请求捆绑包)ETag
- IE不注意缓存头,当它发送新的请求时,如果自修改,则不使用
- 编辑1:您似乎也在说(尽管从chrome中看到时间线会很好),chrome下载文件更快,这意味着这不是服务器端问题。你最近的评论说Chrome的下载速度也很慢。(结束编辑)
- 你似乎也在说这种行为是一致的(即IE中的100个请求,Chrome中的100个请求显示上述行为没有偏差)
- 是否存在服务器端性能问题?在IE、Chrome和Firefox中寻找常见的下载时间(可能是由于服务器上的捆绑/缩小/压缩)
- 是否存在网络连接问题(例如丢弃的数据包)?查找给定浏览器中请求之间不一致的下载时间、开始时间、请求时间,以及所有浏览器中的相同行为
- 是一个减缓IE速度的脚本,而不是Chrome(这并不少见,我维护的是传统站点,其中脚本在IE中运行不好,但在Chrome中运行良好)-查看不同浏览器之间的配置文件结果
- 浏览器开发人员工具->脚本配置文件:查看与Chrome相比,IE中的脚本是否运行缓慢
- 类似工具中的类似分析(寻找两种浏览器之间的比较,而不是脚本改进)
- 请求和响应标题,以及正常(即未完全重新加载)页面加载的时间线
- 请求和响应标题,以及重新加载整个页面的时间线(
)Ctrl+F5
和Start
给定浏览器的每个js文件的持续时间,以及浏览器之间的持续时间(这可能指向网络问题)?我注意到,在IE中,仅Request
和启动
就需要0.6秒和1秒,这是非常糟糕的性能请求
- 5个请求,5个完全重新加载,其间清除缓存(也就是说,不要追逐幽灵-在测试方法中保持一致)
通过控制测试,您可以将IE中的纯下载时间和缓存行为与Chrome进行比较,而无需运行任何客户端javascript(使用developer tools profiler验证脚本是否正在运行)。如果您的捆绑包文件确实启动了长时间运行的功能,只需将return语句放在脚本顶部,暂时禁用这些功能,然后只将注意力集中在下载到浏览器上。您是否也可以发布请求的图像?它可能有助于查看请求是否事先了解脚本(例如,如果自以来进行了修改,则发送
;如果不匹配,则发送)@AndyBrown-谢谢!我将包括请求截图短片