Безопасный шаблон обновления кэша для ASP.net - PullRequest
0 голосов
/ 21 ноября 2011

На моем сайте довольно много кода, который выглядит следующим образом;

Item item;

if(Cache["foo"] != null)
{
  item = (Item)Cache["foo"];
}
else
{
  item = database.getItemFromDatabase();
  Cache.insert(item, "foo", null, DateTime.Now.AddDays(1), ...
}

Один из таких примеров имеет довольно дорогой метод getItemFromDatabase (что является основной причиной его кеширования). У меня проблема в том, что с каждым выпуском или перезапуском приложения кэш очищается, а затем появляется множество пользователей, которые нажимают на приведенный выше код, который убивает наш сервер базы данных.
Каков типичный метод работы с такими сценариями?

1 Ответ

2 голосов
/ 21 ноября 2011

Вы можете подключиться к событию Application OnStart в файле global.asax и вызвать метод для загрузки дорогостоящих вызовов базы данных в отдельном потоке при запуске приложения.

Также может быть целесообразно использовать специализированный класс для доступа к этим свойствам с использованием шаблона блокировки, чтобы избежать нескольких вызовов базы данных, когда начальное значение равно нулю.

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