Shopify Liquid 循环太多导致渲染慢怎么优化
现象#
集合页、搜索页打开要 3 秒以上,TTFB 正常但 HTML 返回很慢;页面里嵌套了多层 for 循环。
原因#
- 在循环里对每个商品再查一次 metafield 或 collection,形成 N+1 查询
- 对
collections.all.products做全量遍历再筛选 - 同一个 snippet 在循环中反复
render,每次都重新解析 - 循环里调用需要额外计算的对象(如
product.variants全量展开)
处理步骤#
- 把循环内的对象查询提到循环外,先
assign成变量再在循环里读取 - 集合页限制渲染数量,用
paginate分页而不是一次取 250 个商品 - 循环里只输出必要字段,避免把完整商品 JSON 塞进页面
- 用
{% render %}替代{% include %},并给 snippet 传最小参数集
验收标准#
集合页 TTFB 与 HTML 下载时间下降 30% 以上;首屏商品数量不变但渲染不再卡顿。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。