IE11对AJAX请求的GZIP压缩速度慢

6

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

背景:

我正在开发一个非常重要的企业应用程序。它是一个单页面应用程序,除了初始加载之外,在应用程序中没有完整的页面加载。几乎所有服务交易都返回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行数据集时,由于JSON,JSON变得比XML庞大得多。事实上,在序列化如此庞大的数据集时,我会遇到内存不足的错误。 - DeadlyChambers
1个回答

0

IE在这里慢的原因无从得知;GZIP内容在网络堆栈中被展开,所使用的代码基本上是Zlib的一个移植版本,几乎与其他所有浏览器使用的代码相同。

您是否使用过IE的F12开发人员工具分析性能?

如果在运行Fiddler并且其工具栏中的“解码”选项已启用的情况下加载该站点,性能是否会有所改变?


也许不是压缩级别的问题,而可能只是IE DOM操作的麻烦。我们在较小的数据集中没有看到这种情况...但当我们开始传递更大的数据集(带有压缩)时,也许我们注意到了滞后,因为延迟不再掩盖它。我从来没有能够找出IE为什么在DOM插入/操作方面比其他浏览器慢得多的原因,但即使在Edge中,这个问题仍然存在。 - Thomas W Tupper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接