【问题标题】:Problems with Magento API and VarnishMagento API 和 Varnish 的问题
【发布时间】:2015-06-29 09:28:50
【问题描述】:

我在通过 API 更新购物车时遇到问题。

我在 Phoenix 中使用 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

谢谢!

【问题讨论】:

  • 您在哪个文件中使用此代码?你用的是哪个api?
  • 在我的安卓应用中填充购物车的 php 文件中使用此代码

标签: api magento magento-1.9 varnish


【解决方案1】:

在 varnish 中,您必须以编程方式清除缓存,以便您的更改出现在前端。您可以从控制器操作中获取清除缓存的代码,该操作在您从后端清除缓存时调用。

只需在 API 功能完成后调用此操作,它就会按预期工作。您还可以根据触发的任何事件检查清漆是否清除缓存。您可以在功能完成后触发此事件。

另外,我认为您只需要为用户添加到购物车中的第一个项目执行此操作。 varnish 缓存系统根据 5 个取消限定符停止缓存 - 如果用户登录,如果项目在愿望清单中,如果项目被添加到购物车,以及另外 2 个。您可以在其模型或帮助文件中找到这些取消限定符。因此,当第一个项目被添加到购物车时,它应该自动停止对其余项目进行缓存。

希望这会有所帮助!

【讨论】:

  • 好的,但这意味着每次用户添加商品到购物车我都要清理清漆的缓存,对服务器来说是不是太重了?
  • 我已经更新了答案。如果有帮助,请接受或投票
猜你喜欢
  • 2020-08-14
  • 2017-07-11
  • 2012-12-02
  • 2012-11-12
  • 2015-07-07
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多