asp.net updatePanels的替代方案

时间:2009-12-22 06:50:14

标签: asp.net ajax updatepanel

我正在审核一个网络应用程序已完成90%但速度非常慢,即使在本地环境(Web服务器和数据库)中,事务也可能需要5到10秒才能完成。这种延迟的原因是它在所有地方都使用了updatepanels,我的意思是99.9%的所有数据库交互。 我有什么选择来加速这个应用程序而不必重写整个应用程序?我的意思是我不介意在这里和那里改变一些东西,但是有很多功能依赖于这些交易(updatepanels)。

3 个答案:

答案 0 :(得分:6)

根据经验,ViewState对UpdatePanels和AJAX的性能影响最大,因为每次往返时,ViewState中的所有数据都必须序列化并打包到XmlHttpRequest中并通过网络发送。

  1. 尽可能地减少ViewState(关闭控件,例如在aspx页面上定义的标签,并且在往返过程中不会改变 - 在这些上设置属性EnableViewState="False"

  2. 最小化UpdatePanel的范围。我的意思是尽可能减少面板内控件的数量。如果在ajax请求期间不需要更新某些控件,请将它们从UpdatePanel中取出以减少客户端开销。

  3. 考虑到默认情况下UpdatePanels是“已连接”的,这意味着在每次往返过程中,即使只需要更改一个面板,所有UpdatePanel也将运行其更新功能。要尝试使用UpdateMode="Conditional"属性。然后,您将被迫触发多个面板,仅在必要时才更新。

  4. 这里有一个关于UpdatePanel用法的很好的讨论: One Update Panel vs. Multiple Update Panels

    总的来说,我同意其他人的看法,似乎AJAX可能不是你唯一的问题。您可能希望分析应用程序和数据库性能,以确保您专注于正确的区域。

答案 1 :(得分:2)

Dave Ward在优化UpdatePanel方面有一个很好的article。您应该了解和使用的主要提示是:

  1. 即使实际只更改了一个UpdatePanel,页面也会完全重新加载。要进行优化,您可以使用文章中描述的Request["__EVENTTARGET"] == UpdatePanel1.ClientID提示。
  2. 使用PreRender事件实际填充数据面板。因此,您将避免不必要的数据加载。
  3. 但如果您的系统将来会承受很大的负担,那么最好使用Web服务设计它,而不是更新面板。

答案 2 :(得分:0)

您的问题有点不清楚更新面板内发生了什么。 Updatepanels本身通常不与DB通信或导致任何特定的减速。

您应该分析每个页面加载所做的sql查询(使用sql profiler,某些.NET分析器或只是在最常见的sql查询周围放置定时器)。

如果您使用的是Firefox和Visual Studio网络服务器,则可能需要在Firefox中禁用ipv6。您可以通过键入about:config if address bar并将“network.dns.disableIPv6”的值更改为“true”来执行此操作。

相关问题