我有一个带有GridView控件的简单aspx页面。单击按钮后,我正在使用搜索结果加载GridView。一切正常,但浏览器上的HTML呈现在IE中非常慢,结果集> 2000(在其他浏览器中工作正常。)我发现由于记录计数它很慢,但有没有办法让它更快? (我不想使用分页。)
奇怪的是,只有当它在Windows 2003服务器上托管时才会很慢。它在我的localhost上工作正常,但无论是在测试站点还是生产中,都会出现问题。如果我远程桌面到我的测试服务器并在那里本地运行,页面加载正常。只有从本地计算机运行服务器托管应用程序时才会出现此问题。
如何解决此问题?
答案 0 :(得分:7)
从localhost传输时工作正常,因为网络瓶颈不存在 - 某些浏览器在尝试渲染之前等待传输整个表 - 特别是在不使用固定列宽时(可以提高性能);你看过整个生成页面的大小了吗?
答案 1 :(得分:1)
一些简单的建议,关闭该控件上的视图状态。您也使用MS AJAX,这也可能导致问题。如果有,请将其从更新面板中取出。
答案 2 :(得分:1)
如果您需要控件上的ViewState,则可以通过在PreRender事件中的每一行禁用ViewState来减少GridView对页面的ViewState影响:
Private Sub grid_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles grid.PreRender
For Each item As DataGridItem In grid.Items
item.EnableViewState = False
Next
End Sub
答案 3 :(得分:1)
如果您尚未压缩HTTP响应,则应look into doing that。
答案 4 :(得分:1)
由于网络是这种情况下的瓶颈,请尝试缩小生成的HTML。显然,每个网格行的权重平均约为640字节(2500条记录产生1.6M有效载荷)。看看你是否可以通过删除不必要的空格和缩短任何HTML元素ID来减少它。如前所述,将样式(如果有的话)从网格移动到CSS。如果网格呈现任何URL(例如锚点中的“href”或图像中的“src”),则尝试缩短它们。此外,如果GridView呈现的HTML不是最佳的,请参阅是否可以自己渲染。为了估计生产中预期的页面响应时间,请考虑您的平均用户网络速度(可能与您计算机的网络速度不同)。
如果以上都不能产生令人满意的结果,您可以检查我们的解决方案 - ASP.NET加速器名为Web Stimulus。它在客户端上部分执行ASP.NET页面代码,以在客户端计算机上呈现HTML。典型的流量减少是10-20倍,代码变化最小。
答案 5 :(得分:0)
简而言之,做自定义分页,这样它就不会在页面加载时加载所有项目。 Linq Data Source为您做到了。
答案 6 :(得分:0)
为什么不想使用分页? 1.6 MB是一个页面的html很多。
考虑到您已经禁用了viewstate,请考虑通过以下方式减少html的数量: