ASP.NET кеширование данных - PullRequest
       3

ASP.NET кеширование данных

2 голосов
/ 01 сентября 2010

У меня есть набор результатов, возвращенный из базы данных, выполнение которого занимает несколько секунд.Для повышения производительности я собираюсь кэшировать результаты до 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 Ответ

1 голос
/ 01 сентября 2010

Насколько велик набор данных, о котором мы здесь говорим? Если он невелик, вы можете кэшировать весь список, а затем просто извлечь подмножество на основе выбранной пользователем даты.

Лучший способ сделать это - сохранить основной набор данных, который представляет собой совокупность всех запрашиваемых пользователем дат. По сути, вы просто добавляете любые новые, еще не запрошенные результаты в ваш кэшированный набор данных и работаете оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...