Любопытно, если у кого-то есть мнения о том, какой метод лучше подходит для кэширования asp.net. Вариант первый: иметь меньше элементов в кэше, которые являются более сложными, или множество элементов, которые являются менее сложными.
Ради обсуждения давайте представим, что на моем сайте есть объекты SalesPerson и Customer. Это довольно простые классы, но я не хочу болтать с базой данных, поэтому я хочу лениво загружать их в кеш и делать недействительными их из кеша, когда я делаю изменения - достаточно просто.
Вариант 1
Создать словарь и кэшировать весь словарь. Когда мне нужно загрузить экземпляр SalesPerson из кэша, я вынимаю словарь и выполняю обычный поиск ключа по словарю.
Вариант 2
Префикс ключа каждого элемента и сохранить его непосредственно в кэше asp.net. Например, каждый экземпляр SalesPerson в кеше будет использовать составную часть префикса плюс ключ для этого объекта, поэтому он может выглядеть как sp_ [guid] и храниться в кеше asp.net, а также в кеше находятся объекты Customer с ключ как cust_ [guid].
Один из моих опасений, связанных со вторым вариантом, заключается в том, что число записей будет очень большим, между SalesPerson, Customer и дюжиной или около того другими категориями. У меня может быть 25K элементов в кеше и повторяющиеся поиски чего-то вроде строкового ресурса, который Я использую в нескольких местах может заплатить штраф, в то время как код просматривает коллекцию ключей кэша, чтобы найти его среди других 25K.
Я уверен, что в какой-то момент здесь наблюдается уменьшение отдачи от хранения слишком большого количества элементов в кэше, но мне любопытно узнать мнение по этим вопросам.