我的API更新了购物车。
我在凤凰城使用Varnish。
从网站前端更新购物车工作正常,但如果我尝试使用此代码从API更新购物车,我会获得一个旧的缓存版数据。
示例:如果在XYZ客户的购物车中我有3个产品,并且他在使用API的Android应用移动设备中添加了另一个产品,则购物车不会更新。
我用于获取购物车详细信息的代码如下:
$quote = Mage::getModel('sales/quote')->loadByCustomer($customerId);
$cartItems = $quote->getAllVisibleItems();
我认为这个问题来自cookie的使用,但我不知道如何做到这一点。显然,如果我禁用清漆或者刷新缓存,一切正常。
我正在研究Magento 1.9.0.1,Varnish 3.0.7和Phoenix 4.2.3
谢谢!
答案 0 :(得分:0)
在清漆中,您必须以编程方式清除缓存,以使更改显示在前端。您可以从您从后端清除缓存时调用的控制器操作中获取代码以清除缓存。
只需在API功能完成后调用此操作,它就会按预期工作。您还可以,检查varnish是否根据触发的任何事件清除缓存。您可以在功能完成后触发此事件。
此外,我认为你必须只为用户在购物车中添加的第一个项目执行此操作。清漆缓存系统根据5个禁止限定符停止缓存 - 如果用户已登录,项目是否在愿望清单中,是否已将项目添加到购物车,另外还有2个。您可以在其模型或帮助文件中找到这些禁止限定符。因此,当第一个项目添加到购物车时,它应该自动停止其余项目的缓存。
希望这会有所帮助!!