【问题标题】:Which layer I should implement caching我应该在哪一层实现缓存
【发布时间】:2012-07-04 17:26:15
【问题描述】:

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

我应该在数据访问或模型层实现它。我正在使用 ASP.NET MVC。谢谢。

【问题讨论】:

  • 您的数据访问层是如何实现的?它是 ORM 还是手动编码?
  • 你在缓存什么?请求的频率如何?它有多少种变体?它有多大?有多少并发用户?你能忍受“陈旧”的数据多久?为什么要缓存在数据访问层?
  • 首先在有意义的地方缓存整个控制器方法..

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


【解决方案1】:

Web 应用程序中可能有 2 个级别的缓存:

  1. 缓存整个动作或 HTML 片段
  2. 缓存数据访问操作的结果对象

第一种情况是通过使用[OutputCache] 属性装饰动作/子动作来实现的。

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

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

【讨论】:

    猜你喜欢
    • 2013-02-26
    • 2022-09-30
    • 2022-04-28
    • 2017-11-30
    • 1970-01-01
    • 2016-02-15
    • 2014-11-11
    • 2015-04-02
    • 1970-01-01
    相关资源
    最近更新 更多