正如我在前面的问题中提到的,我在网站的性能方面遇到了问题……一些 SQL 查询正在杀死服务器。但是,正如这篇文章的标题所提到的,我查看了 OutputCache 页面指令以提高站点的性能。
虽然,我遇到了一些关于这个指令的问题: 1-如果我有一个 web 用户控件,它在一个页面中声明了一个 OuputCache 指令,也有一个指令,哪个会“获胜”?2-关于持续时间的最佳做法是什么?我也想有一个滑动窗口。
感谢您的帮助,请访问http://www.developerit.com
正如我在前面的问题中提到的,我在网站的性能方面遇到了问题……一些 SQL 查询正在杀死服务器。但是,正如这篇文章的标题所提到的,我查看了 OutputCache 页面指令以提高站点的性能。
虽然,我遇到了一些关于这个指令的问题: 1-如果我有一个 web 用户控件,它在一个页面中声明了一个 OuputCache 指令,也有一个指令,哪个会“获胜”?2-关于持续时间的最佳做法是什么?我也想有一个滑动窗口。
感谢您的帮助,请访问http://www.developerit.com
在没有缓存的请求中,页面和控件都将被创建,然后添加到输出缓存中。如果页面被缓存,控件将不会被创建,无论它是否在缓存中——它的标记包含在页面的缓存副本中。如果页面没有被缓存而控件被缓存,则该控件的缓存标记将在页面中使用。
这是一篇关于输出缓存的好文章:http ://www.4guysfromrolla.com/articles/121306-1.aspx 。
通常,您似乎正在查看页面和片段缓存。如果可以的话,您要做的是缓存页面,因为这将为您带来最佳的性能优势。但是,如果您在页面上有必须为每个用户动态更改的区域,例如:您在页面顶部说“Hi {username}”,那么您需要查看片段缓存。
片段缓存不如页面缓存有效,因为输出必须从缓存信息和动态信息拼接在一起,但它通常仍然比没有缓存好得多!
这是一门艺术,根据页面的功能和数据库上的负载来调整缓存,但它可以使页面加载比非缓存更快的数量级。
仅供参考 - 如果数据库查询正在杀死该站点,您可能还想查看驯服它们和/或单独缓存它们的输出,这样您就不必继续访问数据库以获得相同的信息。
还要了解用于缓存的 'varyByParam' 也非常有用 - 假设您有 3 种语言的页面,您可以使用 varyByParam 为每种语言缓存一个页面,只要您的 Url 某种语言组件可以选择向上。
HTH,兰斯