api - Magento API 和 Varnish 的问题

标签 api magento magento-1.9 varnish

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

我将Phoenix与Varnish搭配使用。

从网站前端更新购物车工作正常,但是如果我尝试使用此代码从API更新购物车,则会得到旧的缓存版本的数据。

示例:如果在XYZ客户的购物车中我有3种产品,并且他正在使用API​​在Android应用移动版中通过Web从Web中添加另一种产品,则该购物车不会更新。

我用于获取购物车详细信息的代码如下:

$quote     = Mage::getModel('sales/quote')->loadByCustomer($customerId);
$cartItems = $quote->getAllVisibleItems();

我认为这个问题来自cookie的使用,但是我不知道该怎么做。显然,如果禁用 Varnish 或刷新缓存,则一切正常。

我正在开发Magento 1.9.0.1,Varnish 3.0.7和Phoenix 4.2.3

谢谢!

最佳答案

在 Varnish 中,您将必须以编程方式清除缓存,以使更改显示在前端。您可以从 Controller 操作中获取清除缓存的代码,这是从后端清除缓存时调用的。

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

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

希望这可以帮助!!

关于api - Magento API 和 Varnish 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31112199/

相关文章:

php - 在 Magento 中按数据属性选择产品

javascript - 无法将数据发送到 API 服务器 'Error trying to diff ' [对象对象 ]'. Only arrays and iterables are allowed'

javascript 从 div 获取 html 或文本

performance - magento 编译模式 vs apc

Git忽略除子文件夹以外的所有内容

php - Magento 描述/属性替换?

php - 如何连续执行发送邮件的脚本?

php - Magento 1.7.0.0 上的奇怪问题

api - 从 Google Analytics Core Reporting API 生成自定义维度名称/值

android - 如何查找通知 ID?