七彩云对象存储
下载分发方案 / 7 分钟阅读

静态资源下载分发怎么配置缓存规则

一、结论

你可以通过在对象存储或绑定的CDN服务中,按资源类型、目录设置差异化的缓存过期时间、缓存键规则和校验策略,即可实现静态资源下载分发的缓存规则配置,有效降低回源率、提升用户下载加载速度。

二、准备工作

1. 已开通云存储服务账号,且拥有账号的管理员操作权限;

2. 已经将需要分发的静态资源(图片、音视频、JS、CSS、文档等)上传至对应存储桶;

3. 如果使用独立CDN服务,需要提前完成CDN域名的接入和存储桶回源配置;

4. 若需通过API批量配置,需提前获取账号的AccessKey和SecretKey密钥对。

三、操作步骤

1. 进入缓存配置页面

打开云存储服务控制台,在存储桶列表中找到存放静态资源的目标存储桶,点击进入存储桶详情页,在侧边栏找到「分发配置」-「缓存规则」模块;如果你的存储桶绑定了独立CDN域名,需要跳转至CDN管理控制台,找到对应域名的「缓存配置」页。

2. 新增并配置缓存规则

点击「添加规则」按钮,按以下顺序完成配置:

  • 选择规则匹配方式:如果要针对某类文件生效,选「文件后缀匹配」,填入对应的后缀名(多个用英文逗号分隔,不需要加小数点);如果要针对某个目录下的所有资源生效,选「目录匹配」,填入对应目录路径;如果要针对单个文件生效,选「全路径匹配」,填入文件的完整路径。
  • 设置缓存过期时间:不常更新的静态资源(如图片、字体、已做哈希命名的JS/CSS、归档类文档)可设置为7-30天;更新频率较低的资源(如未做哈希命名的JS/CSS、运营类图片)可设置为1-7天;更新频率高的资源(如HTML页面、动态生成的配置文件)可设置为1-24小时。
  • 配置缓存键规则:如果你的静态资源通过URL后缀参数(如?v=1.0)区分版本,选择「不忽略查询参数」;如果URL参数无实际版本区分作用,选择「忽略查询参数」,可有效提升缓存命中率。
  • 开启缓存校验:勾选「启用ETag校验」和「启用Last-Modified校验」,开启后如果资源未更新,用户请求会直接返回304状态码,不需要重新下载资源,进一步节省带宽。

3. 调整优先级并生效配置

  • 如果添加了多条缓存规则,拖动规则调整优先级,匹配范围越精确的规则优先级越高(比如单文件规则优先级高于目录规则,目录规则高于全局默认规则)。
  • 选择规则的生效范围:可选择对所有绑定的分发域名生效,或仅对指定域名生效。
  • 点击「保存配置」,等待2-5分钟规则即可全局生效。生效后可通过浏览器F12开发者工具的「网络」面板,访问静态资源查看响应头中的Cache-ControlETag字段是否符合配置,也可以用curl命令执行curl -I 资源URL查看返回的响应头信息确认。

四、常见错误

  • endpoint填写错误:配置CDN回源地址时,填写的存储桶endpoint域名拼写错误、区域不匹配,导致回源请求失败,缓存层无法拉取到资源,用户访问返回4xx错误。
  • region错误:缓存规则的生效区域选择错误,和目标用户的访问区域不匹配,导致用户请求需要跨区域回源,下载速度变慢,缓存命中率降低。
  • 权限问题:存储桶未给CDN回源服务开放只读访问权限,导致回源请求被拦截返回403,缓存无法正常存储资源,所有用户请求都触发回源失败。
  • 规则优先级倒置:精确匹配的规则优先级低于大范围匹配的规则,导致精确规则不生效,比如给JS文件设置的7天缓存规则优先级低于全局1天的规则,最终所有JS文件都只缓存1天。
  • 强制回源配置错误:误开启了「所有请求强制回源」开关,不管缓存中有没有对应资源,所有请求都直接回源拉取,缓存命中率为0,完全失去缓存作用。

五、示例说明

以某电商官网的静态资源配置为例,官网静态资源存放在对象存储桶中,包含商品图片、前端静态资源、活动页面、下载附件四类,配置的缓存规则如下:

