Cloudflare Pages 的免费政策

以下摘自 Cloudflare Pages 首页Cloudflare Pages 文档 - Limits(里面有更详细的)。

  • 同一时间只能部署一个 Pages
  • 每月 500 次提交
  • 无限站点
  • 无限请求
  • 无限带宽
  • 每个项目最多 10 个自定义域名
  • 每个站点最多 20000 个文件
  • 单个文件最大 25 MB

总之对于个人博客来说是绰绰有余了。

实测每次部署大概是 2~3 分钟,今天发现出了 Fast builds 功能,可以在设置中启用,在 2022-04-01 后将自动启用,新版的快速部署大约就 10 秒钟。

特点

相比 GitHub Pages,可以直接从 GitHub 的私有仓库部署,GitHub Pages 却不能。

支持 Hugo、Hexo 等自动部署。

CDN 大陆效果一般,直连大约至少 几百毫秒 一千毫秒。

可以配合 Workers 等其他免费或付费功能完成多种类的 URL 转发。

另外 Cloudflare 的 DNS 支持裸域的 CNAME 与 MX 共存,自动搞定,这太方便了,之前 CloudXNS 至少还要自己手动操作一个其自定义的 LINK 类型及另一个域名作为跳板,Cloudflare 完全自动处理。我自己的的邮件用的也是裸域,在 Google Workspace,完全没有影响,收发件正常。

部署

十分简单,现在也都有简体中文了,就照着提示给予 GitHub 仓库权限就可以了。

默认就自动响应 Git 的新提交来部署。

一种是直接将生成好的静态文件作为部署内容,一种是 Cloudflare 自动用 Hugo 等支持的系统做自动化部署。

没试过第二种,我选择前者,主要是保证和本地的一致性。

重定向

将带 www 的或不带 www 的也设定为自定义域名。

部署妥善后,可在「页面规则」中设定 www 与不带 www 的互相跳转,例如:

匹配 URL 转发 URL 重定向
www.dvel.me/* https://dvel.me/$1 301

会自动将带 www 的地址 301 重定向到裸域,免费用户可以使用最多三个规则。

其他重定向可参考:利用 Cloudflare Workers 进行批量 301 重定向

SRI

今天发现了 SRI(完整性检查)的问题,浏览器提示「Failed to find a valid digest in the ‘integrity’ attribute for resource …」,导致语法高亮失效了。

搜索后发现是因为 Hugo 的「minify」与 Cloudflare 的「Auto Minify」发生了冲突,Cloudflare 在再次压缩后导致文件哈希值改变,校验失败。

解决办法是要么关闭 SRI,要么取消 Cloudflare 的「Auto Minify」。

Cloudflare 关闭的方法:速度 - 优化 - Auto Minify。

在 Hugo 中关闭的方法:

params:
  assets:
    disableFingerprinting: true

/cdn-cgi/

因为 /cdn-cgi/ endpoint 这个问题,建议在 robots.txt 禁止抓取这个目录:

Disallow: /cdn-cgi/

不然 Google Search Console 中会有几百个此目录下的「已抓取-尚未编入索引」。。。