边缘加速
  • 站点加速
    • 概述
    • 访问控制
      • Token authentication
        • Token 鉴权
        • 认证方法A
        • 认证方法B
        • 认证方法C
        • 认证方法D
        • 认证方法V
    • 智能加速
    • Cache configuration
      • 概述
      • EdgeOne caching rules introduction
        • EdgeOne 内容缓存规则
        • 缓存键(Cache Key)介绍
        • Vary 特性
      • 缓存配置
        • 自定义 Cache Key
        • 节点缓存 TTL
        • 状态码缓存 TTL
        • 浏览器缓存 TTL
        • 离线缓存
        • 缓存预刷新
      • 清除和预热缓存
        • 清除缓存
        • 预热缓存
        • Prefetch M3U8
      • How to improve the Cache Hit Rate of EdgeOne
    • 文件优化
      • 内容压缩
      • 智能压缩
    • 网络优化
      • HTTP/2
      • HTTP/3(QUIC)
        • 概述
        • 启用 HTTP/3
        • QUIC SDK
          • SDK 概览
          • SDK 下载和集成指引
          • 代码示例
            • Android
            • iOS
          • API 文档
            • Android
            • iOS
      • IPv6 访问
      • 最大上传大小
      • WebSocket
      • 携带客户端 IP 头部回源
      • 携带客户端 IP 地理位置头部回源
      • 开启 gRPC
      • Network Error Logging
    • URL 重写
      • 访问 URL 重定向
      • 回源 URL 重写
    • 修改头部
      • 修改 HTTP 节点响应头
      • 修改 HTTP 回源请求头
    • Modify response content
      • HTTP Response
      • Custom Error Page
    • 规则引擎
      • 概述
      • 规则管理
      • 变量
      • 规则引擎支持的匹配类型与操作
    • Image and video processing
      • Audio and Video Pre-pulling
      • Just-in-Time Image Processing
      • Video Just-In-Time Processing
      • VOD Media Origin
    • Speed limit for single connection download
    • 请求与响应行为
      • HTTP响应
      • 请求处理顺序
      • EdgeOne 默认 HTTP 回源请求头
      • EdgeOne 默认 HTTP 响应头
      • HTTP限制
    • 媒体服务
      • 音视频预拉取
      • 实时图片处理
      • 实时媒体处理
      • 点播媒体源
  • 四层代理
    • 概述
    • 新建四层代理实例
    • 修改四层代理实例配置
    • 停用/删除四层代理实例
    • 批量配置转发规则
    • 获取客户端真实IP
      • 通过 TOA 获取 TCP 协议客户端真实 IP
      • 通过 Proxy Protocol V1/V2 协议获取客户端真实 IP
        • 概述
        • 方式一:通过 Nginx 获取客户端真实 IP
        • 方式二:在业务服务器解析客户端真实 IP
        • Proxy Protocol V1/V2 获取的客户端真实 IP 格式
      • 通过 SPP 协议传递客户端真实 IP
  • 边缘 DNS
    • Domain Name Services
      • 概述
      • DNS resolution for managed domains
        • 修改 DNS 服务器
        • 配置域名 DNS 解析记录
        • 批量导入DNS记录
        • DNS 高级配置
      • Access accelerated domains
        • 添加加速域名
        • 站点/域名归属权验证
        • 修改 CNAME 解析
        • 验证业务访问
      • Traffic scheduling
        • 流量调度管理
    • HTTPS Certificate
      • Overview
      • Edge HTTPS Certificate
        • Overview
        • Deploying/Updating SSL Certificate for A Domain Name
        • Configuring A Free Certificate for A Domain Name
        • Using Keyless Certificate
      • Edge mTLS Authentication
      • Origin Certificate Validation
      • HTTPS configuration
        • Forced HTTPS Access
        • Enabling HSTS
        • SSL/TLS security configuration
          • Configuring SSL/TLS Security
          • TLS Versions and Cipher Suites
        • Enabling OCSP Stapling
      • Related References
        • Using OpenSSL to Generate Self-Signed Certificates
        • Certificate Format Requirements
        • The Difference Between one-way authentication and Mutual authentication
    • 源站配置
      • 负载均衡
        • 概述
        • 快速创建负载均衡实例
        • 健康检查策略介绍
        • 查看源站健康状态
        • 相关参考
          • 负载均衡相关概念
          • 请求重试策略介绍
      • Origin Group Configuration
      • 回源配置
        • 回源超时
        • 配置回源 HTTPS
        • Host Header 重写
        • 回源请求参数设置
        • 回源跟随重定向
        • HTTP/2 回源
        • 分片回源
        • Modify Origin
        • Origin-pull Rate Limiting Policy
      • Origin Protection(Obtaining/Updating Origin IP Address Range)
      • 相关参考
        • 旧版源站组兼容相关问题

