我试图确定为什么asp.net网格视图非常慢.网格视图包含在自定义子类中,该子类添加自定义分页器并执行一些特殊格式设置.此外,自定义网格视图包含在用户控件中,该控件将网格视图放在更新面板中并将其与对象数据源组合以使控件易于使用.
我追溯了两个问题领域:
第一个是渲染的html和viewstate的大小.我设法通过将viewstate呈现为会话变量而不是隐藏字段来改进这一点,但我可能会重写控件以完全不使用viewstate.
但是,我的主要问题是渲染控件.在一个简单的页面上,唯一的控件是我的用户控件呈现40列x 20行网格,即使禁用了viewstate也需要几秒钟!看看跟踪,我发现PreRender阶段占用了95%的时间,所以我认为问题存在.
所以,我的问题是我应该如何解决这个问题?我在追踪asp.net在PreRender阶段所做的事情时遇到了问题.我在调用的用户控件中有一些代码,但大部分时间都花在我的代码之外.
我尝试下载asp.net的调试符号,但Visual Studio仍然不允许我进入代码,并且跟踪不会在这里提供太多信息.
还有其他人处于这种情况吗?我首先怀疑我的数据源,但数据库调用很快所以问题不存在.
尝试使用ANTS或dotTrace等探查器 - 两者都有免费版本,或者如果您获得许可,Team System会有一个(合作伙伴?).他们会告诉你消耗时间的地方,或者至少帮助你澄清在哪里看.
在最近的Deep Fried Bytes播客中收听Rico Mariani,这是你有史以来最好的40分钟.