У меня есть кеш-код Dictionary<int, string>
(в течение 20 минут), который имеет ~ 120 пар ID/Name для справочной таблицы. Я перебираю эту коллекцию при заполнении списков выпадающих списков, и я уверен, что это быстрее, чем запрос к БД для полного списка каждый раз.Стоит ли кэшировать словарь для значений внешнего ключа в ASP.net?
Мой вопрос больше о том, имеет ли смысл использовать этот кешированный словарь при отображении записей, которые имеют внешний ключ в этой справочной таблице.
Скажите, что эта таблица с кешами является таблицей EmployeeType. Если бы я должен был запрашивать и отображать список имен и типов сотрудников, я должен запрашивать для EmployeeName и EmployeeTypeID и использовать свой кешированный словарь, чтобы захватить имя EmployeeTypeIDs, когда отображается каждая запись, или это быстрее, просто чтобы DB захватил EmployeeName и JOIN чтобы получить строку EmployeeType, минуя кешированный словарь.
Я знаю, что оба будут работать, но меня интересует, что будет выполнять самые быстрые. Спасибо за любую помощь.
Да, я думаю, что JOIN, вероятно, лучше. Я не согласен с тем, что заполнение ОЗУ является проблемой. Вы можете добавить столько кеширования, сколько хотите. Это никогда не повлияет на производительность, потому что ASP.Net не будет кэшировать элемент, если у сервера нет памяти, чтобы сделать это без побочных эффектов. Он удалит кешированные предметы самостоятельно, чтобы повысить производительность, если это необходимо. Я не полностью согласен с оптимизацией 101. Я думаю, что есть баланс. Может быть, если оптимизация была сложной, но не для чего-то столь же тривиального, как кеширование. Плюс действительно ли разумно подождать, пока не возникнут проблемы с хорошим дизайном? – user169867
Простите, что вы кешировали это в кеше ASP.NET, часто люди ставят полностью статические поиски, подобные этому, в статических переменных на всю жизнь приложения. Вы хотите, чтобы этот поиск выпал из памяти, если сервер простаивает? Кэширование является «тривиальным» только для полностью статических данных, в противном случае это часто является причиной многочисленных ошибок. –
Да, я бы хотел, чтобы он упал, если сервер простаивает, и он будет (через 20 минут). Когда программа обращается к этим данным, она проверяет, находится ли значение в кеше, если оно возвращает это, если оно не запускает запрос для возврата данных и снова добавляет данные в кеш. – user169867