【问题标题】:Magento 2 Bundle Product CacheMagento 2 捆绑产品缓存
【发布时间】:2023-10-31 13:20:01
【问题描述】:

我正在开发一个由第三方开发的网站,该网站是 Magento 2.1,并且大量使用捆绑产品。大多数捆绑包都是由 260 种子产品组成的选择,并且不可避免地使它们的产品页面加载速度非常慢。

在 Mage 1 上,使用整页缓存来缓存捆绑产品选项并通过预缓存加快加载速度非常简单,但 Mage 2 中的 FPC 显然非常不同。

主要的减速似乎来自于为主题在 catalog_product_view.xml 中调用的表单和选项块,因为它们在呈现页面之前会遍历所有子产品,所以我尝试添加;

cacheable="true"

对于那些特定的块,但没有区别。

任何人对如何缓存 Magento 2 捆绑产品页面有任何其他想法吗?

编辑编辑

我刚刚尝试将数据库插入到全新安装的 Magento 2.1 中,并且可以看到捆绑产品已添加到 var/page_cache 目录中。在客户端服务器上,唯一写入该目录的是标签和标头信息。

那么新的角度......为什么 Magento 2 不会将任何 FPC html 写入 page_cache 目录?树上更高的东西可能错误地设置了 cacheable=false ?我去挖吧

【问题讨论】:

  • 感谢您的建议——尽管是针对 Magento 1 的,这很有用地证明了在 Mage1 中捆绑包默认缓存但在 Mage2 中不缓存

标签: magento caching magento2


【解决方案1】:

抱歉,我无法评论你的上一篇文章。

您是否尝试使用 Varnish 作为 HTTP 缓存? Magento 建议使用 Varnish 和 Redis 作为缓存后端。

【讨论】:

  • 您好,我们目前没有使用 Varnish,因为我们正在调试。即使使用标准文件系统,FPC 也应该创建页面的平面版本(除了打孔/动态区域),但页面在每次加载时渲染的时间相同 - 它仍在迭代所有捆绑选项每次加载。
  • 您可以为 Magento 2 支持创建内部票证。但只需尝试在您的本地环境中设置清漆,设置它最多只需 1 小时,我认为如果可以解决您的问题,因为只有清漆会在第一次尝试后处理您的页面。
  • 你尝试添加 $this->_isScopePrivate = false;进入你的街区?您认为您为正确的块设置了 cacheable="true" 吗?
  • 感谢您的 cmets。我很确定(可能是错误的)将 isScopePrivate 放入块 phtml 本身太远了,但会尝试向 mage 提交报告。再次感谢
【解决方案2】:

所以我发现了这个问题,这是构建网站的人以及 magepal magento2-googletagmanager 的模块创建者所犯的错误。在这两种情况下,这些块都有;

cacheable="false"

在布局 XML 中。在页面上的任何块上设置此项将阻止整个页面缓存。所以删除该行,然后添加;

$this->_isScopePrivate = true;

进入blocks __construct 函数。问题解决了。

【讨论】:

  • 我们不推荐cacheable=false_isScopePrivate。我们开始讨论缓存here 的主题。它仍然不完整,但我希望它有所帮助