【问题标题】:When and how to go about performing caching in asp.net mvc?何时以及如何在 asp.net mvc 中执行缓存?
【发布时间】:2010-11-04 23:34:42
【问题描述】:

更新:我还发现 ncache 似乎很有用,并且还发现 know stackoverflow 使用 redis 进行缓存。我也遇到过memcached,似乎是更好的选择之一。

我找到了this,但我需要知道有哪些方法可以缓存我的一些 LINQ 查询并有效地使用它们。我在 asp.net mvc 中找到了Output cache 是否还有其他方法可以进行缓存?

我是一个新手,以前从未做过缓存,所以如果有人能在这里指出正确的方向,我将不胜感激?主要是我想回答什么时候需要缓存以及如何在 asp.net mvc 中进行缓存?

【问题讨论】:

  • 这一切真的取决于你有什么样的应用程序。它主要是只读数据还是会进行大量编辑?它是在一台服务器上运行还是分布在一个场上?您是否发现了应用程序的性能瓶颈?
  • 是的,我发现一些查询是使用分析器的瓶颈......所以我正在尝试缓存它们......
  • 除了缓存之外需要考虑的几件事:1) 有什么方法可以优化查询(例如,这是一个 N+1 场景吗?)和 2) 你是否有索引/集群合适的表格和钥匙? ayende.com/Blog/archive/2008/12/01/… & msdn.microsoft.com/en-us/library/aa933131%28SQL.80%29.aspx
  • 是的..我也会调查一下谢谢..

标签: asp.net-mvc-2 caching


【解决方案1】:

根据我的经验,应用程序级缓存很少是解决性能问题的正确方法,而且它几乎总是导致的问题多于解决的问题。

在开始任何缓存之前,您应该首先:

(i) 分析您的应用程序及其进行的查询,看看您是否可以直接处理它们(例如,查询模式太宽(获取未显示的列)或太深(例如获取的行数比显示的多) )、过于频繁(延迟加载可能会导致往返次数超出您的需要)、过于昂贵(糟糕的表设计可能意味着比您需要的连接更多),或者表本身可能没有被正确索引;

(ii) 全面审视您的网站和用户体验,了解如何提高感知性能(例如,在静态内容上设置适当的浏览器级缓存缓存标头)。使用 AJAX 和 jQGrid 之类的分页网格视图可能会在用户对记录进行分页时消除许多数据库访问,因为页面内容的其余部分没有变化。

在你解决了真正的问题之后,你就可以准备考虑缓存了。

但在此之前,请先做一个简单的计算:升级服务器的成本与实施缓存和跟踪奇怪的陈旧缓存问题所花费的开发和测试时间之间的关系是多少?有时只是升级更便宜...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多