CDN缓存规则怎么设?搞懂这几个参数网站快一大截

静态长缓、动态短缓,命中率就上来了
发布于
5

不少人以为接上CDN网站就自动变快,其实默认配置往往发挥不出一半本事。真正决定效果的是缓存规则。规则调好了,回源少、命中高、网站快;调不好,要么白交回源带宽,要么更新了用户还看旧的。下面把几个核心参数拆开讲。

先搞懂CDN到底在干嘛

CDN把你网站的内容缓到全国各地的节点。用户访问时就近拿,不用每次都跑到你的源站。命中缓存叫hit,没命中得回源站拿叫miss。你要做的就是让尽量多的请求命中,又不让用户看到过期内容。

四个核心参数

参数 管什么 设不好会怎样
缓存时间TTL 内容在节点存多久 太短频繁回源,太长更新不生效
缓存键 拿什么区分不同缓存 带上无用参数会把缓存打碎
不缓存规则 哪些不能缓 把后台、登录页缓了会串号
回源设置 miss时怎么回源站拿 回源Host错了直接报错

缓存时间怎么定

核心思路是:越不变的东西缓越久。CSS、JS、图片、字体这些静态资源,TTL可以设到一个月甚至更长。HTML页面这种内容会变的,设短一点,几分钟到几小时。接口数据一般不缓或只缓几秒。

静态资源想长缓又怕更新不生效,办法是文件名带版本号或哈希,比如 style.a1b2c3.css。内容一变文件名就变,CDN当新文件拉,旧的自然过期。这个做法比手动刷缓存可靠多了。

缓存键别乱带参数

缓存键决定CDN怎么区分两个请求是不是同一个。默认会把整个URL包括查询参数都算进去。问题是广告跟踪参数像utm_source这种,每个人点进来都不一样,结果同一张图被缓了无数份,命中率直接崩。正确做法是把这些无关参数从缓存键里剔掉。

不缓存规则必须设

后台管理路径、登录页、购物车、个人中心这些带用户状态的页面,千万不能缓。一旦缓了,A用户看到B用户的信息,既是bug又是隐私事故。一般把 wp-admin、wp-login、带Cookie的动态请求都加进不缓存名单。

回源设置别忽略

miss的请求会回源站拿。回源Host要填对,不然源站根据Host分站会返错页。如果源站是HTTPS,回源也要走HTTPS。回源给个合理超时,源站慢的时候别让CDN一直干等。

静态和动态分开处理

一个实用思路是把站点拆成静态和动态两块。图片、视频、下载包这些放一个专门的静态域名,走CDN长缓存。动态接口、后台走另一个域名,不缓或短缓。这样规则清楚,不容易互相干扰。

怎么验证缓存生效了

打开浏览器开发者工具,看响应头里的 X-Cache 或 CF-Cache-Status 字段。显示HIT就是命中了缓存,MISS是回了源。同一个静态资源刷几次都是MISS,那就是缓存规则没生效,得回去查。

小结

CDN不是接上就完事,缓存规则才是真正决定效果的地方。记住四句话:静态长缓加版本号,动态短缓或不缓,缓存键剔掉广告参数,后台登录页一律不缓。这几样做到,命中率和体验都上来了。

常见问题(FAQ)

CDN缓存时间设多长合适?
看内容类型。CSS、JS、图片、字体等静态资源可以设一个月以上并配合文件名版本号;HTML页面设几分钟到几小时;接口数据一般不缓或只缓几秒。
为什么CDN命中率很低?
常见原因是缓存键把utm_source这类广告跟踪参数算进去,导致同一资源被缓存成无数份。把无关参数从缓存键中剔除即可明显提升命中率。
怎么知道请求命中了缓存?
打开浏览器开发者工具,看响应头的X-Cache或CF-Cache-Status字段,HIT表示命中缓存,MISS表示回源。静态资源多次刷新都是MISS说明缓存规则未生效。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600