Jon*_*onH 20 asp.net jquery updatepanel
我的任务是帮助提高asp.net(4.5)webforms应用程序的性能,不幸的是使用了updatepanels. 他们真的很邪恶. 但摆脱它们并不是那么简单,因为系统与一大堆东西捆绑在一起.我已经能够摆脱一些不必要的更新面板.
无论如何,这是一个CRM类型的系统,所以想象一下你去一个客户的详细信息页面.在客户的详细信息页面中,您可以获得一些常规客户信息.页面底部有标签.例如,客户详细信息页面可以包含适用于该客户的"联系人"选项卡,客户销售的"产品",客户的"评级"等.这些选项卡中的每一个基本上都是div,并且它周围是一个更新面板.最初只加载第一个选项卡.当您单击选项卡时,将进行异步调用,该调用将使用数据加载选项卡.所以基本上你有一个看起来像这样的页面:伪代码:
updatepanel for entire page
html
<!-- tabs -->
updatepanel for contacts sub panel
contacts html
/updatepanel
updatepanel for products sub panel
products html
/update panel
updatepanel for ratings sub panel
ratings html
/update panel
/updatepanel end the entire page
Run Code Online (Sandbox Code Playgroud)
提到的选项卡是div,基本上是jquery选项卡.起初我注意到页面上的每个更新面板都updatemode设置为always.当我需要更新面板更新时,我立即更改了updatemodeto conditional并显式调用Update().一个非常小的改进.然后我注意到初始更新面板(用于整个页面的面板)的ChildrenAsTrigger属性设置为true ...所以我将其更改为false.非常小的改进.
然后我再次开始测试页面,看看性能如何...仍然非常糟糕.实际上,当页面首次加载并且第一个选项卡加载页面时非常快.当我单击另一个选项卡时(它通过异步进程加载子面板数据,通过调用隐藏按钮服务器端事件来加载数据).所以这绝对不是真正的ajax,但嘿,它是我们拥有的.所以基本上服务器端事件只是将一些数据绑定到该选项卡上的网格.获取数据的性能绝对正常 - 这不是我的问题.
我现在的问题是,当我向上和向下滚动页面时,性能开始下降.一旦我点击另一个选项卡或另外2-3个不同的选项卡获取数据的性能仍然很棒..但在我获得数据后我滚动页面它的可怕性.滚动条有时会跳转,因为它无法跟上我想要浏览页面的速度.
除了完全转储更新面板之外,我不知道还有什么办法可以加速这个页面,但是有太多的工作和时间来做这件事.到目前为止,我尝试了以下内容:
always为conditionalchildrenastriggers了false我还能做些什么来解决这个问题或者还有什么可能导致延迟缓慢?如上所述,获取数据的速度非常快,当我上下移动(滚动)页面时,这是非常不稳定的. 我按照msdn的建议更新面板如何刷新.
我仍然在努力寻找更好的方法.我试过用这个:
http://aspadvice.com/blogs/robertb/archive/2005/11/16/13835.aspx
这允许我处理服务器端的视图状态.效果是html标记已经摆脱了所有的视图状态信息,然而,我仍然有的问题还没有解决的事实是,当我继续通过页面上的触发事件做异步回发时,我的页面减慢了.我的意思是减速是因为我向上/向下滚动页面表现非常糟糕.当我滚动时,滚动条基本上可以跟上我.因此,即使在客户端页面上摆脱生成的视图状态信息,我仍然遇到滚动条非常慢的问题.这又发生在页面上的事件,例如过滤器/点击事件或网格上的排序或页面索引更改(基本上任何导致异步回发的事件).
如果有人有其他想法,请随意加入.
最后我得到了这个工作......问题与我在这里找到的另一个最近的问题有关:为什么告诉jQuery单击我的链接按钮减慢我的页面?
它的主旨是我在更新面板之外的控件上订阅事件.实际上,基于在我的jquery中重新订阅,加倍,三倍或附加n个事件.查看我发布的链接.
| 归档时间: |
|
| 查看次数: |
671 次 |
| 最近记录: |