缓存键变体如何工作?
Netlify 现在支持自定义 Netlify-Vary 标头,该标头采用一组逗号分隔的指令来指示请求的哪些部分会有所不同:
查询因请求 URL 查询参数而异
标头因请求标头的值而异
语言因 Accept-Language 请求标头中的语言而异
国家/地区因对请求 IP 地址进行 GeoIP 查找而推 臺灣電話號碼 断出的国家/地区而异
cookie 根据请求 cookie 的值而变化
这些指令与请求 URL 一起定义 Netlify 用来唯一标识 CDN 中的缓存对象的缓存密钥。
询问
默认情况下,Netlify 不会考虑查询参数来构建缓存键,因为 _utm 参数或用于分析、社交链接等的会话 ID 之类的东西可以大大降低缓存命中率。
但是,如果您知道资源的响应仅取决于特定的查询参数,例如 item_id、page 或 per_page 参数,则可以通过将 Netlify-Vary 添加到动态内容响应来更改资源的此行为:
Netlify-Vary:查询=item_id|page|per_page
Netlify-Vary 会告诉 Netlify 在决定是否提供缓存响应时仅考虑这 3 个查询参数,因此其他查询参数(如 _utm)不会影响缓存命中率。
如果您想在创建缓存键时包含所有查询参数,可以通过添加以下 Netlify-Vary 标头来实现:
Netlify-Vary:查询
标头
您现在可以指示 Netlify Edge 改变特定标头上的内容,以便您的业务逻辑可以作为标头传输,并且仍然影响缓存。要控制哪些标头进入缓存键,您可以使用标头指令,如下所示:
这将使缓存将自定义设备类型标头考虑为缓存键,并区分具有不同设备类型标头值的对象,因此例如不同的用户尝试从不同的设备类型(例如移动、网络、等)将看到每种类型设备的不同自定义内容。
与查询参数变体类似,您还可以提供标头列表:
Netlify-Vary:标头=设备类型|应用程序版本
曲奇饼
Cookie 有多种用途,但其常见用例之一是 A/B 测试。然而,cookie 通常包含附加信息,例如身份验证详细信息或分析数据。在这种情况下,您不想改变整个 cookie 值的缓存内容,而只想改变几个键值对。