我们在IIS6盒子上部署了一个MVC 3网站。 一切都运行良好,但性能很糟糕。 任何人都可以帮助我理解
为什么我得到一个脚本包需要20秒的响应时间?
为什么即使设置了Expires标头,IE也不会缓存捆绑脚本?
该网站在Chrome中快了好几倍(我注意到缓存行为是正确的),但我们无法强迫客户使用它。 任何帮助都会很棒。我有点想知道它是否是一个服务器端设置强制捆绑重新编译每个请求,或者它只是IE像往常一样。
编辑:根据评论请求,我还包括捆绑请求标题:
答案 0 :(得分:1)
如果您在两个浏览器之间有完全重新加载的下载时间不同,则可能是您正在使用像angularjs这样的客户端框架进行大量计算(我看到了高度复杂的angularjs应用程序之间的巨大性能差异两个浏览器)。
如果您的浏览器显示相同的下载时间,则可能是网络问题或服务器问题。
IE缓存可能是一个单独的问题,将您的问题分成两部分 - 首先查找缓慢下载的原因。
我现在能做的就是建议找到问题的方法。
看起来你有:
Expires
标题Ctrl+F5
强制完全刷新)
If-Modified-Since
或If-None-Match
Expires
和/或ETag
响应标头(它甚至不再为捆绑包发出请求)。您应该将此问题分为两部分:
这两者可能是相关的,但单独接近它们将是一个开始。数字1更容易诊断2,在网络IE中缓存javascript的顶级引用是阻止它以帮助开发。
编辑1 要做的第一件事是从服务器上的浏览器尝试网站,或者非常靠近服务器以查看是否存在网络问题。 (结束编辑)
Fiddler等工具,浏览器开发者工具,时间轴和脚本分析器以及YSlow都是您的朋友。比较Chrome和IE之间的以下各项(并了解Firefox中会发生什么)并找出差异。注意:您可能需要清除测试之间的浏览器缓存。
Ctrl+F5
)Start
和Request
持续时间(这可能指向网络问题)? 我注意到Start
和Request
在IE中分别为0.6和1 - 这是非常糟糕的表现。 Chrome和IE之间的下载时间应该没有差别,没有实际运行的脚本,所以也添加了一个控制测试。假设您的捆绑文件没有“做任何事情”(即它们包含页面调用的函数而不是自己启动长进程),那么在您的站点中创建一个空白页面引用完全相同的javascript文件 - 不仅仅是捆绑,而是每个js参考。
通过控件测试,您可以将IE中的纯下载时间和缓存行为与Chrome进行比较,而无需运行任何客户端javascript(使用开发人员工具分析器验证没有运行脚本)。如果您的捆绑文件确实启动了长时间运行,只需通过在脚本顶部放置return语句暂时禁用这些内容,并只关注下载到浏览器中。