0
默認ASP.NET在內存緩存中使用,因此它看起來像在內部使用字典<>使用鍵值對。但是外部緩存解決方案(如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的緩存解決方案,外部緩存解決方案。如果使用外部解決方案來序列化對象而不是緩存對象引用,下面的問題的答案是什麼?
緩存列表將使用該插入更新自己?
如果我從緩存中取回數據,它將是用戶列表對象引用或複製的用戶列表而不插入用戶?
如果我有場景添加或刪除列表對象在某些情況下,所以我必須更新緩存中的整個列表?因此,僅僅爲了一次添加或刪除操作而更新非常大的列表對性能影響不大? – Freshblood
如果你有一個需要經常更新的大型列表,它可能不是一個很好的緩存候選項。 –
有一個想法有效地處理這種情況? – Freshblood