本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:
- 我的帖子已经打上 #开源推广 标签: 是
- 我的开源项目完整开源,无未开源部分: 是
- 我的开源项目已链接认可 LINUX DO 社区: 是
- 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是
- 以上选择我承诺是永久有效的,接受社区和佬友监督: 是
以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出
前言
作为技术员的我们,肯定都有过羡慕别人博客的经历。但如果我们想自己搭建一个呢? 就两个问题 a.不知道怎么写 我之前也尝试过自己编写博客系统,但是想要做好一个可用的实在是太难了。一个现实的项目就是 https://blog.qinyining.cn。
当然,相关的开源博客架构也是有的,但这就出现了第二个问题:
b.没有服务器 现在想做一个网站,你至少需要服务器和域名,服务器的价格对很多人来说是一个巨大的开销,而域名也是一个门槛。更何况服务器还有不稳定的风险…
所以,为什么就不能有一个项目,任何人使用它都可以没有任何成本的在几分钟之内上线博客呢?
于是我做了: Do-Blog
这是一个完全无服务器、边缘原生的博客平台,基于 Cloudflare Workers + D1 + KV 构建
系统架构
+--------------------+
用户请求 ------->| Cloudflare 边缘 |
| (Workers) |
+--------+-----------+
|
+--------------+--------------+
| | |
+-----v----+ +-----v----+ +------v-----+
| Hono | | D1 | | Workers |
| 路由器 | | (SQLite) | | KV |
| + SSR | | | | (缓存 + |
| 引擎 | | 文章 | | 计数器) |
+----------+ | 评论 | +------------+
| 设置 |
+----------+
技术架构分层
| 层级 | 技术选型 | 职责 |
|---|---|---|
| 运行时 | Cloudflare Workers | 边缘计算、请求处理、服务端渲染 |
| 框架 | Hono v4 | 路由、中间件、CORS、请求上下文 |
| 数据库 | D1 (SQLite) | 全部内容的持久化存储 |
| 缓存 | Workers KV | 直读缓存、访问计数器、配置项缓存 |
| 认证 | JWT + PBKDF2-SHA256 | 无状态管理员身份认证 |
| 渲染 | 服务端 TypeScript 模板 | 公共页面零 JS、SEO 友好 |
| 管理后台 | 单文件 SPA (Hash 路由) | 客户端管理面板、无需构建步骤 |
功能
实现了一个博客系统基本完整的功能。
内容管理
- 文章系统 – Markdown 撰写 + 实时预览,自动 slug 生成,封面图片,摘要提取,阅读时间估算
- 分类管理 – 多级树形结构,支持无限嵌套,slug 路由,自定义排序
- 标签管理 – 扁平标签体系,自动统计关联文章数量
- 评论系统 – 嵌套回复,审核队列(通过/待审/拒绝),IP 去重防刷
- 文章版本 – 完整修订历史,版本编号 + 变更说明
- 关于页面 – 可配置的 Markdown 内容,渲染为独立页面
Markdown 编辑器
- 18 个工具栏按钮:加粗、斜体、删除线、H1-H3、无序/有序/任务列表、引用、行内代码、代码块、链接、图片、表格、分割线
- 快捷键:
Ctrl+B加粗、Ctrl+I斜体、Ctrl+K插入链接、Ctrl+S保存、Tab缩进 - 实时分栏预览(200ms 防抖)
- 分类/标签选择器(Chip 式 UI,异步从 API 加载)
- 标题自动生成 slug(支持中日韩字符音译)
- 状态栏显示字数/字符数/行数统计
- 已有文章每 30 秒自动保存
性能优化
- KV 直写缓存 – 设置项、文章列表、单篇文章均缓存于 KV,可配置 TTL
- 缓存自动失效 – 内容变更时通过
CacheService自动清除对应缓存 - 定时计数刷写 – 阅读量先写入 KV 缓冲,每 5 分钟通过
scheduled()批量回写 D1 - 零客户端 JS – 公共页面为纯 SSR HTML/CSS,无 JavaScript 负载(评论表单除外)
国际化 (i18n)
- 中英双语支持(简体中文 / English)
- 前台页面:语言检测链路 –
?lang查询参数 >blog_langCookie >Accept-Language请求头 > 默认中文
设计
- 几何创意设计风格,双色调色板(主色 + 强调色,可配置)
- 亮色/暗色主题,支持
prefers-color-scheme自动检测 + 手动切换 - 响应式布局,CSS Grid / Flexbox,移动端优先断点
- 字体方案:Space Grotesk(标题)+ Inter(正文)+ JetBrains Mono(代码)
UI根据我自己的审美设计

安全机制
- PBKDF2-SHA256 密码哈希(100,000 次迭代),通过 Web Crypto API 实现
- JWT Bearer Token 无状态认证,可配置过期时间
- API 路由 CORS 策略
- 安全响应头:
X-Content-Type-Options、X-Frame-Options、Referrer-Policy - 所有用户生成内容均做 HTML 实体转义(防 XSS)
- 评论点赞使用 IP 哈希去重
- 管理后台路由添加
noindex, nofollow元标签
部署
可以参考MD 文件
https://github.com/Hello-Application-XH/Do-Blog UI 演示:https://cf-blog.b6q775tzkq.workers.dev/ admin:admin/12345678
感谢ChatGPT/qoder的帮助
评论
暂无评论,来分享你的想法吧!