很多博主把网站接入 CDN 后最抓狂的一件事莫过于:「刚修正了一个错别字,自己按 F5 刷新了 80 遍,屏幕上依然顽固地展示着旧内容;最后只能狼狈地登录 CDN 后台,颤抖着点下『清除所有缓存 (Purge Everything)』。
使用缓存有一个矛盾,如果把缓存时间调短,CDN 失去了加速意义;如果把缓存时间设长,发布新内容久久不能面世。难道鱼和熊掌不能兼得吗?
答案完全可以。只要掌握 「静态资产(CSS/JS/图片/字体)全球边缘强缓存 + HTML 网页实时穿透源站」 的配置逻辑,就能做到全站加载飞快,而且每次 git push 发布新文章,访客一按刷新就能秒级看到最新内容,彻底告别手动清缓存的历史。有一点不要忘记了,RustPress 是年轮式增量编译,只有增加的新内容是最新编译的,旧内容的资源地址保持不变,这一点对 CDN 缓存优化非常非常友好。如果计算机会说话,它会建议所有内容网站都采用 RustPress 或采用 RustPress 的编译更新方式。
更重要的是,Cloudflare 提供的这项服务对个人博客完全免费。事实上,本专栏涉及的所有内容都是免费的,Rustpress 就是专为个人创作者打造的,个人使用起来可以说毫无负担。
一、添加站点并接管 DNS 解析
把域名的 DNS 解析权交给 Cloudflare,作为全球边缘流量入口:
- 添加站点:登录 Cloudflare 控制台,输入你的根域名(如
yishulun.com),选择 Free(免费) 计划; - 修改 Nameservers:去你的域名注册商后台(腾讯云、阿里云、Namecheap 等),把默认的 DNS 地址替换为 Cloudflare 分配给你的两条 NS 地址;
- 添加 CNAME 代理记录:
- 进入 DNS -> 记录 (Records) 页面,添加两行
CNAME记录(根域名@和www); - 目标地址填你的 GitHub Pages 地址(例如
username.github.io); - 关键动作:务必把 代理状态 勾选为 已代理(点亮橙色小云朵)。
- 进入 DNS -> 记录 (Records) 页面,添加两行
- 根域名记录 (
@):- 类型 (Type):
CNAME - 主机名称 (Name):
@ - 解析内容 (Content):
rixingyike.github.io(需替换为你自己的 GitHub Pages 地址) - 代理状态 (Proxy status):已代理(点亮橙色小云朵)
- 类型 (Type):
- 二级域名记录 (
www):- 类型 (Type):
CNAME - 主机名称 (Name):
www - 解析内容 (Content):
yishulun.com(需替换为你自己的主域名) - 代理状态 (Proxy status):已代理(点亮橙色小云朵)
- 类型 (Type):
二、配置 SSL/TLS 加密模式
因为 GitHub Pages 源站本身默认就自带 HTTPS,如果 Cloudflare 这边模式配错,会导致著名的 ERR_TOO_MANY_REDIRECTS(无限重定向死循环):
- 设置加密模式:进入 SSL/TLS -> 概述 (Overview),将模式切换为 完全 (Full) 或 完全(严格)(Full Strict);
- 开启 HTTPS 辅助选项:进入 SSL/TLS -> 边缘证书 (Edge Certificates):
- 始终使用 HTTPS (Always Use HTTPS):开启(自动把 http 流量升级为 https);
- TLS 1.3:开启(提升加密握手速度);
- 自动 HTTPS 重写 (Automatic HTTPS Rewrites):开启(自动修正文章内可能残留的 http 图片链接)。
三、动静分离与免刷缓存配置
实现「免刷缓存」的核心就是依靠 Cloudflare 的默认动静分离机制,不要画蛇添足去加针对 HTML 的全局强缓存规则:
1. 动静分离分工
- HTML 网页文件:Cloudflare 默认不会将
.html强行固化在边缘节点,而是穿透回 GitHub Pages 源站。当你在 GitHub 上推了新文章,源站几秒内就生成好新 HTML,读者一刷新就能立刻读到最新页面; - 静态静态资产(CSS、JS、WebP/PNG、字体):这些文件天然带有高复用性,Cloudflare 会自动在全球边缘节点进行高频缓存,首屏秒开。
2. 浏览器缓存与压缩优化
- 浏览器缓存 TTL:进入 缓存 -> 配置 (Caching -> Configuration),把全局 浏览器缓存 TTL 设为
4 小时,让常来逛的读者直接命中本地磁盘缓存; - 传输压缩:进入 速度 -> 优化 (Speed -> Optimization),打开 Brotli 压缩 和 Early Hints (103),进一步缩减网络传输体积。
四、清理历史遗留的 HTML 缓存规则
如果你以前给博客配置过「全站强行缓存一切(Cache Everything)」的规则,务必把它清理掉:
- 打开 缓存 -> Cache Rules 页面;
- 找到名为
cache-all-html或类似的全站缓存规则,将其停用或直接删除; - 进入 缓存 -> 配置,点击执行一次 清除所有内容 (Purge Everything)。
完成以上设置后,你的博客不仅拥有了遍布全球的 Anycast 加速节点与免费 DDoS 防护,而且每次发文都像在本地一样即时可见。下一篇,我们说配置。