有没有办法清除所有用户的会话缓存键?
有没有办法清除所有用户的会话缓存键?
例如,我将当前选定的商店项目的用户存储在以下会话密钥“currentItem”下。 在网站的管理区域,我决定删除那个特定的商店项目。 我现在想要使所有会话中的所有“currentItem”缓存条目无效。
有没有办法做到这一点?
我意识到我给出的这个例子有一点点人为的设想,但是它可以说明问题的关键。 我怀疑一种解决方案是使用正常的Cache api来存储所有用户当前的项目。 这样我可以在需要时使它们失效。
谢谢
您无法从所有用户那里获取所有当前的会话
(坦率地说,你可以,但我不建议这样做,而且你仍然可以用这种方式只读InProc sessions
)。
所以你唯一能做的就是这样的:
Session
ID
ID
项目添加到缓存 Cache
,将依赖项设置为该项 Cache
更改整个购物车。 Cache
正在被清空,您应该考虑重新创建项目 - 您应该为此事件提供CacheItemRemovedCallback
回调。 您可以将购物车移动到数据库。 除非你有一个非常快速的购买过程,或者一个非常冗余的环境,否则Session或Cache可能不够耐用。 既然他们没有坚持下去,你也不会有直接的方法来分析购买决策,消耗等。
根据您的库存更改的频率,您可能只需验证购物车项目在结帐时是否可用。 作为用户,看到一件物品刚从我的购物车中“神奇地”消失或者价格发生了变化,我感到非常困惑。 在我看来,最好明确地表明这一点。
同样,数据库将是一个优越的解决方案,因为您可以跟踪物品在添加到购物车时与当前产品定义相对应的状态。
如果您必须使用会话或基于缓存的解决方案,那么@ VMAtm建议的解决方案是一个有效的选择。
链接地址: http://www.djcxy.com/p/10387.html上一篇: Is there a way to clear a session cache key for all users?