tencent cloud

边缘安全加速平台 EO

动态与公告
产品动态
安全公告
产品公告
产品简介
产品概述
产品优势
应用场景
EdgeOne 与 CDN 等产品功能对比
使用限制
购买指南
试用套餐体验权益说明
免费版套餐使用说明
计费概述
计费项目
购买指引
续费指引
欠费与退款说明
套餐选型对比
关于“干净流量”计费说明
DDoS 防护容量说明
快速入门
选择业务场景
快速接入网站安全加速
通过 Pages 快速部署网站
域名服务与源站配置
域名服务
HTTPS 证书
源站配置
站点加速
概述
访问控制
智能加速
缓存配置
文件优化
网络优化
URL 重写
修改头部
修改应答内容
规则引擎
图片与视频处理
单连接下载限速
DDoS 与 Web 防护
概述
DDoS 防护
Web 防护
Bot 管理
API 资产识别(Beta)
边缘函数
概述
快速指引
操作指引
Runtime APIs
示例函数
实践教程
Pages
四层代理
概述
新建四层代理实例
修改四层代理实例配置
停用/删除四层代理实例
批量配置转发规则
获取客户端真实IP
数据分析与日志服务
日志服务
数据分析
告警服务
站点与计费管理
计费管理
站点管理
版本管理
通用策略
通用参考
配置语法
请求与响应行为
国家/地区及对应代码枚举
Terraform
Terraform 简介
安装和配置 Terraform
实践教程
自动预热/清除缓存
防盗刷/盗链实践
HTTPS 相关实践
加速优化
流量调度
数据分析与告警
第三方日志平台集成实践
对象存储类源站(例如:COS)配置实践
跨域响应配置
API 文档
History
Introduction
API Category
Making API Requests
Site APIs
Acceleration Domain Management APIs
Site Acceleration Configuration APIs
Edge Function APIs
Alias Domain APIs
Security Configuration APIs
Layer 4 Application Proxy APIs
Content Management APIs
Data Analysis APIs
Log Service APIs
Billing APIs
Certificate APIs
Origin Protection APIs
Load Balancing APIs
Diagnostic Tool APIs
Custom Response Page APIs
API Security APIs
DNS Record APIs
Content Identifier APIs
Legacy APIs
Ownership APIs
Image and Video Processing APIs
Multi-Channel Security Gateway APIs
Version Management APIs
Data Types
Error Codes
常见问题
产品特性相关问题
DNS 记录相关问题
域名配置相关问题
站点加速相关问题
数据与日志相关问题
安全防护相关问题
源站配置相关问题
排障指南
异常状态码参考
EdgeOne 4XX/5XX 状态码排障指南
520/524状态码排障指南
521/522 状态码排障指南
工具指南
相关协议
Service Level Agreement
源站防护启用特别约定
TEO 政策
隐私协议
数据处理和安全协议
联系我们
词汇表

缓存键(Cache Key)介绍

PDF
聚焦模式
字号
最后更新时间: 2023-08-07 16:30:42

什么是缓存键(Cache Key)

缓存键(Cache Key)用于决定用户访问的文件资源是否命中 EdgeOne 边缘缓存内容,是节点内缓存资源的唯一标识。缓存命中可以帮助您的站点:
减少回源请求量,降低源站带宽消耗。
提高用户的访问请求速度。
缓存键的工作原理如下所示:
当文件被缓存到 EdgeOne 边缘节点中时,节点将根据缓存键规则来为文件生成一个对应的缓存键标识,默认情况下,缓存键通过客户端请求 URL 和查询字符串计算得出。当有其它客户端向该边缘节点发起 HTTP 请求时,节点将根据 Cache Key 的计算规则,来比对该 HTTP 请求与节点内所有缓存资源的缓存键(Cache Key)是否一致,如果一致时,则将对应的缓存资源直接响应给该客户端,即缓存命中。


缓存键(Cache Key)的作用场景

缓存键(Cache Key)用于 EdgeOne 节点为不同版本的文件建立多版本缓存内容,即使客户端通过同一路径请求,也可以通过缓存键(Cache Key)的计算规则来正确响应用户文件。

