有没有办法清除所有用户的会话缓存密钥?
例如,我在以下会话密钥“currentItem”下存储当前所选商店项目的用户。在网站的管理区域,我决定删除该特定商店项目。我现在想要使所有会话中的所有“currentItem”缓存条目无效。
有办法做到这一点吗?
我意识到我给出的例子有点做作,但它得到了重点。我怀疑一个解决方案是使用普通的Cache api来存储所有用户的当前项目。这样我就可以在需要时使它们失效。
感谢
答案 0 :(得分:3)
您无法获得所有用户的所有当前会话
(坦率地说,you can,但我不推荐这个,但你仍然可以这样阅读InProc sessions
。
所以你唯一能做的就是这样:
Session
ID
ID
的项目添加到缓存Cache
,设置dependency to the Item Cache
中的整个购物车。Cache
被清空,您应该考虑重新创建项目 - 您应该为此活动提供CacheItemRemovedCallback
callback。答案 1 :(得分:0)
您可以将购物车移动到数据库。除非您有非常快速的购买流程或极其冗余的环境,否则会话或缓存可能不够耐用。由于它们不会持久存在,因此您也无法直接分析购买决策,损耗等。
根据您的广告资源更改的频率,您可能只需要在结帐时验证购物车商品是否可用。作为一个用户,看到一件物品刚从我的购物车中“神奇地”消失或价格已经改变,我会感到非常困惑。在我看来,最好明确地说出来。
同样,数据库将是一个优秀的解决方案,因为您可以根据产品的当前定义跟踪项目添加到购物车时的状态。
如果您必须使用基于会话或缓存的解决方案,那么@ VMAtm建议的解决方案是一个有效的选项。