2010-05-14 153 views
1

正如我在earlier question中提到的,我遇到了网站性能问题......有些SQL查询正在查杀服务器。但是,正如这篇文章的标题所提到的,我查看了OutputCache页面指令来提高网站的性能。ASP.NET @OutputCache指令“继承”

虽然我遇到了一些关于这个指令的问题: 1-如果我有一个web用户控件在一个页面中声明一个OuputCache指令,那么这个指令也会“赢”? 2-关于持续时间的最佳实践是什么?我也喜欢有一个滑动窗口。

感谢您的帮助,请访问:http://www.developerit.com

回答

1

在其中既没有被高速缓存的请求时,两者的页面,并且控制将被创建,然后添加到输出缓存。如果页面被缓存,则不管它是否在缓存中,控件都不会被创建 - 它的标记包含在页面的缓存副本中。如果页面没有被缓存并且控件是,控件的缓存标记将在页面中使用。

+0

这就是我所做的,因为这是唯一的感官 – 2010-07-26 16:17:33

0

这里有输出缓存的好文章:http://www.4guysfromrolla.com/articles/121306-1.aspx

一般来说,您似乎正在寻找Page和Fragment缓存。如果可以的话,你想要做的就是缓存页面,因为那样会给你带来最好的性能优势。但是,如果页面上的区域必须根据用户动态更改,例如:您在页面顶部说'Hi {username}',那么您需要查看片段缓存。

片段缓存不如页面缓存有效,因为输出必须从缓存信息和动态信息一起缝合,但通常还是比无缓存更好!

这是一种艺术,根据页面的作用和数据库的负载来调整缓存,但它可以使页面加载许多Orders of Magnitude比非缓存更快。如果db查询正在查杀网站,您可能还想查看它们的驯服和/或单独缓存它们的输出,以便您不必为了相同的信息而保持点击数据库。

也理解用于缓存的'varyByParam'也是非常有用的 - 比如说你有3种语言的页面,你可以通过使用varyByParam缓存每种语言的页面,只要你的Url某种语言组件varyByParam可以启动。

HTH, 兰斯

+0

非常感谢兰斯 – 2010-07-26 16:17:10