结束SaveStateComplete - 为什么这么费时?

时间:2011-11-20 09:05:04

标签: asp.net performance

这部分在做什么?特别是为什么它耗费时间,如果我没有ViewState和大对象图?它有时需要3倍的请求速度。

发现此问题,仅在开发服务器上。

2 个答案:

答案 0 :(得分:0)

SaveStateComplete的作用是在呈现控件viewstate / controlstate之前保存它。因此,除非您为页面/控件禁用了viewsate(在页面级别为EnableViewState =“false”),否则作业始终完成。此外,禁用viewstate不会禁用controlstate。 你的页面上有很多控件吗?

答案 1 :(得分:0)

我也注意到即使没有ViewState,这个阶段相对比较昂贵(即使页面几乎空白)

通过在我的本地IIS实例上运行我的项目而不是在Visual Studio开发Web服务器上运行,我能够大大加快这个阶段的速度。在发布模式和调试模式下进行编译似乎也提供了微小的改进。

我的猜测是1)没有什么可担心的; 2)对于某些流程,VS Web服务器可能不如IIS优化。例如,IIS可能会缓存计算机值(例如注册表设置,证书等),而VS Web服务器可能不会。

如果在SaveStateComplete期间运行加密例程(例如EnableViewStateMac="true"时),则在VS Web服务器上运行本地计算机资源的成本可能要高得多,即使实际上没有任何内容正在加密。

我不认为这是一个很好的答案;如果你真的担心,你可以分析ASP.NET以查看它实际上在做什么(例如,正在调用哪些BCL方法)。