По умолчанию ASP.NET использует кэш памяти, поэтому похоже, что он использует Dictionary‹› внутри для использования пар ключ-значение. Но внешние решения для кэширования, такие как кэш Azure или другие, сериализуют данные, что отличает сценарий от решения в памяти. В приведенном ниже примере я держу объект списка с ключом и обновляю его.
var users = new List<User>();
HttpContext.Cache.Insert("key", users);
users.Add(new User());//cached list will update itself with this insertion ?
var cachedUsers = (List<User>) HttpContext.Cache["key"];// now i got users list object reference or copied users list without inserted user ?
Как я прокомментировал строки, если в этом сценарии используется решение по умолчанию для кеша памяти ASP.NET, поэтому ясно, что кеш содержит ссылку на список пользователей, но ответы меняются, если я использую внешнее решение кеша, такое как решение кеша Azure. Каковы ответы на приведенные ниже вопросы, если используется внешнее решение, которое сериализует объекты вместо кэширования ссылок на объекты?
Кэшированный список будет обновляться этой вставкой?
если я верну данные из кеша, это будет ссылка на объект списка пользователей или скопированный список пользователей без вставленного пользователя?