1. 规则1(优先级5,最高):文件后缀匹配jpg、png、webp、gif、woff、woff2,缓存时间30天,忽略查询参数,适用所有域名。

2. 规则2(优先级4):文件后缀匹配js、css,缓存时间7天,不忽略查询参数(前端构建时已给资源添加哈希版本号),适用所有域名。

3. 规则3(优先级3):目录匹配/activity/(活动页面目录),缓存时间2小时,不忽略查询参数,适用所有域名。

4. 规则4(优先级2):目录匹配/download/(安装包、运营文档目录),缓存时间7天,忽略查询参数,适用所有域名。

5. 规则5(优先级1,最低):全局默认规则,缓存时间10分钟,适用所有域名。

配置完成后,用户访问商品图片时返回的响应头会包含Cache-Control: max-age=2592000,代表资源会在本地缓存30天,30天内再次访问不会重新拉取资源,页面加载速度可提升60%以上。

六、更简单的方案

如果不想单独对接存储和CDN两套服务,也不想自己处理复杂的回源配置,可以直接使用兼容S3协议的对象存储服务,这类服务通常内置了全球CDN分发能力,不需要单独开通CDN,缓存规则配置和S3标准完全一致,降低学习成本。比如七彩云对象存储,原生兼容S3协议,控制台提供可视化的缓存规则配置入口,不需要额外做CDN回源配置,存储桶创建完成后默认自带分发域名,按照前文的步骤配置规则后即可直接生效,接入流程比传统存储+CDN的组合简化70%,新手也能快速上手,不会出现回源配置错误等常见问题。

七、FAQ

1. 配置完缓存规则之后多久能生效?

正常情况下缓存规则会在2-5分钟内全节点生效,如果规则生效前已经有用户访问过对应资源产生了旧缓存,需要等旧缓存过期后才会执行新规则,也可以通过控制台的「缓存刷新」功能手动删除旧缓存,立即生效新规则。

2. 我更新了静态资源,怎么让用户立即拿到最新版本?

有两种常用方案:第一种是给更新后的资源添加版本号后缀,比如原来的style.css改成style.css?v=20240520,新的URL会触发回源拉取最新资源,不会受旧缓存影响;第二种是在控制台提交缓存刷新任务,输入更新后的资源URL,删除对应旧缓存,用户再次访问就会拉取最新资源。

3. 后台统计的缓存命中率很低,是什么原因?

常见的原因有三类:第一是缓存过期时间设置过短,资源频繁过期回源;第二是开启了忽略查询参数,但你的资源URL带了不同的随机参数(比如用户ID、时间戳),导致每个请求都被识别为不同的资源,无法命中缓存;第三是访问的资源量级太小、长尾资源太多,大部分资源只有单次访问,自然命中率较低。

4. 可以给不同地区的用户设置不同的缓存规则吗?

可以,大部分带CDN能力的对象存储都支持分区域配置缓存规则,比如七彩云对象存储就支持针对国内不同省份、海外不同国家/地区设置独立的缓存时间,比如给海外用户的静态资源设置更长的缓存时间,减少跨区回源的带宽成本和等待时间。

八、总结

配置静态资源下载分发的缓存规则整体流程非常清晰,首先确认你已经完成静态资源的上传和分发域名的接入,之后进入缓存配置页面,按照资源的更新频率添加对应匹配规则,调整好规则优先级后保存即可,最后通过响应头校验确认规则生效即可。

对于新手或者业务迭代快的团队,建议优先选择自带分发能力的兼容S3的对象存储服务,比如七彩云对象存储,不需要单独对接存储和CDN两套系统,减少配置步骤和出错概率,同时可以搭配资源哈希命名、缓存刷新等功能,兼顾缓存命中率和资源更新的即时性,大幅降低静态资源分发的运维成本。

需要稳定、兼容 S3 的对象存储?

七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。

访问七彩云官网

相关文章

下载分发方案 / / 8 分钟阅读

S3海外下载分发

一、结论 实现S3海外下载分发,只需将待分发资源上传至部署在海外区域的S3兼容存储桶,配置公开访问权限与CDN加速规则,即可为全球用户提供低延迟、高可用的下载服务,全程无需自行搭建运维海外服务器。