Asp.net mvc 从数据库缓存数据的选项?

Asp.net mvc 从数据库缓存数据的选项?,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我的代码在控制器中已经有如下内容: [OutputCache(Duration = 86400] public string SelectTopics(bool showAll = true, string topicID = null) { return SelectHelper.Topics(showAll, topicID); } 我说这将被缓存对吗 在外部非控制器类和方法中如何。是否有任何方法可以让数据库缓存与这些或所有的数据库缓存必须

我的代码在控制器中已经有如下内容:

    [OutputCache(Duration = 86400]
    public string SelectTopics(bool showAll = true, string topicID = null) 
    {
        return SelectHelper.Topics(showAll, topicID);
    }
我说这将被缓存对吗

在外部非控制器类和方法中如何。是否有任何方法可以让数据库缓存与这些或所有的数据库缓存必须通过一个控制器?访问数据的其他方式/方法如何。还有什么允许缓存的吗

我说这将被缓存对吗

这将缓存整个HTML输出。这意味着,如果缓存输出,控制器操作甚至不会执行。在这种情况下,
SelectHelper.Topics
将不会运行


缓存数据的其他方法包括在名称空间中使用类。它们允许您将网络对象存储到缓存中。例如,您可以将从数据库调用检索到的结果存储到缓存中,然后在下次访问数据库之前检查缓存是否包含这些结果。您可以以该类为例。

是否要缓存html输出或数据库中的项目列表?感谢Darin,您提到控制器操作将不会执行。但是,我说的在缓存过期之前,每次调用操作时仍将返回相同的字符串,这对吗?如果是这样的话,那就好了,因为主题不会经常更改。@Melissa,你说的绝对正确,每个请求都会得到完全相同的HTML输出,直到缓存期到期为止。但是要小心:如果此HTML包含一些特定于用户的部分(例如,您有一个部分说“Welcome John”,其中John是当前登录用户的名称)。由于页面将被缓存,并且所有后续请求都将从缓存中获取此页面,因此如果Mary登录到您的站点并请求该页面,她将看到“Welcome John”,因为她将看到页面的缓存版本。+1@Darin,您始终需要提供适当级别的详细信息:-)