把情侣纪念小站搬到 EdgeOne:不用 PHP 和 MySQL 的版本

番星

LikeGirl 是个情侣纪念小站:显示在一起多少天,能写文章、传照片、列共同愿望,访客还能留祝福。

原版是 PHP + MySQL 的,功能完整但部署门槛不低——得有个虚拟主机、装 PHP、配数据库。我把它适配到了 EdgeOne。

地址:likegirl.xingbox.me

架构换成了什么

1
2
3
4
浏览器
├─ 静态页面 ──────────▶ EdgeOne Pages CDN
├─ 数据/留言/后台 ────▶ Node.js 云函数
└─ 图片上传与读取 ────▶ EdgeOne Pages Blob

三层分别对应三个能力:CDN 存静态资源,云函数处理后端逻辑,Blob 存图片和持久化数据。不需要 PHP 运行时,不需要数据库服务。

好处是部署变成了一键:点 Deploy 按钮,仓库拉过去,装依赖、构建、发布全套自动完成。

功能保留了哪些

  • 实时显示相恋天数和时间
  • 文章、恋爱相册、共同愿望清单
  • 访客祝福留言,同一 IP 60 秒限流
  • 管理后台维护站点信息、文章、相册、清单和留言
  • 上传背景图、相册多图、清单图片
  • JPG / PNG / WebP / GIF,单张最大 4MB
  • 后台上传保存后,前台刷新就能读到,不用重新构建部署
  • 图片替换或记录删除后,自动清理不再被引用的 Blob

两个值得说的实现细节

会话用 HMAC 签名。 后台登录不发无状态 token,也不存 session 表,改成对会话内容做 HMAC 签名后放进 cookie。这样云函数不用维护状态,签名校验在边缘完成。

用户文本统一转义输出。 留言是最典型的注入入口,所有用户提交的内容在输出时统一转义,不靠输入时过滤。

关于授权

原项目是 AGPL v3,这个适配版沿用同一协议,README 里保留了来源说明。改别人的项目,协议和出处这两件事不能省。

一点感想

这个项目其实不是为了自己做——我连对象都没有。纯属看到原版架构太老,想试试在不改业务逻辑的前提下,能把部署简化到什么程度。

结论是:只要商品化程度够高的云平台,一个原本需要虚拟主机的小站,现在可以完全不碰服务器。

源码:github.com/fanxing724/LikeGirl-edgeone

  • 标题: 把情侣纪念小站搬到 EdgeOne:不用 PHP 和 MySQL 的版本
  • 作者: 番星
  • 创建于 : 2026-10-15 21:00:00
  • 更新于 : 2026-10-21 20:11:26
  • 链接: https://xingbox.me/likegirl-edgeone/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
目录
把情侣纪念小站搬到 EdgeOne:不用 PHP 和 MySQL 的版本