您可以通过以下场景示例来了解如何正确配置 Cache Key 来帮助您正确匹配请求的缓存文件,同时降低请求的回源率。
例如:用户 A 和用户 B 分别有以下请求:
请求 A:https://www.example.com/Image/test.jpg?version=1&time=1651752743
请求 B:https://www.example.com/Image/test.jpg?version=2&time=1651758319
场景一:用户访问的文件路径完全相同,但是根据查询字符串内携带的version参数不同,将会有版本的区分,以上请求分别为两张不同的图片,此时应在 Cache Key 中保留会影响文件版本的参数version,来保证节点能正确缓存并响应对应的文件内容。
场景二:用户访问的 URL 中查询字符串的内容完全不影响文件内容,以上请求所对应的文件一致,不影响文件版本,此时应该在 Cache Key 计算中忽略所有查询字符串,来提高文件在节点内的命中率,减少请求回源。

允许自定义的 Cache Key 内容及生效规则

EdgeOne 允许用户自定义 Cache Key 规则,支持配置查询字符串、HTTP 请求头或者 cookie 进行区分缓存。您可以通过 自定义 Cache Key 来了解如何配置自定义的 Cache Key 规则。
注意:
1. 缓存键计算以客户端向节点发起的 HTTP 请求内容为准,回源 URL 改写、回源跟随重定向、回源 HTTP 请求头、访问 URL 重写均不影响缓存键的计算。
2. 当在 EdgeOne 内配置了 Token 鉴权时,鉴权内容不会参与至缓存键计算中。
3. 当在 EdgeOne 内开启了图片处理参数,请求中携带的图片处理参数将默认参与 Cache Key 计算。

查询字符串

查询字符串是指请求 URL 中 ? 之后的字符串参数(包含一个或多个参数,用 &分隔),例如:https://www.example.com/images/example.jpg?color=blue&size=large 中的 color=blue&size=large

EdgeOne 支持自定义保留指定查询字符串的内容来区分缓存。
注意:
当保留查询字符串作为缓存键时,如果参数的位置顺序发生变化,缓存键也会变化。
例如:当客户端分别发起以下请求:
请求 A:https://www.example.com/Image/test.jpg?version=1&type=a
请求 B:https://www.example.com/Image/test.jpg?version=2&type=a
请求 C:https://www.example.com/Image/test.jpg?type=a&version=1
配置
缓存行为
查询字符串配置为全部保留
请求 A 和请求 B 所携带参数内容不同,对应不同的缓存版本,请求 A 和请求 C 参数内容一致,但是顺序不同,也对应不同的缓存版本。
查询字符串配置为全部忽略
请求 A、B、C 均对应同一份缓存版本。
查询字符串配置为保留指定参数 Type
请求 A、B 的参数顺序及内容完全一致,对应同一份缓存版本;请求 B 和请求 C 的 参数内容相同,但是顺序不同,对应不同的缓存版本。
查询字符串配置为忽略指定参数 Type
请求 A 和请求 B 剩余参数的内容不一致,对应不同的缓存版本;请求 A 和请求 C 剩余参数的内容一致,但是顺序不一致,对应不同的缓存版本。

HTTP 请求头

EdgeOne 支持将指定的 HTTP 请求头加入缓存键 Cache Key 的计算中,EdgeOne 边缘节点将根据请求头内容来建立不同的缓存版本。请求头的顺序变化,不影响 Cache Key的计算。
例如:指定HTTP请求头 User-Agent 加入缓存键计算中,以下请求 A 与请求 B 的 URL 及参数内容一致,但是 User-Agent 头内容不一致,将对应不同的缓存版本。
请求 A:https://www.example.com/Image/test.jpg?version=1&type=a,携带 User-Agent:chrome
请求 B:https://www.example.com/Image/test.jpg?version=1&type=a,携带 User-Agent:ios

Cookie

EdgeOne 支持将指定的 Cookie 内参数加入到缓存键的计算中,根据 Cookie 参数及内容区分缓存版本。Cookie 内多个参数参与 Cache Key 计算时,参数的顺序变化不影响 Cache Key 的计算。
例如:指定 Cookie 内参数 User 加入缓存键计算中,以下请求 A 和请求 B 参数内容相同,对应同一份缓存,请求 A 与请求 C 参数内容不同,对应不同版本的缓存。
请求 A:https://www.example.com/Image/test.jpg?version=1&type=a,携带 Cookie:User=A;ID=1
请求 B:https://www.example.com/Image/test.jpg?version=1&type=a,携带 Cookie:User=A;ID=2
请求 C:https://www.example.com/Image/test.jpg?version=1&type=a,携带 Cookie:User=B;ID=1

了解更多



帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