ASP.NET数据缓存

时间:2010-08-31 22:51:06

标签: asp.net caching

我有从数据库返回的结果集,需要几秒钟才能运行。为了提高性能,我将缓存结果长达30分钟。对数据库的调用采用日期参数,即用户从日历中选择的接下来60天内的日期。

这是一个代码示例,它使用字符串列表来保持示例简单:

public List<String> GetConcertList(DateTime selectedDate)
        {
            String cacheKey;

            cacheKey = "ConcertList" + selectedDate.Date.Ticks.ToString();

            List<String> concertList = HttpContext.Current.Cache[cacheKey] as List<String>;

            if (concertList == null)
            {
                // Normally this is the call to the database that passes the selected date
                concertList.Add("Just a test for " + selectedDate.ToString());

                HttpContext.Current.Cache.Insert(cacheKey, concertList, null, DateTime.Now.AddMinutes(30),
                                                 System.Web.Caching.Cache.NoSlidingExpiration);
            }

            return concertList;
        }

有没有更好的方法然后使用密钥中的日期来缓存每一天的列表?

1 个答案:

答案 0 :(得分:1)

我们在这里讨论的数据集有多大?如果它不是很大,您可能希望缓存整个列表,然后根据用户选择的日期提取子集。

更好的方法是保留一个主数据集,该数据集是所有用户请求的日期的聚合。基本上,您只需将任何新的,尚未请求的结果附加到缓存的数据集并从那里开始工作。