
购物车、结账和账户等页面包含用户状态,不应被当作所有访客共用的静态HTML缓存。配置缓存时,要同时考虑路径、Cookie、请求方法和CDN规则,不能只勾选一个插件选项就结束。
先辨认缓存层
页面缓存、对象缓存和浏览器缓存用途不同。本文关注可能把完整页面响应共享给其他访客的页面缓存或CDN缓存。对象缓存并不等于页面缓存,不能一概关闭所有缓存类型。
列出缓存插件、主机缓存和CDN,确认哪些层会缓存HTML,以及是否遵守源站Cache-Control等指令。
需要保护哪些请求
购物车、结账、账户及其子端点应按实际配置排除;登录用户、具有会话或购物车状态的访客也要正确绕过共享缓存。POST及支付回调等写入请求不应套用静态页面缓存规则。
WooCommerce允许自定义页面路径,不能只排除英文默认路径。区块结账、AJAX和Store API还涉及额外请求,应按当前组件文档核对。
用两个隔离会话测试
使用两个独立浏览器配置或设备,分别建立测试会话。A加入商品后,B不应看到A的购物车;登录账户页不应在退出后被其他会话获取。
检查响应头与缓存命中信息,但不把单个头字段当作全部证据。最终仍要核对页面中的实际用户状态。测试使用虚构测试数据,避免把真实客户资料用于演示。
发现共享用户内容怎么办
立即停止相关路径的共享缓存,并清理对应缓存内容;保留必要日志,确认影响范围。随后修正规则和会话识别,重新进行隔离测试。只清一次缓存而不改规则,问题可能再次出现。
静态公开文章和产品介绍仍可合理缓存。重点是让个性化请求与公共内容遵循不同策略,而不是因为一次故障长期关闭全站缓存。
账户页面排除了,是否就不会串号? 还应检查包含用户状态的页头、接口、购物车片段和CDN规则。页面路径只是一个条件,Cookie与响应行为同样重要。
参考资料
相关问题
本文为通用排查指南,依据所列官方资料整理;菜单名称和行为可能随版本及主机环境变化。配图为AI生成的概念示意,不是实际故障截图。
