ASP.NET应用程序中缓存的最佳实践

9
我有一个关于缓存的问题。我有一个典型的n层ASP.NET web应用程序。我已经制作了一个自定义的Cache包装器(包装ASP.NET Cache对象),我想知道缓存数据的最佳实践。我不想在业务层中使用缓存(不想在那里添加对System.Web dll的任何引用)。与DAL相同的情况。因此,只剩下以下选项:
  1. 在UI层中缓存所有内容
  2. 在UI和BL之间创建缓存层(不知道这是否可行?)
我还听说即将推出Velocity缓存框架,但我猜这可能过度kill(因为我的应用程序不需要Web Farm / Cluster)。
我可能在我的方法上非常错误,所以我欢迎任何建议或替代方法,以有效地缓存我的Web项目中的数据。
2个回答

10
您的用户界面和业务逻辑层之间的层应该是服务层,这是一个很好的缓存位置。使用抽象化的缓存管理器(我的博客上有例子),这样您就可以在需要时更换提供程序(ASP.NET缓存、Velocity、memcached等)。

我喜欢你博客上的例子,接口使用得非常好。 - Rutger
我们做了同样的事情,并且实际上已经从ASP.Net缓存迁移到了memcache。ASP.Net中的缓存层不是本地可插拔的,这对我来说是个谜。 - jro
你好@JohnSheehan,为什么我在你的博客上看不到你的示例,它会重定向到tumblr.com的登录页面,我能否在不登录的情况下访问你的博客,感谢你的时间。 - Elias Hossain
这是我能做到的最好(原博客已经消失)http://dotnetchris.wordpress.com/2008/10/10/critique-pluggable-aspnet-cachemanager/ - John Sheehan

1
有时候,考虑缓存数据的目的也是值得的。如果最终只是在 UI 层生成静态 HTML,那么将这些部分包装在用户控件中,并添加 @OutputCache 指令可能是最有效的方式(至少在使用 Web Forms 时是如此)。当你陷入缓存框架等问题时,有时很容易忘记这一点。当然,在许多情况下,我认为这可能不太适合或不是最佳实践。

我基本上想要缓存来自数据库的数据(或简单地说,缓存我的业务对象/集合)。 - Raghav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接