HOST151:缓存向不同用户返回相同数据
这意味着什么
主机缓存可能将一个人的店铺数据返回给另一个人。
此设备上的数据没有丢失。请主机服务商停止缓存店铺 API(包括 /wp-json/ 和 ?rest_route= 两种地址)。如果 WCPOS 未能连接,请在处理后重新连接。
缓存层在返回已存储的 REST API 响应时,没有核对请求者的身份:应用发送了两个使用不同身份认证信息的探测请求,却两次都收到了第一个请求的响应。对于营业中的店铺,这意味着一名收银员可能看到另一名收银员的数据。这是主机层的问题;WordPress 本身始终按用户返回响应。
发生这种情况时,应用会重试,并在每个请求中附带唯一的缓存键。如果验证表明该键可以绕过缓存,WCPOS 就会建立连接,并继续发送此键;此时,这条记录是提醒您仍需修复缓存的警告。如果无法确认连接安全,WCPOS 会在缓存修复前保持断开。
您的数据
此设备上的数据没有丢失。如果 WCPOS 无法确认连接安全,就不会连接,以免将一个人的数据显示给另一个人;设备上已有的数据会保留,并在连接成功后发送。
故障排除
供主机服务商或网站管理员处理——即使 WCPOS 已绕过缓存成功连接,也必须在主机上修复缓存:
- 将店铺的 REST API 路径(/wp-json/ 和 /?rest_route=)排除在页面缓存之外:在 LiteSpeed 上禁用 REST 缓存或添加不缓存规则;在 WP Engine 上将 WooCommerce 的排除范围扩展到 /wp-json/wcpos 及 ?rest_route= 形式的地址;在 Sucuri 上将缓存级别设置为遵循 Cache-Control。
- 店铺 API 已经发送了 Cache-Control: no-store 和 Vary: Authorization,但缓存层忽略了它们;请提醒主机服务商检查这些响应头。
- 修改缓存设置后,请清空缓存。如果 WCPOS 未能连接,请重新连接。