Magento2 Cache HolePunch 定价
Posted
技术标签:
【中文标题】Magento2 Cache HolePunch 定价【英文标题】:Magento2 Cache HolePunch Pricing 【发布时间】:2021-02-17 16:18:41 【问题描述】:我有一个 Magento 2 网站,它允许客户有自己的定价。然而,由于这个原因,FPC(用于类别和产品页面)现在是为每个用户唯一生成的。
为了解决这个问题,我想通过 Knockout JS 加载价格,以便可以在所有登录用户之间共享 FPC,但定价将根据用户分配的定价系统动态加载。
我开始关注这篇文章:https://magently.com/blog/full-page-cache-hole-punching-in-magento-2/
我已经能够成功配置 Knockout JS 以在类别页面上呈现“时间戳”(来自上述教程),并且我已经测试了 FPC 正在所有登录用户之间共享。
但是,我现在遇到的问题是我需要将产品 ID 传递给块,以便我可以使用该类返回该产品的正确价格。我浏览了各种文章、此处的问题等,但似乎无法找到答案。
【问题讨论】:
【参考方案1】:为了增强 Magento 2 中绕过整页缓存功能的动态功能,我编写了打孔功能,可以帮助您查看工作示例。 (详情请参阅https://bitbucket.org/magstaging/punchhole
第 1 步:创建一个模型来实现 第 2 步:在前端 di.xml 中为模型定义一个节节点 第 3 步:启用节点以通过操作激活(例如 checkout/cart/add 第 4 步:创建一个将使用您的节点的 phtml 模板 第5步:在view/frontend/web/js/jspart.js中创建一个js文件
define( [ 'uiComponent', 'Magento_Customer/js/customer-data' ], function (Component, customerData) 'use strict';
祝你好运
【讨论】:
【参考方案2】:似乎要实现您的目标,您应该在产品列表模板中初始化 javascript 组件,这样您就可以生成一个数组,其中包含用户从集合对象中看到的产品的 ID。然后要将数据传递给 javascript,您只需在 x-magento-init 的组件部分下添加另一个键值对,如我的另一篇文章中所示https://magently.com/blog/introduction-knockout-js-magento-2/
请注意,您也可以使用敲除绑定来显示 UI 组件获取的值,而不是编写额外的脚本。
【讨论】:
以上是关于Magento2 Cache HolePunch 定价的主要内容,如果未能解决你的问题,请参考以下文章
Magento 2 - 单击按钮缓存清理目录图像时出现错误消息