【发布时间】: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