├── 域名 & 网络层
│ ├── DNS 管理(免费,全球最快之一)
│ └── CDN(静态资源加速,免费)
│
├── 部署 & 运行
│ ├── Pages(前端静态托管,类似 Vercel)
│ └── Workers(后端逻辑,Serverless 函数)
│
├── 存储
│ ├── R2(对象存储,S3 兼容,无出流量费)
│ ├── KV(键值存储,适合配置/缓存)
│ └── D1(SQLite 数据库,Serverless)
│
└── AI 专属
├── AI Gateway(AI API 代理,限速/缓存/监控)
├── Workers AI(边缘运行 AI 模型)
└── Vectorize(向量数据库,RAG 必备)
速度快:全球 300+ 节点,解析延迟极低 免费:完全免费,无限流量 自动开启 CDN 保护:一键开启橙色云朵,流量经过 Cloudflare 节点,隐藏源站 IP 后续产品打通:用了 Cloudflare DNS,Pages/Workers/R2 的域名绑定都更方便
在 Cloudflare 注册账号 点击"添加站点",输入你的域名 Cloudflare 会扫描现有 DNS 记录并导入 到你的域名注册商(比如 Namecheap、GoDaddy)把 Nameserver 改成 Cloudflare 提供的两个地址 等待生效(通常几分钟到 24 小时)
# 方法一:连接 GitHub(推荐)
# 在 Cloudflare Dashboard → Pages → 创建项目 → 连接 GitHub 仓库
# 选择构建命令和输出目录,完成。
# 方法二:用 Wrangler CLI(本地工具)
npm install -g wrangler
wrangler pages deploy ./dist
API 接口(对接 AI 服务、数据库查询) 请求转发、鉴权中间件 定时任务(Cron Triggers) Webhook 处理
// src/index.js
export default {
async fetch(request) {
const url = new URL(request.url);
if (url.pathname === '/api/hello') {
return Response.json({ message: 'Hello from Cloudflare Workers!' });
}
return new Response('Not Found', { status: 404 });
}
};
# wrangler.toml
name = "my-worker"
main = "src/index.js"
compatibility_date = "2024-01-01"
# 部署
wrangler deploy
小型 Web 应用的数据存储 用户数据、配置、内容管理 原型开发和 MVP 阶段
# 创建数据库
wrangler d1 create my-database
# 运行 SQL 迁移
wrangler d1 execute my-database --file ./schema.sql
-- schema.sql
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
email TEXT UNIQUE NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
// 在 Worker 中查询
export default {
async fetch(request, env) {
const { results } = await env.DB.prepare(
'SELECT * FROM users WHERE email = ?'
).bind('[email protected]').all();
return Response.json(results);
}
};
用户 Session Token 应用配置(Feature Flags) API 响应缓存 限流计数器
需要强一致性的数据(KV 是最终一致性) 频繁更新的数据(写入传播有延迟) 复杂查询
// 读写 KV
export default {
async fetch(request, env) {
// 写入
await env.MY_KV.put('user:123:session', 'token-xyz', {
expirationTtl: 3600 // 1小时后过期
});
// 读取
const session = await env.MY_KV.get('user:123:session');
return new Response(session);
}
};
花了多少钱? 各家 API 费用不透明,很难汇总 哪个 Prompt 效果好? 没有统一日志,难以对比 相同请求重复付费:同样的问题用户问了 100 次,你付了 100 次 API 费 限流保护:防止某些用户滥用你的应用
// 原来直接调用 OpenAI
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
// baseURL 默认是 https://api.openai.com/v1
});
// 改为通过 AI Gateway 代理
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: 'https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_name}/openai',
});
// 调用方式完全一样
const response = await openai.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: 'Hello!' }],
});
每次请求的 Token 用量和费用 响应时间和成功率 缓存命中情况
// 开启语义缓存——相似的问题复用之前的答案
const response = await fetch(gatewayUrl, {
method: 'POST',
headers: {
'cf-aig-cache-ttl': '3600', // 缓存 1 小时
},
body: JSON.stringify({ messages: [...] }),
});
export default {
async fetch(request, env) {
// 文本生成
const response = await env.AI.run('@cf/meta/llama-3-8b-instruct', {
messages: [
{ role: 'user', content: '用一句话解释什么是 Cloudflare Workers' }
],
});
return Response.json(response);
}
};
// 生成文本嵌入(用于 RAG)
const embeddings = await env.AI.run('@cf/baai/bge-base-en-v1.5', {
text: ['这是要转换成向量的文本'],
});
// embeddings.data[0] 就是向量数组
// 插入向量
await env.VECTORIZE.insert([
{
id: 'doc-001',
values: [0.12, 0.55, 0.88, ...], // 嵌入模型输出的向量
metadata: { text: '文档原文内容', source: 'article-1.pdf' }
}
]);
// 相似度搜索
const results = await env.VECTORIZE.query(queryVector, {
topK: 5, // 返回最相近的 5 条
returnMetadata: true,
});
用户浏览器
│
▼
Cloudflare Pages(前端,React/Next.js)
│
▼
Cloudflare Workers(API 层,处理请求逻辑)
│
├──▶ AI Gateway ──▶ OpenAI / Claude(外部 AI 服务)
│
├──▶ Workers AI(边缘运行开源模型)
│
├──▶ Vectorize(语义搜索,RAG)
│
├──▶ D1(用户数据、内容存储)
│
├──▶ KV(Session、缓存)
│
└──▶ R2(图片、文件存储)
初期流量下:接近 $0(全靠免费额度) 中等规模(日活几百人):约 $5-20/月
npm install -g wrangler
wrangler login
npm create cloudflare@latest my-first-worker
cd my-first-worker
wrangler dev # 本地开发
wrangler deploy # 上线
# 创建 D1 数据库
wrangler d1 create my-db
# 创建 R2 Bucket
wrangler r2 bucket create my-files
# 创建 KV Namespace
wrangler kv namespace create my-cache
|