Spartacus 3.4版本SSR跨站点缓存异常问题及修复方案咨询
问题分析与修复方案评估
1. 现有修复方案合理性判断
你们当前采用ALWAYS_SSR渲染策略的修复方案短期应急场景下是完全合理的:
- 你们的问题分析没有偏差,核心成因是Spartacus 3.4版本OOTB的SSR缓存键默认仅使用请求相对路径,未包含站点标识(域名/baseSite参数),多站点部署时同路径的不同站点页面会命中同一份缓存,导致返回错误站点内容。
- 禁用CSR降级逻辑后不会触发后台缓存写入,从根源上避免了缓存错配的问题,你们本地复现验证通过也证明了该方案的有效性。
2. 性能影响说明
- 与Spartacus 2.0版本的性能对比:Spartacus 2.0版本没有内置SSR超时降级+后台缓存的优化逻辑,默认就是全量SSR渲染模式,所以开启
ALWAYS_SSR后的性能表现和2.0版本完全一致。 - 与3.4版本默认配置的性能对比:会存在一定的性能损耗:
- 默认配置下超时的SSR请求会立刻返回CSR页面,用户首屏等待时间更短,
ALWAYS_SSR模式下所有请求都需要等待SSR渲染完成才返回,超时请求的TTFB(首字节时间)会明显变长,极端场景下可能出现请求超时。 - 无降级兜底的情况下,流量高峰时Node服务的CPU负载会更高,更容易出现服务阻塞。
- 默认配置下超时的SSR请求会立刻返回CSR页面,用户首屏等待时间更短,
3. 问题属性说明
这是Spartacus 3.x版本多站点部署场景下的已知设计缺陷,官方在后续4.0及以上版本中已经修复该问题,默认将站点上下文(baseSite、语言、货币等参数)加入SSR缓存键的生成逻辑,避免跨站点缓存冲突。
长期优化建议
如果希望兼顾缓存优化的性能收益和多站点正确性,不需要完全禁用降级逻辑,仅需要自定义SSR缓存键生成规则,将站点域名或者baseSite参数加入缓存键即可,无需牺牲SSR的优化能力。
内容的提问来源于stack exchange,提问作者Chetan Khurana
相关产品推荐
相关产品推荐

