我正在审查一个 Web 应用程序已完成 90%,但速度非常慢,即使在本地环境(Web 服务器和数据库)中,事务也可能需要 5-10 秒才能完成。这种延迟的原因是它到处都使用更新面板,我的意思是在所有数据库交互的 99.9% 中。 我可以选择哪些选项来加速该应用程序而无需重写整个应用程序?我的意思是,我不介意在这里或那里改变一些东西,但是有很多功能依赖于这些事务(更新面板)。
最佳答案
根据经验,ViewState 通常对 UpdatePanels 和 AJAX 的性能影响最大,因为每次进行往返时,ViewState 中的所有数据都必须序列化并打包到 XmlHttpRequest(s) 中并通过网络发送。
尽可能减少 ViewState(对于在 aspx 页面上定义的标签等控件关闭它,并且在往返期间不会更改 - 设置属性
EnableViewState="False"
这些)最小化 UpdatePanel 的范围。我的意思是尽可能减少面板内的控件数量。如果某些控件不需要在ajax请求期间更新,请将它们从UpdatePanel中取出以减少客户端开销。
考虑到默认情况下 UpdatePanel 是“连接的”这一事实,这意味着在每次往返期间,所有 UpdatePanel 都将运行其更新功能,即使只需要更改一个面板。要解决此问题,请尝试使用
UpdateMode="Conditional"
属性。然后,您被迫仅在必要时触发多个面板进行更新。
这里有一个关于 UpdatePanel 用法的很好的讨论: One Update Panel vs. Multiple Update Panels
总的来说,我同意其他人的观点,似乎 AJAX 可能不是您唯一的问题。您可能需要分析应用程序和数据库性能,以确保您专注于正确的领域。
关于asp.net - asp.net updatePanels 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1944574/