Предварительное кэширование ASP с учетом Application_Start - PullRequest
0 голосов
/ 08 августа 2011

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

Итак, я хочу предварительно кэшировать Dictionary<string,Dictionary<string,Dictionary<string,myclass>>>, с общим количеством элементов в словаре третьего уровня, являющимсяоколо 1 миллиона, что в конечном итоге увеличится, но, скажем, не более 2 миллионов.«myclass» - это небольшой класс с (небольшим) списком строк, int, enum и парой bool, так что ничего особенного.В памяти должно быть чуть более 100 МБ.

Из того, что я могу сказать, способ сделать это - просто вызвать мой метод StaticClass.Load (), чтобы прочитать все эти данные из файла с событием Application_Start.в Global.asax.

Мне интересно, что мне нужно учитывать / беспокоиться об этом.Я предполагаю, что это не так просто, как вызов Load (), а затем предположим, что все будет хорошо для будущего доступа.Сможет ли сборщик мусора оставить эти данные там, даже если API не будет запущен в течение пары часов?

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

Cheers

Ответы [ 3 ]

0 голосов
/ 08 августа 2011

См. Мой аналогичный вопрос Кэш приложений IIS6 ASP.NET 2.0 - параметры хранения данных и производительность для больших объемов данных НО, в частности, ответ от Марка и его последнего абзаца о параметрах для большого кеша, которые я думаю, будет применяться к вашему делу.

0 голосов
/ 10 августа 2011

Ура, ребята

Я также нашел эту статью, в которой рассматриваются варианты: http://www.asp.net/data-access/tutorials/caching-data-at-application-startup-cs

Ничто действительно не дает рекомендаций для больших объемов данных - или того, что даже определяется как «большие объемы». Я буду продолжать свои исследования, но Redis выглядит неплохо

0 голосов
/ 08 августа 2011

Стандартное ASP.net приложение Cache может работать здесь.Проверьте эту статью .Благодаря этому вы получаете встроенное управление зависимостями (изменения файла) или истечение срока действия.В связанной статье показано приложение On_start

Меня беспокоит размер того, что вы хотите кэшировать.

...