【问题标题】:IE11 GZIP slow for AJAX requestsAJAX 请求的 IE11 GZIP 慢
【发布时间】:2014-11-12 03:38:42
【问题描述】:

所以这是一个有点奇怪的问题,我真的在这里寻找一些最佳实践和潜在的解决方案。

背景:

我正在开发一个非常重要的企业应用程序。这是一个单页应用程序,除了初始加载外,应用程序中没有全页加载。几乎所有服务事务都返回 JSON。

该应用会生成大型数据集,其中一些未经压缩的数据集可能超过 1 到 2 MB。这显然是不可取的,但考虑到我们的应用程序的复杂性和它的作用,它也不是我们可以轻易改变的东西。因此,我们在 IIS 中为 JSON 和 XML 启用了动态压缩,这有效地将我们在 500K 未压缩的 JSON 包上降低到 47K 左右。

(让 IIS 动态压缩 JSON 和 XML 有点麻烦,所以如果有人需要提示,我很乐意提供帮助。)

问题状态:

我们很高兴缩小数据集的大小,但我们注意到 IE11 似乎在处理 AJAX 响应对象中返回的压缩数据时表现不佳。基本上发生的情况是,当 IE 解压缩从 AJAX 请求返回的 GZipped 数据时,UI 层出现了明显的停止。这不是很重要(1.5 秒),但它相当很明显。我们测试过的其他浏览器都没有受此影响; Chrome、Safari、FireFox、Opera……都可以解压缩并处理这些压缩数据,而不会在 UI 中出现任何明显的停顿。所以,这似乎是 IE 迷人的怪癖之一。

尝试的解决方案:

我们试图通过优化对象大小以及调整压缩级别来减少这种情况。其中,减小起始对象大小是唯一成功减少渲染延迟的方法;压缩级别似乎很少或什么都不做。但正如我所说,我们已经达到了优化数据大小的极限。

我需要什么:

理想情况下,有人遇到过同样的问题,并且可以就我们如何使用 IE11 解决此问题提供建议。或者,如果有人能提供关于 IE 处理 gZipped 响应的确切不同之处以及为什么这种不同归结为浏览器 UI 中发生的任何事情完全停止的原因,我会很高兴。

我远不是 IIS 专家,所以说慢点,用小词;-)

【问题讨论】:

  • 只是好奇你做了什么来优化 JSON 数据集的序列化吗?当我开始在数据集中运行 250k 行时,与 XML 相比,JSON 变得非常庞大,因为 JSON。事实上,当序列化如此大的数据集时,我会出现内存不足的错误。

标签: ajax asp.net-mvc iis internet-explorer-11 http-compression


【解决方案1】:

这里没有理由让 IE 变慢; GZIP 内容在网络栈中向下扩展,使用的代码基本上是 Zlib 的一个端口,几乎和所有其他浏览器使用的相同。

您是否使用过 IE 的 F12 Developer Tools 的分析器来查看性能?

如果您在 Fiddler 运行时加载站点,并且在其工具栏中将“解码”选项设置为启用,性能会改变吗?

【讨论】:

  • 也许不是压缩级别。相反,也许只是 IE DOM 操作的肮脏。我们没有看到较小的集合......但是当我们开始交付更大的集合(带有压缩)时,也许我们注意到了延迟,因为延迟不再掩盖它。我一直无法缩小 IE 在 DOM 插入/操作时比其他浏览器慢得多的原因,但即使在 Edge 中问题仍然存在。
猜你喜欢
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 1970-01-01
相关资源
最近更新 更多