Vary 特性

EdgeOne 对 Vary 的支持情况

EdgeOne 可支持 Vary 特性,当前默认为关闭,如需开启,可在规则引擎配置。开启后,在源站响应文件时,根据需要在响应头内增加 Vary 头部即可。Vary 头部标准请参见:Vary
说明:
如果您的域名在 2024-06-13 00:00:00 之前创建,均已默认启用支持 Vary 特性。

什么是 Vary 特性

Vary 是在 HTTP/1.1 后新增的一个 HTTP 响应头,当客户端使用同一 URL 向源站服务器发起请求时,如果源站服务器存在不同版本的文件内容时,可能被中间缓存系统(例如:浏览器缓存、内容分发网络 CDN )缓存,无法区分场景响应文件。因此,源站服务器可以通过在 HTTP 响应中增加 Vary 头来告知中间缓存系统通过哪个请求头部来区分缓存版本内容。
例如:当客户端请求都为https://www.example.com/test.pdf时,源站中为了区分客户端语言响应不同版本的文件,在 HTTP 响应头中增加了 Vary: Accept-Language,EdgeOne 将在建立缓存时,将根据客户端所请求的 Accept-Language 内容建立不同版本的缓存。
当用户 A 发起请求 URL 为https://www.example.com/test.pdf,携带的请求头Accept-Language:zh-cn,则 EdgeOne 将响应文件 A。
当用户 B 发起请求 URL 为https://www.example.com/test.pdf,携带的请求头Accept-Language:en-US,则 EdgeOne 将响应文件 B。


Vary 的应用场景

通过灵活地使用 Vary 头部,可由源站响应控制哪些文件需要根据指定的 HTTP 请求头来区分缓存,可帮助您解决以下场景问题:

场景一:URL 相同,根据客户端类型区分响应文件

假设当前网站同时具有 PC 端和移动端页面时,为了让用户访问方便,网站的 PC 端和移动端的资源均使用相同 URL 访问,但是因为屏幕分辨率的差异,前端为了将内容适配到移动端,图片的分辨率大小是不一致的,此时需要能根据用户在请求时携带的 User-Agent 头部来区分响应的图片 A 适配 PC 端,图片 B 适配移动端。为了避免响应的图片内容被缓存导致移动端访问的内容与 PC 端内容一致,此时源站可在响应图片时增加 Vary:User-Agent 来指定节点根据用户请求的 User-Agent 头部区分缓存。


场景二:URL 相同,根据访问来源响应跨域头

假设当前页面内存在同一个图片文件分别被域名 A 和域名 B 引用时,为了避免出现跨域错误,通常需要在源站响应文件时为该文件增加Access-Control-Allow-Origin来实现允许跨域访问,但是如果当前文件被缓存,则可能出现跨域头一起被缓存导致出现跨域访问错误的问题。此时源站可以在响应 Access-Control-Allow-Origin 跨域头的同时,增加 Vary:origin 头部,来指定节点根据用户请求的 Origin 头部区分缓存。


操作步骤

若您的业务域名为 www.example.com,且源站会响应 Vary: Origin,您希望 EdgeOne 可以根据 Origin 的不同值区分缓存,可参考以下步骤进行配置:
1. 登录 边缘安全加速平台 EO 控制台,在左侧菜单栏中,进入服务总览,单击网站安全加速内需配置的站点。
2. 在站点详情页面,单击站点加速 > 规则引擎,进入规则引擎页面。
3. 在规则引擎页面,单击创建规则,选择新增空白规则
4. 在规则编辑页面,匹配类型选择为 HOST 等于 www.example.com
5. 单击操作 > 选择框,在弹出的操作列表内,选择操作为 Vary 特性,单击开关,启用 Vary 特性。

6. 单击保存并发布,即可完成该规则配置。