我正在审查一个web应用程序90%的完成,但它非常慢,即使在本地环境(web服务器和数据库),一个事务可能需要5-10秒才能完成。造成这种延迟的原因是它到处都在使用updatepanel,我的意思是99.9%的数据库交互都使用了updatepanel。我有哪些选项可以在不重写整个应用程序的情况下提高此应用程序的速度?我的意思是,我不介意在这里和那里更改一些东西,但是有很多功能依赖于这些事务(Updatepanel)。
发布于 2009-12-23 04:31:13
根据经验,ViewState通常对UpdatePanels和AJAX的性能影响最大,因为每次往返时,ViewState中的所有数据都必须序列化并打包到XmlHttpRequest中,然后通过网络发送。
尽可能地减少
EnableViewState="False"。我的意思是尽可能减少面板中的控件数量。如果某些控件在ajax请求期间不需要更新,请将它们从UpdatePanels中取出,以减少客户端overhead.
UpdateMode="Conditional"属性。然后,您将被迫触发多个面板,以便仅在必要时进行更新。这里有关于UpdatePanel用法的很好的讨论:One Update Panel vs. Multiple Update Panels
总的来说,我同意其他人的观点,似乎AJAX可能不是您唯一的问题。您可能希望分析应用程序和数据库性能,以确保您的关注点在正确的区域。
发布于 2009-12-22 15:54:30
Dave Ward在优化UpdatePanels方面有一个很好的article。以下是你应该理解和使用的主要提示:
即使实际上只更改了一个UpdatePanel,
Request["__EVENTTARGET"] == UpdatePanel1.ClientID提示使用PreRender事件实际填充面板中的数据。因此,您将避免不必要的数据加载。但是如果你的系统在将来会有很重的负载,最好是使用web服务来设计它,而不是更新面板。
发布于 2009-12-22 15:00:04
你的问题有点不清楚updatepanel中发生了什么。Updatepanels本身通常不会与DB对话,也不会导致任何特定的速度减慢。
您应该分析每个页面加载产生的sql查询(或者使用sql profiler,一些sql profiler,或者只是在您最常见的.NET查询周围设置计时器)。
如果你使用的是火狐和Visual Studio want服务器,你可能想在火狐中禁用ipv6。您可以通过键入about:config if地址栏并将"network.dns.disableIPv6“的值更改为"true”来完成此操作。
https://stackoverflow.com/questions/1944574
复制相似问题