分享改造后的博客发布流程和访问链路

Published: 2024-09-15

Tags: 博客配置

本文总阅读量

经过陆陆续续几个月的调整改造,博客发布和访问链路都有不同程度的优化,分享和记录如下

博客发布流程

改造后,在 Markdown 编辑器内写笔记,运行一个脚本,它会做以下事项(感谢 DeepSeek Chat,我描述了需求,脚本是它生成的)

  • 将文章内的图片收集到一个文件夹并重命名图片
  • 调用 TinyJPG 的 API 进行压缩
  • 将图片文件夹放置到本地的图片库
  • 使用 Rclone 同步到 S3 兼容协议的存储桶,完成图片的发布
  • 将最终的图片 URL 回写到新的 Markdown 文件

再手动将 Markdown 文件提交到 Github 的私有仓库,CI/CD 会自动生成最终的静态页面,对于又拍云,是通过 Buddy CI/CD 使用又拍云自己的 upx 工具提交的,对于 Cloudflare Pages,它通过配置的命令自动构建发布

对我来说,改造后的发布流程大大简化了流程,自动化程度较高,符合改造预期

用户访问分流

改造后的博客架构更加灵活,不依赖特定的厂商,无论是博客静态页面还是图床,使用 DNS 分流能够快速切换服务后端,同时博客图床只要是兼容 S3 的存储即可,静态页面和存储,国内外有大把的服务,其免费额度足够一个小小的个人博客使用

并不总是完美无缺:使用分流后,引入了一个新的问题,即 Cloudflare Pages 会自动将 .html 后缀永久重定向到没有后缀的链接,就导致海外搜索引擎索引的链接都不带 .html 后缀了,同时 DNS 分流也不能百分百准确的判断国内外 IP 进行分流,外加上微软 Bing 搜索引擎有国内和全球,最大的不确定因素也可能来自访问者,比如它在国内使用谷歌搜索(规则),访问的链接不带后缀,打开时 DNSPod 判断用户在国内,那么会访问又拍云的服务,我之前没有配置 CDN 的边缘规则,就会 404 报错

解决问题的办法就是又拍云的 CDN 加规则,让没有后缀的请求重定向到 .html 链接

$WHEN($MATCH($_URI,'^([^.]+)([^/])$'))$REDIRECT(https://blog.yasking.org$_URI'.html',302)

无形中又添加了一个限制,即静态博客的存储或 CDN 现在需要同时支持带后缀和不带后缀两种路径的访问 :-(

虽然有些战术失误,但战略上是成功的...

相关笔记