我应该在哪一层实现缓存

时间:2012-07-04 08:22:28

标签: asp.net-mvc model-view-controller caching

我的网站正在进行中。但是,有许多客户端调用服务器来获取将连接到数据库以检索的数据。为了提高数据库的性能,我需要在Web服务器中实现缓存。

我应该在Data Access或Model层实现它。我正在使用ASP.NET MVC。感谢。

1 个答案:

答案 0 :(得分:2)

Web应用程序中可能有两级缓存:

  1. 缓存HTML的整个操作或片段
  2. 从数据访问操作中缓存结果对象
  3. 第一种方案是通过使用[OutputCache]属性装饰操作/子操作来实现的。

    第二种是更细粒度,这取决于您的设置。例如,如果您使用的是NHM等ORM,那么您的ORM可能已经支持缓存。例如,NHibernate支持二级缓存,甚至可以使用缓存提供程序进行外部化。因此,如果您使用ORM头来查看ORM的文档,以确定它是否支持此类缓存功能。

    如果您的ORM不支持缓存,或者您根本不使用ORM,那么您可以自己构建缓存。这可以在您的服务层实现,您可以在其中注入一些缓存提供程序作为依赖项,当您的服务查询您的存储库时,使用提供程序缓存这些存储库返回的结果。