我的假设是,当我们通过调用orderImpl.invalidateOrder()
使命令无效时,它所做的就是将容器设置为null,从而在下一次调用(例如)getCommerceItem()时,refreshOrder
管道被执行并加载项目。
我的问题是 - 即使我们使订单无效,当refreshOrder管道执行时,它会从项目缓存(如果可用)加载订单,指示订单不会从orderImpl.invalidateOrder
上的缓存中删除?< / p>
答案 0 :(得分:2)
从ATG10.2及更低版本发言......
ATG的缓存/订单失效中的错误(我认为)。
正如@radimpe评论建议的那样,如果你调用<!-- 1. Load libraries -->
<!-- IE required polyfills, in this exact order -->
<script src="node_modules/es6-shim/es6-shim.min.js"></script>
,下次访问Order对象中的任何内容时,应该使用未缓存的OrderImpl.invalidateOrder()
。
但是,ATG的存储库缓存实际上是通过将从Cache中删除的项目放入WeakReference来实现的,这意味着它会立即将项目从缓存中取出。所以功能被破坏了,恕我直言。
除非有人知道更好吗?