Вот сценарий
У меня есть приложение ASP.NET 4.0, у которого МНОГО устаревших URL-адресов.Я хочу создать HTTP-модуль, который будет просматривать базу данных этих переписываний и, при необходимости, выполнять редирект 301.В этой таблице десятки тысяч записей.
Так что, очевидно, мне нужно выполнить какое-то кэширование, чтобы я не обращался к базе данных и не просматривал все эти записи для каждого запроса страницы.
Одним из наших требований является быстроевремя запуска, когда наше приложение перезагружается по какой-то причине (перезапускается рабочий процесс или что у вас).Поэтому я не хочу загружать всю таблицу при запуске приложения.Запуск приложения уже мучительно медленный.
Моя блестящая / нелепая идея состоит в том, чтобы
- При запуске приложения в моем HttpModule создать пустой словарь для перезаписей.
- Запуск фонового рабочего потока.Приложение продолжает запускаться.
- Фоновый рабочий поток обновляет словарь, скажем, о, 1000 наиболее часто используемых перезаписей.
Вопросы
Мои вопросы:
- Это смешно?
- Существует ли такая вещь, как потокобезопасный словарь?Фоновый поток может обновлять словарь при поступлении новых запросов.
- Замедляет ли вся блокировка, выполняемая в поточно-ориентированной коллекции, входящие запросы?
Спасибо!!