Я разрабатываю веб-API, который требует быстрого доступа только для чтения к большому набору данных, который, будем надеяться, будет постоянно храниться и готов к доступу.Доступ будет из статического класса, который будет просто выполнять супербыстрый поиск данных.
Итак, я хочу предварительно кэшировать Dictionary<string,Dictionary<string,Dictionary<string,myclass>>>
, с общим количеством элементов в словаре третьего уровня, являющимсяоколо 1 миллиона, что в конечном итоге увеличится, но, скажем, не более 2 миллионов.«myclass» - это небольшой класс с (небольшим) списком строк, int, enum и парой bool, так что ничего особенного.В памяти должно быть чуть более 100 МБ.
Из того, что я могу сказать, способ сделать это - просто вызвать мой метод StaticClass.Load (), чтобы прочитать все эти данные из файла с событием Application_Start.в Global.asax.
Мне интересно, что мне нужно учитывать / беспокоиться об этом.Я предполагаю, что это не так просто, как вызов Load (), а затем предположим, что все будет хорошо для будущего доступа.Сможет ли сборщик мусора оставить эти данные там, даже если API не будет запущен в течение пары часов?
Чтобы усложнить ситуацию, я также хочу обновлять эти данные каждый день.Я думаю, что я просто смогу выбросить старый набор данных и загрузить новый из другого файла, но я вернусь к этому позже.
Cheers