【问题标题】:ASP.NET MVC Caching scenarioASP.NET MVC 缓存场景
【发布时间】:2009-09-02 23:01:02
【问题描述】:

我仍然没有找到适合我的方案的解决方案。基本上我有一个 ASP.NET MVC 网站,它有相当多的数据库访问权限来制作视图(每个视图 2-3 个查询),我想利用缓存来提高性能。

问题在于视图包含的数据可能会发生不规则的变化,例如 2 天的数据可能相同,或者数据可能在一小时内发生多次变化。

查询非常简单(选择...从哪里...)并且连接不大,每个查询平均返回 20-30 行数据(大约 10 列)。

在网站当前阶段,查询非常简单,但随着时间的推移,所有者将添加更多数据,访问者数量将会增加。它们目前很大,我会考虑缓存,因为流量主要来自 Google AdWords 等,快速加载页面将是一个好处(显然)。

该站点将托管在 Microsoft SQL Server 2005 数据库上(但如果需要,可以升级到 2008)。

我是否:

  1. 将缓存设置为项目不更改的最短时间(例如缓存 3 分钟)并告诉所有者任何更改最多需要 3 分钟才能显示?

  2. 找到一种方法来强制清除缓存并重新处理更改(例如,如果所有者在管理面板中添加项目,它会清除相关缓存)

  3. 完全忘记缓存

  4. 或者有适合这种情况的选项吗?

【问题讨论】:

    标签: c# asp.net-mvc caching


    【解决方案1】:

    如果您使用的是 Sql Server,还可以考虑另一种选择:

    使用SqlCacheDependency 类使您的缓存在基础数据更新时失效。显然,这实现了与选项 2 类似的结果。

    不过,我实际上可能不得不同意 Agileguy - 您的查询描述似乎非常简单。在设计时提前思考并牢记缓存是个好主意,但您是否证明您现在确实需要它?选项 3 似乎比选项 1 好很多,假设您现在实际上并没有处理重大的性能问题。

    【讨论】:

    • 是的,我忘了提到这一点,我会在问题中添加评论。现在看看你的建议:)
    • 也许你应该看看 ORM 工具(例如 NHibernate),它具有用于缓存数据的嵌入式机制。
    【解决方案2】:

    过早的优化是万恶之源;)

    也就是说,如果您要缓存,我会使用基于选项 2 的解决方案。

    以这种方式,您获得“脏”数据的机会较少。

    善良,

    【讨论】:

      【解决方案3】:

      第二个选项是最好的。如果同一个应用程序编辑/缓存数据,应该不会那么难。如果有多个应用程序,可能会更加棘手。

      如果你不能那样做,1st 也可以接受。通过一些调整(即 - 当它超时时,我会尝试在另一个线程上静默更新缓存)它可能工作得很好(如果允许数据有点旧)。

      如果可能的话,永远不要放弃缓存。每个人都知道“过早的优化......”这句话,但缓存是可以显着提高应用程序的可扩展性/性能的东西之一。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-04
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 2010-10-27
        • 1970-01-01
        • 2015-03-13
        • 2013-07-22
        相关资源
        最近更新 更多