后端与接口
在 VTEX IO 中按数据敏感度选择…
当为 VTEX IO 后端定义或修改 service.json 路由、需要在 public/segment/private 前缀之间选择,或设置与 VTEX 边缘和 CDN 交互的 HTTP 缓存头时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在 VTEX IO 中按数据敏感度选择 特定
解决思路
- 在 service.json 的 routes 下声明路径;所选前缀(/yourPath、/_v/segment/yourPath、/_v/private/yourPath)控制 cookie 转发以及 VTEX 是否可能在边缘缓存服务响应。
- Public({yourPath}):不保证应用收到请求 cookie,边缘可能缓存响应;用于非用户特定数据(例如可跨购物者共享的静态参考数据)。
- Segment(/_v/segment/{yourPath}):应用收到 vtex_segment,边缘按 segment 缓存;用于响应依赖 segment(货币、地区、销售渠道等)但不依赖认证身份的场景。
- Private(/_v/private/{yourPath}):应用收到 vtex_segment 和 vtex_session,边缘不缓存服务响应;用于身份或会话范围的数据(订单、地址、个人资料)。
- 响应上的 Cache-Control 必须与分类一致:绝不为包含密钥、每用户数据或授权决策的载荷声明 CDN/共享缓存,除非契约明确为此设计(例如不可变的公共资源);不确定时优先使用 private 路径和 no-store / private 缓存指令。
- 在挑选路径前缀之前先对响应分类(匿名、segment、认证)。
- 按 Service path patterns 将分类映射到 public / segment / private。
- 在平台允许的地方显式设置响应头:让 Cache-Control 与同一分类对齐(public immutable vs private vs no-store)。
- 记录任何出于安全或合规必须保持 private 的路径,以免 storefront 和 BFF 错误地对其进行链接缓存。
- 注意路径前缀(/_v/private/)控制 CDN 和 cookie 行为,而 "public": true 字段控制调用该路由是否需要 VTEX 认证令牌——二者是正交的。
- 对于返回认证购物者数据、PII 或授权敏感 JSON 的路由,使用 /_v/private/...(或能收到 vtex_session 的模式),并设置适当的 Cache-Control(例如对不可缓存的 JSON API 使用 private, no-store)。
- 避免在 public 路径上假设存在 cookie:服务在 public 路径上不可靠地收到 vtex_session,身份逻辑会间歇性失败。
- 避免在边缘缓存个性化 JSON:不要对用户特定响应使用长 max-age 而不配合 private 路径和正确的缓存策略。
- 避免混合关注点:不要让一个路由同时返回公共目录和私有账户数据;拆分端点或使用 private 加服务端认证检查。
- 避免忽略 segment:按货币或 segment 变化的价格或促销若放在 public 路径上,会被缓存给错误的 segment。
- 审查时确认每个路由的路径前缀(public / /_v/segment / /_v/private)都能由官方表中的 cookie 和缓存行为证明其合理性。
- 审查时确认购物者特定或认证响应使用 private(或其他受保护)路由,且不会被不恰当地边缘缓存。
- 审查时确认 Cache-Control(及相关)头与数据敏感度匹配。
- 审查时确认客户端的并行调用为每种载荷类型使用了正确的路径。
适用边界 · 注意事项
- 应用级 LRU 缓存、VBase 或 stale-while-revalidate 编排(改用 vtex-io-application-performance)
- 仅涉及 GraphQL 字段级 @cacheControl(配合本技能使用 vtex-io-graphql-api)