EdgeOne Makers 缓存与边缘加速
上一篇 讲了怎么挡掉坏流量。这篇讲”快”的一面:边缘缓存。把内容缓存到离用户最近的边缘节点,用户访问时不用每次都回源,延迟低、源站压力小。
缓存是怎么加速的
没有缓存时,每个请求都要走到你的应用(Cloud Functions 或后端),再返回。有了边缘缓存:
- 用户请求到边缘节点
- 节点发现已有缓存副本,直接返回
- 只有缓存过期或没有时,才回源取一次
这样大部分用户拿到的是边缘节点的响应,速度取决于”用户到最近节点”的距离,而不是”用户到源站”的距离。
默认缓存行为
Makers 对静态资源(图片、CSS、JS、字体等)有默认缓存策略,对 HTML 通常默认不缓存或缓存时间很短(保证内容更新及时)。
| 资源类型 | 默认行为 |
|---|---|
| 静态文件(js/css/图片/字体) | 较长缓存时间 |
| HTML 页面 | 较短或遵循源站 Cache-Control |
| API 响应 | 默认不缓存 |
自定义缓存规则
你可以在控制台为不同路径设置缓存时长。常见做法:
| 路径 | 缓存策略 |
|---|---|
/static/* |
缓存 7 天,文件名带哈希可更长 |
/api/* |
不缓存(动态数据) |
/ 首页 |
缓存 1 分钟(兼顾新鲜度与速度) |
/blog/* |
缓存 10 分钟 |
配置示例:对带内容哈希的静态资源缓存一个月。
条件: 请求路径 匹配 /static/* 且 文件名包含 hash
缓存: 2592000 秒(30 天)
缓存键
“缓存键”决定”什么算同一个缓存”。默认通常按 URL。但有时同一个 URL 对不同用户应返回不同内容(比如带 ?lang=zh 和 ?lang=en),这时需要把查询参数纳入缓存键,否则会串内容。
| 配置 | 说明 |
|---|---|
| 忽略所有查询参数 | 同一路径只存一份,省缓存但可能串数据 |
| 只保留指定参数 | 如只按 lang 区分,其余忽略 |
| 包含全部参数 | 最精确,但缓存命中率低 |
绕过缓存与主动刷新
需要实时数据的接口(登录态、库存、价格)一定要设为不缓存。
当内容更新了但缓存还没过期,可以手动”刷新缓存”或”预热”,让边缘节点立刻拉取新版本,不用等自然过期。
| 操作 | 说明 |
|---|---|
| 刷新 URL | 清除指定 URL 的缓存,下次访问重新回源 |
| 刷新前缀 | 清除某路径下所有缓存 |
| 预热 | 主动把内容推到边缘节点,避免首次访问慢 |
stale-while-revalidate
这是一项很实用的体验优化:缓存过期后,先返回旧的缓存给用户(快),同时在后台默默回源更新(新)。用户几乎感知不到过期,又总能拿到接近最新的内容。在支持的配置项里开启即可。
速查卡片
| 要点 | 说明 |
|---|---|
| 加速原理 | 边缘节点命中缓存直接返回,少回源 |
| 默认策略 | 静态资源长缓存,HTML 短缓存,API 不缓存 |
| 自定义 | 按路径设时长,静态资源可很长 |
| 缓存键 | 决定”什么算同一份缓存”,防串数据 |
| 刷新 | 内容更新可手动刷新或预热 |
| 高级 | stale-while-revalidate 先旧后新 |