📄 Cloudflare Pages
Cloudflare Pages 是一个全栈应用部署平台,能够在 Cloudflare 全球网络上即时部署静态网站和动态应用,无需管理服务器。
产品简介
Cloudflare Pages 提供简单、快速的方式来部署现代 Web 应用。通过 Git 集成或直接上传,你的网站将自动部署到全球 330+ 个边缘节点。
✅ Git 集成
连接 GitHub/GitLab,每次提交自动部署
✅ Pages Functions
运行服务端代码,添加动态功能
✅ 即时回滚
一键回滚到任何历史版本
✅ 免费 SSL
自动配置 HTTPS 证书
核心功能
1. 静态网站托管
支持所有主流前端框架:
- React / Next.js
- Vue / Nuxt
- Svelte / SvelteKit
- Astro(就像本站!)
- 原生 HTML/CSS/JS
2. Pages Functions(边缘函数)
在 Pages 项目中添加服务端逻辑,无需额外配置 Workers。
3. 预览部署
每个分支和 Pull Request 自动生成预览 URL,方便团队协作。
快速开始
方法一:通过 Wrangler CLI 部署
1. 安装 Wrangler
npm install -g wrangler 2. 登录 Cloudflare
wrangler login 3. 创建新项目
# 使用 C3 创建新项目
npm create cloudflare@latest my-pages-app
# 选择框架(例如:Astro、React、Vue)
# 然后按提示完成设置 4. 部署到 Pages
# 构建项目
npm run build
# 部署到 Cloudflare Pages
wrangler pages deploy dist 方法二:通过 Git 集成(推荐)
- 登录 Cloudflare Dashboard
- 进入 "Workers & Pages" → "Create application" → "Pages"
- 连接你的 Git 仓库(GitHub/GitLab)
- 配置构建设置:
- 构建命令:
npm run build - 构建输出目录:
dist或build
- 构建命令:
- 点击 "Save and Deploy"
Pages Functions 示例
创建 API 端点
在项目根目录创建 functions 文件夹,文件路径即为 API 路由:
functions/api/hello.js
// functions/api/hello.js
export async function onRequest(context) {
return new Response(JSON.stringify({
message: 'Hello from Pages Functions!',
timestamp: new Date().toISOString()
}), {
headers: {
'Content-Type': 'application/json',
},
});
} 部署后访问:https://your-site.pages.dev/api/hello
动态路由
functions/api/users/[id].js
// functions/api/users/[id].js
export async function onRequest(context) {
const userId = context.params.id;
return new Response(JSON.stringify({
userId: userId,
name: `User ${userId}`
}), {
headers: { 'Content-Type': 'application/json' }
});
} 访问环境变量和 KV
functions/api/data.js
// functions/api/data.js
export async function onRequest(context) {
// 访问环境变量
const apiKey = context.env.API_KEY;
// 访问 KV 存储
const value = await context.env.MY_KV.get('key');
return new Response(JSON.stringify({ value }), {
headers: { 'Content-Type': 'application/json' }
});
} 常用 CLI 命令
Wrangler Pages 命令
# 部署静态资源
wrangler pages deploy {build-output-directory}
# 指定项目名称
wrangler pages deploy dist --project-name=my-site
# 指定分支(默认为 production)
wrangler pages deploy dist --branch=main
# 查看所有 Pages 项目
wrangler pages project list
# 创建新 Pages 项目
wrangler pages project create my-project
# 删除 Pages 项目
wrangler pages project delete my-project
# 查看部署历史
wrangler pages deployment list
# 本地开发(模拟 Pages 环境)
wrangler pages dev dist 配置自定义域名
- 在 Dashboard 中打开你的 Pages 项目
- 进入 "Custom domains"
- 点击 "Set up a custom domain"
- 输入你的域名(例如:
www.example.com) - 按照提示添加 CNAME 记录到你的 DNS
环境变量配置
通过 Dashboard 配置
在 Pages 项目设置中 → "Settings" → "Environment variables"
通过 wrangler.toml 配置
wrangler.toml
name = "my-pages-app"
[env.production.vars]
API_ENDPOINT = "https://api.example.com"
ENABLE_ANALYTICS = "true"
[env.preview.vars]
API_ENDPOINT = "https://staging-api.example.com"
ENABLE_ANALYTICS = "false" 与其他服务集成
连接 D1 数据库
// functions/api/posts.js
export async function onRequest(context) {
const { results } = await context.env.DB.prepare(
'SELECT * FROM posts ORDER BY created_at DESC LIMIT 10'
).all();
return Response.json(results);
} 连接 R2 存储
// functions/api/upload.js
export async function onRequestPost(context) {
const formData = await context.request.formData();
const file = formData.get('file');
// 上传到 R2
await context.env.BUCKET.put(file.name, file.stream());
return Response.json({ success: true });
} 性能优化技巧
- 启用资源缓存:配置
_headers文件设置缓存策略 - 图片优化:使用 Cloudflare Images 自动优化图片
- 代码分割:使用现代打包工具进行代码分割
- 预渲染:对于动态内容,考虑使用 SSG(静态生成)
限制与定价
| 项目 | 免费计划 | 付费计划 |
|---|---|---|
| 构建次数 | 500 次/月 | 5,000 次/月起 |
| 带宽 | 无限制 | 无限制 |
| 请求数 | 无限制 | 无限制 |
| 项目数量 | 100 个 | 无限制 |