2015-02-09 61 views
0

我有一个非常沉重的报告,我呈现在HTML表格。它是动态的,有时可以有100行100列,有时可以达到1000行以上。 此报告也有不同的方式可视化,所以我使用CSS来显示/隐藏一些值,取决于我想要看到它的方式。行中的数据就像树,所以我使用按钮来显示/隐藏子行来模拟树的效果(默认情况下,子行是“关闭”/ display:none)。沉重的HTML,缓慢的浏览器解压

的问题是,当我得到的那些大报告一个有1000行,浏览器有时(几乎总是在Chrome有时在Firefox)需要很长的一段时间(5分钟以上),以decrompress的HTML(来自Ajax调用)。整个事情解压缩37mb左右,有时浏览器管理速度很快,其他时间很慢。

我唯一能想到的是呈现报告的不同“视图”的部分(意味着html的更小的垃圾),但接下来我需要处理整个事情至少三次(按需)所以用户会看到所有可能的组合。

我只有在hmlt是30mb plus时才会出现这个问题。我知道我必须做的事情非常错误,但我不知道从哪里开始阅读有关html性能的大部分内容似乎并不适用。我没有在回调中运行的jquery绑定,所以没有关系。

编辑:

我在更小的块渲染之后做了一些测试(大一个从35MB去21MB较小的一个,现在2,4mb)。但它似乎与html的大小无关,即使较小的一个有时会减慢速度(5秒,3秒,超过30秒)。我错了。

我正在使用.html()将ajax调用的结果放在div上,我也尝试使用.load()。

+0

只是为了笑笑,如果你还没有,尝试在表格的CSS规则中加入'table-layout:fixed;'。请参阅http://stackoverflow.com/a/8643718/1030243。 – Aaron 2015-02-09 19:10:49

+1

go for分页.. – 2015-02-09 19:16:07

回答

0

看来我错了。它与hmlt的大小无关,也不与浏览器如何处理解压缩有关。事情是,HTML没有被压缩。

我注意到了,当时我比较了Chrome上的网络标签。在使用Visual Studio和IIS Express的开发环境中,它表明HTML是压缩的,但在我们的外部沙箱环境中(我正在运行数据更加严格的测试),它没有被压缩。

我已经查过了IIS之前,并启用动态压缩,但经过一番研究,我了解到,动态请求的默认压缩级别为O,所以我改成了4

http://weblogs.asp.net/owscott/iis-7-compression-good-bad-how-much

但它仍然无法正常工作,我认为它与为IIS压缩启用的mimeTypes相关,但它仍未解决问题。

最后,我注意到它在家里很好,但在我的工作地点,它仍然很慢。这个原因似乎是外网的代理。

noCompressionForProxies可选的布尔属性。

指定HTTP 1.1响应是否是用于通过代理服务器来压缩 请求禁用。

注:某些HTTP代理服务器不正确地处理压缩 对象的缓存。您可以使用此设置来避免将压缩文件返回给无法解压缩的代理服务器。

默认值为true。

http://www.iis.net/configreference/system.webserver/httpcompression

这意味着,只是改变了压缩级别已经有固定的问题。

0

您可以开始加载100行,然后使用Ajax加载100个,然后再加载更多。

实际上,您无法一次看到整个30+ MB的报告,因为显示器的大小,那么您可以动态地加载销毁数据。让我们只保留1000行数据。