繁体   English   中英

跨会话的内存缓存

[英]MemoryCache across sessions

我有一个使用 .net API 和控制器过滤器的 web 应用程序,它每次都获取令牌并从数据库中获取用户。 我试图消除相同的数据库调用,所以我使用了 MemoryCache。

 public ObjectCache cache = MemoryCache.Default;

 // setting it, and only calling database again if cache is empty
 cache.Set("cachedUser", userFromDB, policy);

我的问题是我打开了另一个浏览器并以不同的用户身份登录,我可以看到第一个用户仍在调试器中缓存。 是调试器范围导致这种情况发生,还是多个用户在他们自己的浏览器会话中每个人都有自己的缓存对象? 我不确定用户 A 是否会保持在本地缓存而用户 B 会保持在本地缓存,还是用户 A 会保持缓存而用户 B 会被误认为是用户 A。

您的缓存键是"cachedUser" 由于密钥对每个用户都不是唯一的,因此将检索到相同的结果。

一旦修复,将缓存在一个唯一的字段上,例如 UserId。 类似的东西——

cache.Set(userFromDB.Id, userFromDB, policy);

这是假设每个用户都有一个唯一的Id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM