Подтвердить что ты не робот

Кэширование данных приложения в памяти: MVC Web API

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

Я собираюсь использовать класс MemoryCache, и я знаю, что могу заполнить кеш при первом входе, но я не хочу, чтобы первый запрос API был медленнее других. Мой вопрос: есть ли способ автоматически заполнять кеш при первом запуске WebAPI? Я вижу, что есть папка "App_Start", может быть, я просто что-то брошу здесь?

После первоначальной совокупности я, вероятно, буду выполнять ежечасный/ежедневный запрос на обновление кеша по мере необходимости.

MemoryCache: http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx

UDPATE

Ela ответ ниже сделал трюк, в основном мне просто нужно было посмотреть на возможности Global.asax. Спасибо за быструю помощь здесь, это вызвало отдельный вопрос для меня о плюсах/минусах различных типов кеширования.

Плюсы/минусы различных настроек кэширования ASP.NET

4b9b3361

Ответ 1

Для инициализации ресурсов вы можете использовать метод запуска global.asax для запуска. Ресурсы, которые будут использоваться в основном в приложении.

Следующая ссылка должна помочь вам найти дополнительную информацию: http://www.asp.net/web-forms/tutorials/data-access/caching-data/caching-data-at-application-startup-cs

Подсказка: Если вы используете в процессе кэширования (что обычно бывает, если вы кешируете что-то в веб-контексте/потоке), имейте в виду, что ваше веб-приложение контролируется IIS. Стандартная конфигурация IIS отключит ваше веб-приложение через 20 минут, если запросы пользователей не будут обслуживаться. Это означает, что любые ресурсы, которые у вас есть в памяти, будут освобождены.

После этого в следующий раз, когда пользователь обратится к вашему веб-приложению, глобальный asax, запуск приложения снова будет отменен, поскольку IIS повторно инициализирует ваше веб-приложение. Если вы хотите предотвратить это поведение, вы либо настраиваете тайм-аут простоя пула приложений, чтобы не истечь через 20 минут. Или вы используете другую стратегию кэширования (постоянный кеш, распределенный кеш...).

Чтобы настроить IIS для этого, здесь вы можете найти дополнительную информацию: http://brad.kingsleyblog.com/IIS7-Application-Pool-Idle-Time-out-Settings/