我应该使用哪种ASP.NET缓存技术来缓存视图查询的结果?

时间:2011-12-14 17:37:49

标签: c# asp.net caching

该场景是一个ASPX页面,其中一个GridView显示来自SqlDataSource的数据,该数据被配置为从数据库视图中选择基于次优查询(我目前没有时间修复)的行。

我打开了我的大型ASP.NET书籍到100页的缓存章节,并意识到它非常复杂,所以我只是想知道是否有人可以想象这个场景并特别告诉我他们可能用来解决问题的技术(除了使查询更快)。

此外,GridView具有可排序的列,并包含在UpdatePanel中。

提前致谢。

1 个答案:

答案 0 :(得分:3)

这不一定非常复杂,可能就像这样简单:

public DataSet GetMyViewData()
{
    var results = HttpContext.Current.Cache["myViewResults"] as DataSet;

    if(results == null)
    {
        results = GetMyQueryResults();
        HttpContext.Current.Cache["myViewResults"] = results;
    }

    return results;
}

当然,这取决于数据的大小,需要的新鲜程度等等,但是从缓存中添加和获取是很容易的。

此外,如果您正在讨论WebForms,如果您只需要缓存Select语句的结果,则SqlDataSource控件会公开EnableCachingCacheDuration策略。您所要做的就是在控件上设置属性,如下所示。

来自MSDN:

<asp:SqlDataSource
                id="SqlDataSource1"
                runat="server"
                DataSourceMode="DataSet"
                ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
                EnableCaching="True"
                CacheDuration="20"
                SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees">
            </asp:SqlDataSource>