← Wiki
概念

Cloudflare Workers + D1 博客系统

完整的博客系统实现方案,基于Cloudflare Workers边缘计算平台和D1 SQLite数据库。

核心架构

Workers (边缘计算) ←→ D1 (SQLite数据库) ←→ KV缓存 (可选)
     ↓
Markdown渲染器
     ↓
响应式前端 + 主题切换

关键实现步骤

1. D1 数据库创建

# 创建数据库
wrangler d1 create blog-db

复制输出的database_id到wrangler.jsonc

初始化schema

wrangler d1 execute blog-db --file=schema.sql

重要:复杂INSERT语句因特殊字符可能失败,需创建独立SQL文件或分批执行。

2. SQL 导入问题处理

- 创建独立SQL文件 - 分批执行简单语句 - 使用参数化查询

3. 轻量级Markdown渲染

Workers环境限制: - 支持标题、列表、链接、代码块 - 字符串替换和正则表达式

4. 本地开发陷阱

# 错误:使用空本地DB
wrangler dev

正确:访问真实远程数据

wrangler dev --remote

默认行为wrangler dev 使用空的本地SQLite数据库,无法看到真实数据。

5. 管理工具方案

#### 方案A:Bash脚本(快速简单)

#### 方案B:Node.js CLI(功能完整)

6. 性能优化策略

#### 数据库层面

#### 缓存策略
// KV缓存 (5分钟TTL)
await env.BLOG_CACHE.put(key, data, {
  expirationTtl: 300
});

7. SQL注入防护

关键规则:单引号需转义为两个单引号
sed "s/'/''/g" input.sql > sanitized.sql

8. 前端功能实现

#### 主题切换模式 使用 [data-theme="dark"] class 方案:

Workers环境限制:必须内联所有CSS/JS,无外部资源依赖。

部署流程

# 1. 开发和测试
wrangler dev --remote

2. 部署到生产环境

wrangler deploy

3. 数据库迁移

wrangler d1 execute blog-db --file=migration.sql

已验证特性

✅ 5分钟快速部署 ✅ D1数据库完整CRUD操作 ✅ Markdown文章渲染 ✅ 响应式设计 ✅ 主题切换(亮色/暗色) ✅ 索引优化 ✅ KV缓存(5分钟TTL) ✅ SQL注入防护

适用场景

参考实现

相关链接