有没有办法清除所有用户的会话缓存密钥?

gre*_*kes 7 asp.net session caching clear

有没有办法清除所有用户的会话缓存密钥?

例如,我将当前所选商店项目的用户存储在以下会话密钥"currentItem"下.在网站的管理区域,我决定删除该特定商店项目.我现在想要使所有会话中的所有"currentItem"缓存条目无效.

有没有办法做到这一点?

我意识到我给出的例子有点做作,但它得到了重点.我怀疑一个解决方案是使用普通的Cache api来存储所有用户的当前项目.这样我就可以在需要时使它们无效.

谢谢

VMA*_*Atm 3

您无法获取所有用户的所有当前会话
(坦率地说,您可以,但我不推荐这样做,而且您仍然只能通过InProc sessions这种方式读取)。

所以你唯一能做的就是这样:

  • Session仅存储在ID用户购物车中
  • ID添加与Cache对应的item
  • 然后将item添加到 中Cache,设置对Item的依赖
  • 然后只需生成事件来更改整个购物车Cache
  • Cache此外,如果由于某些原因被清空,您还应该考虑重新创建项目- 您应该为此事件提供CacheItemRemovedCallback回调。