我制作了一个购物网站,利用 CF 的 pages 制作静态网站,将 CF 的 D1.R2.KV 都免费利用,这个网站现在已经运行了,正在补充数据内容,只是也耗费了我所有积分。这个软件是很好用也很方便,但是积分太少了不够用。完成这个网站我也用光了所有积分。
2 个赞
如果有过程截图之类的就更好了
有成品,没有截图,我可以将安装说明发送
三易智能科技平台 · 智能锁商城
基于 Cloudflare Pages + D1 + KV + R2 的智能锁在线销售系统,完全可以在免费额度内运行。
技术栈
- 前端:原生 HTML + CSS + JS(移动端优先,零依赖)
- 后端:Cloudflare Pages Functions(本质是 Worker)
- 数据库:Cloudflare D1(SQLite)
- 缓存/会话:Cloudflare KV
- 图片存储:Cloudflare R2
- 备份通知:Telegram Bot + Worker Cron
项目结构
sanyi-scaffold/
├── public/ # 前端静态文件
│ ├── index.html # 首页
│ ├── product.html # 商品详情
│ ├── cart.html # 购物车
│ ├── checkout.html # 订单确认/支付
│ ├── orders.html # 订单列表
│ ├── list.html # 商品列表/搜索
│ ├── adapter.html # 智能锁适配查询
│ ├── css/
│ │ └── style.css # 移动端样式
│ └── js/
│ └── app.js # 前端工具函数
├── functions/ # Pages Functions(后端API)
│ ├── _middleware.js # 全局中间件(CORS/限流/统计)
│ └── api/
│ ├── health.js # 健康检查
│ ├── home.js # 首页数据
│ ├── categories.js # 分类列表
│ ├── products/
│ │ ├── index.js # 商品列表
│ │ └── [id].js # 商品详情
│ ├── cart.js # 购物车
│ └── orders/
│ ├── index.js # 创建订单/订单列表
│ ├── [id].js # 订单详情
│ └── [id]/pay.js # 提交付款凭证
├── migrations/
│ └── 0001_init.sql # D1 数据库初始化脚本
├── backup-worker/ # 独立的备份 Worker
│ ├── wrangler.toml
│ └── src/
│ └── index.js # 晨报 + 数据备份
└── wrangler.toml # Pages 项目配置
快速部署
前置准备
-
注册 Cloudflare 账号:https://dash.cloudflare.com/signup
-
绑定信用卡(验证身份,免费额度够用,不扣费)
-
安装 Node.js 18+:https://nodejs.org
-
安装 Wrangler CLI:
npm install -g wrangler -
登录 Cloudflare:
wrangler login
第 1 步:创建 D1 数据库
# 创建数据库
wrangler d1 create sanyi-db
把输出的 database_id 填到 wrangler.toml 里。
第 2 步:创建 KV 命名空间
wrangler kv:namespace create "sanyi-sessions"
wrangler kv:namespace create "sanyi-cache"
wrangler kv:namespace create "sanyi-config"
wrangler kv:namespace create "sanyi-adapter"
把每个的 id 填到 wrangler.toml 里。
第 3 步:创建 R2 存储桶
wrangler r2 bucket create sanyi-images
第 4 步:初始化数据库表
# 执行迁移
wrangler d1 migrations apply sanyi-db --remote --config wrangler.toml
# 或者直接执行 SQL
wrangler d1 execute sanyi-db --remote --file=migrations/0001_init.sql
第 5 步:部署 Pages 项目
# 在项目根目录执行
wrangler pages deploy public --project-name=sanyi-smart-lock
首次部署会自动创建 Pages 项目,部署完成后会给你一个 xxx.pages.dev 的域名。
第 6 步:配置 Pages 环境变量
在 Cloudflare Dashboard → Pages → 你的项目 → Settings → Variables & secrets:
普通变量:
ENV=productionSITE_NAME=三易智能科技平台FREE_SHIPPING_AMOUNT=999ORDER_AUTO_CANCEL_MINUTES=30TG_ADMIN_ID= 你的 Telegram 用户 ID
Secrets(敏感变量):
TG_BOT_TOKEN= 你的 Telegram Bot TokenJWT_SECRET= 随便一串随机字符串(后面会用到)
第 7 步:绑定 D1、KV、R2 到 Pages
在 Pages 项目 Settings → Functions 里:
- D1 database bindings:
DB→ 选择 sanyi-db - KV namespace bindings:
SESSIONS→ sanyi-sessionsCACHE→ sanyi-cacheCONFIG→ sanyi-configADAPTER→ sanyi-adapter
- R2 bucket bindings:
IMAGES→ sanyi-images
第 8 步(可选):部署备份 Worker
cd backup-worker
# 修改 wrangler.toml 里的 database_id 和 TG 配置
wrangler deploy
本地开发
# 启动本地开发服务器
wrangler pages dev public --d1=sanyi-db --kv=CACHE --kv=SESSIONS --kv=CONFIG --kv=ADAPTER
核心功能清单
已实现
移动端首页(Banner、分类、热销、新品)
商品列表(分类、搜索、排序、分页)
商品详情(规格选择、加入购物车、立即购买)
购物车(本地存储、增减数量、删除)
订单确认(地址填写、金额计算、安装服务)
提交订单(扣库存、生成订单号)
个人收款码支付(上传凭证、待确认状态)
订单列表(状态筛选)
智能锁适配查询工具
全局限流(IP 级,每分钟 60 次)
用量统计(每日请求数)
KV 缓存(商品列表、详情、首页数据)
Telegram 新订单通知
Telegram 每日销售晨报
Telegram 每日数据备份(CSV)
后续可扩展
微信/支付宝官方支付(需要营业执照)
用户注册登录(微信 OAuth)
管理后台页面
图片上传到 R2
物流轨迹查询
分销推广系统
评价晒图系统
会员积分系统
免费额度使用情况
| 资源 | 免费额度 | 预估日用量 | 占用率 |
|---|---|---|---|
| Worker 请求 | 10万/天 | ~2,000 | 2% |
| D1 行读取 | 500万/天 | ~50,000 | 1% |
| D1 行写入 | 10万/天 | ~500 | 0.5% |
| KV 写入 | 1,000/天 | ~100 | 10% |
| R2 存储 | 10GB/月 | ~100MB | 1% |
| Pages 托管 | 无限 | 全站 | 0% |
| Cron Trigger | 5个/账户 | 2个 | 40% |
完全在免费额度内,零成本运行。
默认管理员
- 用户名:
admin - 密码:
admin123
生产环境请立即修改密码!
Telegram Bot 配置
- 在 Telegram 找 @BotFatherBotFatherBotFatherBotFatherBotFatherBotFatherBotFatherBotFather 创建 Bot,获取 To@u@userinfoboterinfoboten
- 找 @userinfobot 获取自己的 User ID
- 把 Token 和 User ID 填到环境变量里
1 个赞
默认管理员的信息不要外泄