熟悉我的人应该知道我的blog最初是直接一股脑扔在GitHub repo里的——包括那一堆图片。这也就意味着本地的git cache里也有一堆二进制的图片文件,而用git去track、store非文本文件可不是好文明,所以我很早就想把图片从git cache里摘出去了。如果继续坚守GitHub Pages部署blog还不想用git track 图片,那么就只能求助于图床。
我初高中用过诸如imgur,smms等的图床服务,不过我对它们的稳定性一直保持质疑。前几天视奸oldking博客的时候发现CloudFlare居然提供免费的R2存储服务 ↗,不如趁此机会干脆玩一把~
虽然单用一个R2存储不花钱,但是我思索之后还是买了个CF的域名。这么做主要是基于以下几点考虑:
- blog直接部署到CloudFlare Worker上之后,即使在blog里偷偷放一些
私密文章也不会被别人轻易发现(放在GitHub repo里那可是众目睽睽了) - 我的旧域名快到期了,而GoDaddy的SSL证书续费并不便宜
- 图片不再需要放在GitHub repo里,自然也不需要git追踪了
- CloudFlare Worker能干的事真的很多(
多说无益,来看看我都用CF干了什么吧~
Haskell Book#
《Learn You a Haskell for Great Good!》是本很不错的Haskell入门教材,不过网上流传的简中翻译都是基于GitBook的且有很重的繁中语法习惯。之前有点想学Haskell,就把这本书用mkdocs material重新排了下版,然后只需在GitHub Workflow里写这么一个工作流:
name: Deploy MkDocs to Cloudflare Pages
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Build MkDocs site
run: mkdocs build
- name: Upload to Cloudflare Pages
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CF_API_TOKEN }}
accountId: ${{ secrets.CF_ACCOUNT_ID }}
command: pages deploy site --project-name=learnyouahaskell-zhyaml就能在CloudFlare Page上获得一个美观的在线电子书 ↗了~
Webhook Site#
maple3142佬写过一个好用的工具 ↗,可以在CF Worker上跑一个类似webhook.site ↗的东西,一定程度上可以代替公网服务器用来打CTF,非常方便。
图床#
CF每月提供10GB的免费R2对象存储空间额度,可以作为一个简易的图床来使用。R2的API是S3兼容的,所以在CF面板里开好之后去配置一下API,就可以和PicList-Core ↗配合,通过PicList内置的AWS S3 uploader上传图片到存储桶。
个人导航页#
直接搓个静态页面放在根域名下面 ↗就行。
我的一些DNS设置:

以及Workers/Pages:

上面这两张图片就是托管在R2上的,诶嘿~