首先:我对这个问题真的很困惑,所以如果下面的描述不清楚,请原谅我。
我的网站是用 .NET4、ASP.NET WebForms 编写的,运行在不同的环境中,有些是 IIS6,有些是 IIS7(或 7.5)。有些使用 SSL,有些则不使用。
每当我在 IIS7 中托管时,它都可以正常工作,无论是浏览器还是 HTTP/HTTPS。当我在 IIS6 中托管它时,Internet Explorer 7/8 的性能会受到很大影响(即网站速度非常非常慢)。但仅限于不使用 SSL(即 HTTP)的网站。启用 SSL 后,网站速度会快得多。IIS6 网站托管在带有 Service Pack 2 的 Windows Server 2003 x64 上。
当我安装 .NET4 并将站点升级为使用 .NET4 时,这些问题就开始了。即使服务器是 x64,也会使用 32 位版本的 .NET4。
使用 fiddler/dynaTrace 和类似工具时,我们发现 .aspx 文件的传输在 IE7 和 IE8(IIS6 未使用 SSL)上要慢得多。正常传输时间约为 500 毫秒,但在非 SSL IIS6 网站上使用 IE7 时,传输时间约为 10-20 秒(高出 20-40 倍)。当加载时间较长时,您实际上可以看到屏幕上弹出一张图片。首先绘制一个下拉列表,然后绘制其中的文本,最后绘制对齐下拉列表中文本的 CSS。页面以非常缓慢的速度“渐进”呈现,因此您可以轻松跟踪呈现顺序。
有迹象表明压缩可能是原因,因为 IIS7 默认启用了 IIS6 没有启用的某些压缩。
不幸的是,由于这是一个封闭的系统,我无法提供此行为的任何链接或演示。
1) 启用 SSL 可以通过哪些方式改善 .aspx 的传输时间?它是以更大的块发送还是甚至是一个大块发送?
2)IIS7 比 IIS6 快得多的原因可能是什么?我们可以调整我们的 IIS6 设置吗?
3)关于我们的 IIS6 设置可能存在什么问题或如何提高性能,您有什么想法吗?
再次抱歉,问题太模糊,但我们非常感谢所有的想法/提示/建议。
答案1
听起来是个有趣的挑战。我从未见过类似的事情,也无法想象 http 和 https 之间的差异会导致这种情况。
解决此问题的最佳方法是将其分解为尽可能小的部分。以下是一些可能的建议:
- 尝试在 IIS6 框上禁用压缩,看看是否可以解决问题
- 尝试禁用缓存,这是可能的
- 检查事件查看器是否有任何线索
- 尝试简单的 .htm 页面,或直接调用图像
- 在 IIS6 框上尝试不同的站点或应用程序池,看看问题是否再次出现
- 确保没有任何类型的代理、IDS 或任何其他可能妨碍的层
答案2
非常感谢 Scott Forsyth 提供的所有帮助和提示。问题已解决,但有点尴尬的是,这是由应用程序/网站内的代码引起的。
问题出在 Page.OnInit 中对“Response.Buffering = false”的调用。我不确定为什么前段时间将其从 true 改为 false,但我会进一步调查。正确的解决方案可能是在向客户端发送大量内容时使用 Response.Flush()。
我在这里看到了一些相关的帖子:
http://bytes.com/topic/asp-classic/answers/59607-response-buffer-iis-6-0-a(链接到此知识库:http://support.microsoft.com/?id=840875)
http://technet.microsoft.com/en-us/library/bb727078.aspx(提示 14:使用响应缓冲)
http://msdn.microsoft.com/en-us/library/ff647787.aspx