我有一个webforms网站,每页有20多个控件来显示数据,我有两个选项来保持值:
使用网页控件显示我的所有值并利用ViewState。只需要在IsNotPostback时填充控件,每次使用ViewState时它们都会呈现相同的值。
禁用ViewState并在数据库的每个回发中填充控件。
我只需要去DB一次,我正在使用相同的查询填充20个控件。
哪一个更便宜?,我应该使用ViewState吗?
答案 0 :(得分:2)
基于你的输入,我认为最好在传输中来回传递ViewState开销,而不是一次又一次地向数据库执行20次往返加载数据。
当然,您可以在单个超快速数据库调用中缓存和/或查询所有需要的数据,这样最终也可能很便宜,具体取决于您的整体设计。
ViewState现在不应该是考虑快速LAN / WAN连接的一个大问题,特别是如果网站仅在Intranet中使用,那么我会离开ViewState,但我也会尝试优化/最小化db调用一般和缓存也是如此。
答案 1 :(得分:1)
通常,除非您拥有大量数据,否则请使用viewstate。这取决于应用和情况。
我的建议是你现在就使用它,并在以后优化。您甚至可以为具有大量数据的特定控件禁用viewstate。看来你没有足够的理由不立即使用它。
答案 2 :(得分:1)
我不认为ViewState对于大约20个控件来说可能是一个很大的负担。您可以更轻松地进行第一次尝试,并在必要时进行改进。但是,这取决于您的应用程序中使用的数据。
我觉得下面很有趣。
答案 3 :(得分:0)
这取决于,我通常不会过多担心控件的视图状态,例如下拉等(前提是它没有填充100个项目,这将使其无法使用)。
对于像grid这样的控件,我会关闭视图状态,特别是telerik(它有很好的选择)。
顺便说一下,您可以使用缓存来保存数据库的行程。
答案 4 :(得分:0)
使用jquery ajax渲染html,以便viewstate没有问题。这样可以提高性能,减少服务器的负担。