你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 内容分发网络规则引擎的 X-EC-Debug HTTP 标头
调试缓存请求标头 X-EC-Debug
提供有关应用到所请求资产的缓存策略的附加信息。 这些标头特定于 Edgio 的 Azure CDN Premium 产品。
仅当满足以下条件时,从 POP 服务器发送给用户的响应才包含 X-EC-Debug
标头:
- 已针对指定的请求的规则引擎启用调试缓存响应头功能。
- 指定的请求定义了要在响应中包括的调试缓存响应头集。
在指定的请求中使用以下指令,以定义要包含在响应中的调试缓存信息:
请求标头 | 说明 |
---|---|
X-EC-Debug: x-ec-cache | 缓存状态代码 |
X-EC-Debug: x-ec-cache-remote | 缓存状态代码 |
X-EC-Debug: x-ec-check-cacheable | 可缓存 |
X-EC-Debug: x-ec-cache-key | 缓存键 |
X-EC-Debug: x-ec-cache-state | 缓存状态 |
可以通过在请求中包括以下标头和指定的指令来请求调试缓存响应头:
X-EC-Debug: Directive1,Directive2,DirectiveN
X-EC-Debug: x-ec-cache,x-ec-check-cacheable,x-ec-cache-key,x-ec-cache-state
X-EC-Debug 响应标头可以标识服务器及其如何通过以下指令处理了响应:
标头 | 说明 |
---|---|
X-EC-Debug: x-ec-cache | 每当通过内容分发网络路由内容时,都会报告此标头。 此标头标识完成请求的 POP 服务器。 |
X-EC-Debug: x-ec-cache-remote | 仅当请求的内容已缓存在来源防护服务器或 ADN 网关服务器上时,才报告此标头。 |
X-EC-Debug 标头采用以下格式报告缓存状态代码信息:
X-EC-Debug: x-ec-cache: <StatusCode from Platform (POP/ID)>
X-EC-Debug: x-ec-cache-remote: <StatusCode from Platform (POP/ID)>
上述响应标头语法中使用的元素定义如下:
StatusCode:该缓存状态代码表示内容分发网络如何处理请求的内容。
如果由于基于令牌的身份验证而拒绝了未授权的请求,则可能会报告 TCP_DENIED 状态代码而不是 NONE。 但是,在查看缓存状态报告或原始日志数据时,会继续使用 NONE 状态代码。
Platform:指示在其上请求内容的平台。 以下代码在此字段中有效:
代码 平台 ECAcc HTTP Large ECS HTTP Small ECD 应用程序传送网络 (ADN) POP:指示处理请求的 POP。
以下示例标头提供请求的缓存状态代码信息:
X-EC-Debug: x-ec-cache: TCP_HIT from ECD (lga/0FE8)
X-EC-Debug: x-ec-cache-remote: TCP_HIT from ECD (dca/EF00)
X-EC-Debug: x-ec-check-cacheable
响应头显示请求的内容是否可缓存。
此响应头并不指示是否发生了缓存。 而是指示请求是否符合缓存的条件。
X-EC-Debug
响应头报告是否可以缓存请求,其格式如下:
X-EC-Debug: x-ec-check-cacheable: <cacheable status>
上述响应标头语法中使用的元素定义如下:
值 | 描述 |
---|---|
YES | 指示请求的内容是否符合缓存的条件。 |
是 | 指示请求的内容是否不符合缓存的条件。 此状态可能是以下原因之一造成的: - 客户特定的配置:特定于你帐户的配置可能阻止 POP 服务器缓存资产。 例如,规则引擎可能会通过对符合条件的请求启用“绕过缓存”功能,来阻止缓存资产。 - 缓存响应标头:所请求资产的 Cache-Control 和 Expires 标头可能阻止 POP 服务器缓存该资产。 |
未知 | 指示服务器无法评估请求的资产是否可缓存。 如果由于基于令牌的身份验证而拒绝了请求,则通常会出现此状态。 |
以下示例响应头显示请求的内容是否可缓存:
X-EC-Debug: x-ec-check-cacheable: YES
X-EC-Debug: x-ec-cache-key
响应标头指示与请求内容关联的物理缓存键。 物理缓存键包括一个路径,用于标识要缓存的资产。 换言之,服务器会根据 cache-key 所定义的路径检查缓存版的资产。
此物理缓存键以双正斜杠 (//) 开头,后接用于请求内容的协议(HTTP 或 HTTPS)。 此协议后接所请求资产的相对路径,该路径以内容接入点开头(例如 /000001/)。
默认情况下,HTTP 平台的配置使用标准缓存,这会导致缓存机制忽略查询字符串。 此类配置会阻止缓存键包含查询字符串数据。
在缓存键中捕获查询字符串时,它将转换为其等效哈希。 然后,在所请求资产的名称与其文件扩展名之间插入,如资产 <hash value>.html 所示。
X-EC-Debug
响应标头采用以下格式报告物理缓存键信息:
X-EC-Debug: x-ec-cache-key: CacheKey
以下示例响应标头指示所请求内容的物理缓存键:
X-EC-Debug: x-ec-cache-key: //http/800001/origin/images/foo.jpg
X-EC-Debug: x-ec-cache-state
响应标头指示所请求内容在请求时的缓存状态。
X-EC-Debug
响应标头采用以下格式报告缓存状态信息:
X-EC-Debug: x-ec-cache-state: max-age=MASeconds (MATimePeriod); cache-ts=UnixTime (ddd, dd MMM yyyy HH:mm:ss GMT); cache-age=CASeconds (CATimePeriod); remaining-ttl=RTSeconds (RTTimePeriod); expires-delta=ExpiresSeconds
上述响应标头语法中使用的元素定义如下:
MASeconds:指示所请求内容的 Cache-Control 标头定义的最大期限(以秒为单位)。
MATimePeriod:将最大期限值(即 MASeconds)转换为单位更大(例如,天)的近似等效值。
UnixTime:指示请求的内容的缓存时间戳,它以 Unix 时间(也称为可移植操作系统接口 (POSIX) 时间或 Unix 纪元)为单位。 缓存时间戳指示系统计算资产生存时间 (TTL) 的起始日期/时间。
如果源服务器不使用第三方 HTTP 缓存服务器或该服务器未返回 Age 响应头,则缓存时间戳始终为系统检索或重新验证资产时的日期/时间。 否则,POP 服务器将使用 Age 字段计算资产的 TTL,如下所示:Retrieval/RevalidateDateTime - Age。
域驱动设计 (DDD),dd MMM yyyy HH:mm:ss GMT:指示所请求内容的缓存时间戳。 有关详细信息,请参阅 UnixTime 术语。
CASeconds:指示自缓存时间戳以来所经历的秒数。
RTSeconds:指示系统将缓存内容视为新内容的剩余秒数。 此值的计算方式如下:RTSeconds = 最大期限 - 缓存期限。
RTTimePeriod:将剩余 TTL 值(即 RTSeconds)转换为单位更大(例如,天)的近似等效值。
ExpiresSeconds:指示在达到
Expires
响应标头中指定的日期/时间之前剩余的秒数。 如果Expires
响应头未包含在响应中,则此术语的值为“无”。
以下示例响应标头指示所请求内容在请求时的缓存状态:
X-EC-Debug: x-ec-cache-state: max-age=604800 (7d); cache-ts=1341802519 (Mon, 09 Jul 2012 02:55:19 GMT); cache-age=0 (0s); remaining-ttl=604800 (7d); expires-delta=none