在CDN加速接入文档中,缓存策略配置是决定网站性能的核心环节。本文基于Cloudflare官方文档,为您梳理缓存策略的决策路径:先明确哪些资源需要缓存、缓存多久,再配置缓存规则、启用持久化存储,并处理缓存刷新与异常情况。以下操作均以Cloudflare控制台为例,其他CDN服务商逻辑类似但名称可能不同。
第一步:判断哪些资源应该缓存
缓存并非对所有资源都适用。您需要先区分静态资源与动态资源。静态资源(如图片、CSS、JavaScript、视频)通常不常变化,适合缓存;动态资源(如API响应、用户个人页面)则需要实时性,不应缓存或仅缓存极短时间。Cloudflare默认缓存部分静态扩展名(如jpg、css、js等),但您可以通过缓存规则自定义覆盖默认行为。
配置缓存规则:指定资源和时长
在Cloudflare控制台的“缓存”>“缓存规则”中,您可以创建规则,根据URL、文件扩展名、请求头等条件,指定哪些资源应被缓存以及缓存多久。例如,为图片目录设置缓存时间为30天,为HTML页面设置缓存时间为5分钟。规则创建后,会覆盖默认缓存行为,请谨慎设置优先级。
操作步骤
- 登录Cloudflare控制台,选择您的域名。
- 进入“缓存”>“缓存规则”,点击“创建规则”。
- 命名规则,设置匹配条件(如URL路径包含/images)。
- 设置缓存时间(如30天)或选择“忽略缓存”等行为。
- 保存并部署规则,等待生效(通常几秒内)。
使用持久化存储延长缓存时间
Cloudflare提供持久化存储(Persistent Storage),可将缓存内容存储在边缘节点上,即使源站不可用也能继续提供缓存内容,从而增加缓存时间并提高可靠性。您可以在缓存规则中启用“持久化存储”选项,适用于对可用性要求较高的静态资源。
手动刷新缓存:何时需要?
当源站内容更新后,您需要手动清除缓存以强制CDN获取最新版本。Cloudflare支持两种方式:单独刷新特定URL,或一次性清除全部缓存。在“缓存”>“清除缓存”中操作。注意,频繁清除全部缓存会降低缓存命中率,应尽量精确刷新。
常见误区
- 误区一:缓存时间越长越好。过长的缓存会导致内容更新延迟,影响用户体验。
- 误区二:所有资源都缓存。动态资源被缓存可能导致数据不一致。
- 误区三:忘记清理缓存。删除或修改源站文件后,不清理缓存会继续提供旧版本。
缓存与DDoS防护的协同
缓存策略不仅提升性能,还能缓解DDoS攻击。Cloudflare的DDoS防护系统会自动检测并缓解攻击,而缓存可以吸收一部分攻击流量,减少源站压力。例如,在DDoS攻击期间,缓存内容仍可正常返回,保护源站不被击垮。因此,合理的缓存策略是安全防护的一部分。
动态内容的缓存:使用Workers实现边缘缓存
对于动态内容,您可以使用Cloudflare Workers在边缘进行缓存处理。Workers是Serverless平台,允许您在边缘节点运行代码,结合其缓存API,可以为API响应、个性化页面等设置边缘缓存。例如,通过Workers添加响应头,控制缓存行为。这需要一定的开发能力,但能显著降低源站负载。
示例代码片段
// 在Workers中设置缓存控制头
async function handleRequest(request) {
const response = await fetch(request);
const newHeaders = new Headers(response.headers);
newHeaders.set('Cache-Control', 's-maxage=60');
return new Response(response.body, { headers: newHeaders });
}
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});
缓存策略的取舍与失败条件
缓存策略需要平衡性能与实时性。若缓存时间过短,则命中率低,源站压力大;过长则内容更新不及时。失败条件包括:源站更改但缓存未刷新、缓存规则配置错误导致资源未被缓存、以及动态资源被错误缓存。建议定期审查缓存命中率(在Cloudflare分析中查看),并根据业务需求调整规则。
另外,负载均衡接入文档:后端服务器组设置和Web应用防火墙接入文档:规则配置可作为配套参考。
参考资料
延伸阅读
