Кэширование данных приложения в памяти: MVC Web API
Я пишу веб-интерфейс MVC, который будет использоваться для возврата значений, которые будут привязаны к раскрывающимся спискам или используются в качестве результатов текстового поля с опережением ввода на веб-сайте, и я хочу кэшировать значения в памяти, чтобы мне не нужно было выполнять запросы к базе данных. каждый раз, когда API ударил.
Я собираюсь использовать класс MemoryCache и знаю, что могу заполнять кеш при поступлении первого запроса, но я не хочу, чтобы первый запрос к API был медленнее, чем другие. Мой вопрос: есть ли способ для меня автоматически заполнить кеш при первом запуске WebAPI? Я вижу, что есть папка "App_Start", может быть, я просто добавлю сюда что-нибудь?
После первоначального заполнения я, вероятно, выполню почасовой / ежедневный запрос на обновление кэша по мере необходимости.
MemoryCache: http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx
UDPATE
Ответ Элы, приведенный ниже, сработал, в основном мне просто нужно было взглянуть на возможности Global.asax. Спасибо за быструю помощь, это вызвало у меня отдельный вопрос о плюсах и минусах разных типов кэширования.
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/