我有一个关于缓存的问题。我有一个典型的n层ASP.NET Web应用程序。我已经创建了一个自定义缓存包装器(包装ASP.NET缓存对象),我想知道缓存数据的最佳实践。我不想在我的业务层中使用缓存(不想在那里添加对System.Web dll的任何引用)。与DAL相同的情况。所以剩下的唯一选择是:
我也听说过即将推出的Velocity缓存框架,但我想这可能是一种矫枉过正(因为我的应用程序不需要Web场/集群)。
我的方法可能非常错误,所以我欢迎任何关于如何在我的网络项目中有效缓存数据的建议或替代方法。
答案 0 :(得分:10)
UI和BLL之间的层将是一个服务层,这是一个缓存的好地方。使用抽象缓存管理器(example on my blog),以便在需要时可以交换提供程序(ASP.NET缓存,Velocity,memcached等)。
答案 1 :(得分:1)
有时也值得考虑缓存数据的用途是什么?如果它最终只是在UI层生成静态HTML而不是将这些部分包装在用户控件中,并且添加@OutputCache指令可能是最有效的方式(至少在使用Web表单时)。当你陷入缓存框架等时,很容易忘记这一点。当然,我很欣赏这在许多情况下可能不适合或最佳实践。