这个问题有些奇怪,我真的在寻找一些最佳实践和潜在解决方案。
背景:
我正在开发一个非常重要的企业应用程序。它是一个单页面应用程序,除了初始加载之外,在应用程序中没有完整的页面加载。几乎所有服务交易都返回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专家,所以请使用简单的词和慢慢地说。