使订单无效将从项目缓存中删除订单



我的假设是,当我们通过调用orderImpl.invalidateOrder()使订单无效时,它所做的只是将容器设置为null,因此在下一次调用(比如)getCommerceItem()时,refreshOrder管道将被执行并加载项。

我的问题是,即使我们使订单无效,当refreshOrder管道执行时,它也会从项目缓存中加载订单(如果可用),表明订单不会从orderImpl.invalidateOrder的缓存中删除?

从ATG10.2及更低版本说起。。。

ATG的缓存/订单无效中存在(我认为)一个错误。

正如@radimpe注释所建议的,如果您调用OrderImpl.invalidateOrder(),那么下次访问Order对象中的任何内容时,都应该使用未缓存的RepositoryItems。

然而,ATG的存储库缓存实际上是通过将从缓存中删除的项目放入WeakReference来工作的,这意味着它会立即将项目从缓存中取出。所以功能被破坏了,IMHO。

除非有人更清楚?

最新更新