惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
量子位
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hackread – Cybersecurity News, Data Breaches, AI and More
云风的 BLOG
云风的 BLOG
D
DataBreaches.Net
B
Blog
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
H
Help Net Security
The Cloudflare Blog
U
Unit 42

東风

豆包图片下载器:一键保存豆包对话里的图片 从vps到边缘函数-我都经历了什么? 新主题设计理念 魔法玩具 alwaysdata 我给博客加了AI审核评论功能 我给博客加了AI审核评论功能 把 RSS 监控搬到了 EdgeOne 上,这次带了个前端 评论等级系统——从庶民到太师的九品十八阶 评论等级系统——从庶民到太师的九品十八阶 给 D1 数据库加了个只读副本,评论 API 快了 30% 给 D1 数据库加了个只读副本,评论 API 快了 30% 我退订了 Kimi 和 MiniMax 的 Coding Plan 我退订了 Kimi 和 MiniMax 的 Coding Plan 写了一个 RSS 博客订阅自动监控工具 写了一个 RSS 博客订阅自动监控工具 飞书同步机器人 — 部署教程 飞书同步机器人 — 部署教程 给博客评论加个飞书通知 给博客评论加个飞书通知 飞书发布测试 飞书发布测试 1700公里的旅程 1700公里的旅程 1700公里的旅程 Hello World - 欢迎来到我的博客 Hello World - 欢迎来到我的博客
博客后台和域名
東风 · 2026-07-12 · via 東风

博客后台和域名

2026年7月12日 7 分钟阅读 0 次阅读

从静态博客到全功能后台,评论、AI 审核、图片水印、定时发布、数据备份,全部跑在 Cloudflare 免费额度上。

距上篇文章已经过去一个多月了,本来想月更个两三篇文章的。奈何回家就想躺着刷手机。

域名这事

有个事得说一下。当初搞博客的时候就想找个短域名,eastwind.com 这种早就被注册了,east 之类的变体也全没了。没办法才用了 easte.cc,easte 是 east 的变体,能用但不好记,每次敲都怕别人打错。 5 月底刷域名的时候发现 ewd.cc 到期了,原主没续。这名字多好——三个字母,east wind 的缩写,easte.cc 的正统接班人。等了一个多月,注册局终于放出来了。现在 ewd.cc 就是我的了,三个字母,够短够好记。

为什么要自己搞后台

博客最早就是一堆静态 Markdown 文件,推到 GitHub,Actions 自动构建部署。简单粗暴,但用久了总觉得非常的割裂,文档在Github,图片在R2,评论在D1,管理起来非常的麻烦。算了干脆做个后台,把评论、配置、内容管理全收进来放在R2上。再多点MD文档也无所谓。

2026-07-11_234237_374

选型

框架用 SvelteKit。原因不复杂:Cloudflare 有官方适配器,部署几乎零配置。Svelte 5 的响应式写起来比 React 省事不少,不用满屏 useState。

数据库继续选 Cloudflare D1。直接把原来的评论架构迁移过来就行。

文件存储用 R2。图片、文章、备份全扔里面。R2 不收出口流量费,比 S3 省钱。

AI 能力直接接 Cloudflare Workers AI,用来做评论审核、文章润色、标签生成。它每天 有10,000 neurons,不同模型消耗的 neurons 不一样,比如:

  • Llama 3.1 8B:约 70 neurons/千token
  • 通义千问 30B:消耗更多
  • Whisper(语音识别):约 800 neurons/分钟

实际能调多少次取决于你用的模型和输入输出长度。对于博客评论审核这种场景,一天几百次请求问题不大,

这些服务全部跑在 Cloudflare 免费额度上,一个月零成本。

整体架构

系统分三层。

管理界面是 SvelteKit 渲染的,部署在 Workers 上。页面包括仪表盘、评论管理、文章编辑、图片管理、系统设置、定时任务、审计日志这些。

API 层所有请求走同一个入口,靠 event 字段区分操作类型。比如 COMMENT_SUBMIT 是发评论,CONTENT_SAVE 是保存文章,AI_POLISH 是 AI 润色。这种设计不算时髦,但好处是认证、CORS、日志、限流这些公共逻辑只写一遍。

数据层,D1 存评论、配置、会话、定时任务这些结构化数据,R2 存文章和图片文件。

内容管理

文章全部以 Markdown 格式存在 R2 里。

编辑器支持 Markdown 语法,有快捷键,能拖拽上传图片。保存的时候内容写到 R2,同时触发前端仓库的 GitHub Actions 重新构建。手机上也能写,体验比命令行强太多。

2026-07-12_020755_529

图片上传走 R2。上传时可选自动转 WebP 和加水印。水印功能用 Photon 这个 WASM 图片处理库实现,支持自定义水印图片、位置、大小。 还有个全文搜索功能。输入关键词,后端遍历 R2 里的 Markdown 文件,返回匹配的标题和摘要。文件不多的时候够用了,比搭 Elasticsearch 轻量太多。

AI 功能

接了 Cloudflare Workers AI,做了几个能力。

文章润色:给 AI 一段文字,让它帮忙改通顺。流式输出,前端能实时看到生成过程,体验比等一个完整响应好很多。

元数据补充:AI 读取文章内容,自动补全 frontmatter 里的标题、日期、标签这些字段。不用手动一个个填。

模型可以切换,默认用通义千问 30B,也支持 Llama、DeepSeek 这些。每个功能用到的模型可以不一样。

定时发布

写完文章不一定马上发。可以设个时间,后台每 15 分钟跑一次定时任务,检查有没有到期的文章。到了就自动触发前端部署。

Cloudflare 的 cron 最低频率就是 15 分钟,对博客来说够了。定时任务还做了并发锁,防止两个实例同时处理同一篇文章。

安全

后台登录用密码,登录后生成一个 UUID token 存到数据库,同时写到 httpOnly cookie 里。7 天过期。

每个管理操作都要带 CSRF token,防止跨站请求伪造。token 绑定到当前会话,从专门的接口获取。

敏感操作有审计日志,谁在什么时候删了什么评论、改了什么配置,都有记录。出问题能查。

API 请求有限流。同一 IP 在一定时间内的请求数超过阈值就拒绝。用的是 D1 做分布式计数,跨实例生效。

数据备份

每天凌晨 3 点自动备份 D1 数据库到 R2。把评论、配置、访问计数、会话、定时任务、审计日志这些表导出成 JSON 文件,打包存到 R2 的 backups 目录下。保留 30 天,超期自动清理。

备份是 best-effort 的,失败了不影响正常运行,只是记一条警告日志。

系统监控

后台有个健康检查页面,检查 D1、R2、AI、配置、部署钩子这些服务的状态。每个服务返回健康、降级或不可用。还有系统统计,看评论数、文章数、图片存储量这些数据。

最后

整个后台从开始写到现在,断断续续改了好几轮。核心功能大概一周搞定,后面都是修修补补和加新功能。