店面未加载顶部导航面板

本文为Varnish Edge Side Include (ESI)问题提供了配置解决方案,在该问题中,如果使用Varnish进行缓存,则店面不会显示某些页面的内容(通常是顶部导航面板)。

受影响的产品和版本

  • Adobe Commerce 2.X.X
  • 所有涂漆版本

问题

先决条件

为您的Adobe Commerce商店安装和配置Varnish。

重现步骤

  1. 去店面。
  2. 浏览商店页面。

预期的结果

所有内容和所有页面块加载成功。

实际结果

请注意,某些内容块(如顶部导航面板中的类别)未加载。 改为显示空白。

原因

出现该问题的可能原因如下:

  • ESI包含标签是通过HTTPS访问协议生成的,而Varnish仅适用于HTTP。
  • Varnish不处理JSON中的ESI。
  • 响应标头对于Varnish太大;它无法处理它们。

解决方案

要解决此问题,您需要执行额外的Varnish配置并重新启动Varnish。

  1. 作为具有root权限的用户,在文本编辑器中打开“消失”配置文件。 有关不同操作系统该文件可能位于何处的信息,请参阅我们的开发人员文档中的修改Varnish系统配置

  2. DAEMON_OPTS variable中,添加-p feature=+esi_ignore_https-p feature=+esi_ignore_other_elements-p feature=+esi_disable_xml_check。 这类似于:

    code language-bash
    DAEMON_OPTS="-a :6081 \    -p feature=+esi_ignore_other_elements \    -p feature=+esi_disable_xml_check \    -p feature=+esi_ignore_https \    -T localhost:6082 \    -f /etc/varnish/default.vcl \    -S /etc/varnish/secret \    -s malloc,256m"
    
  3. 保存更改并退出文本编辑器。

  4. 在VCL配置文件中,通过增加以下参数的值来增加响应标头: http_resp_hdr_lenhttp_resp_sizeworkspace_backend。 请确保最后两个参数具有相似的值。

  5. 更改此项时,需要运行service varnish restart以使更改生效。

相关阅读

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a