静态网站是个「只出不进」的展厅——内容发得出去,数据收不回来。这篇写下我们怎么在不买服务器、不增加一分钱成本的前提下,给网站装上一个「点提交即入库」的后端;以及上线当夜,它接住的那十八份真实回声。
我们的站点是纯静态的:所有页面提前生成好,访客看到什么,服务器就递什么——快、稳、便宜。代价是它天生听不见。
问卷就是典型。第一版问卷页的方案很朴素:学生填完,页面把答案打包成一段文本,请你自己复制、自己发回来。能跑通,但每个填过的人都懂——「复制发给助教」这个动作,每多一步,就少一截回收率。到了行业导师问卷这种「一张都不能少」的场景,靠转发截图、人工誊录,既慢又容易错。
我们需要的是一个意见箱:访客一按提交,数据自己落进库里。
传统解法是架一台服务器,但那意味着运维、监控和每月账单——对一个内容站太重。我们选了 Serverless 路线:
行业导师问卷当晚上线。导师们陆续提交,后台的数字一路走到 18 份;另有一份走了备用通道回传——我们如实把它登记为「库外 1 份」,两种口径分开记,账要经得起追问。当晚十点整,从后台拉出全量数据,自动统计分组,产出给三位导师的备课简报。
这组数字里我们最看重的是那条土路真的被用上了。备用通道不是「功能完备」的装饰,是对现实网络的尊重——校园网、企业网、代理服务器,什么环境都有。
从写函数到当夜顺利回收,中间隔着一串只有踩过才知道的坑。全部如实交代:
| 坑 | 解法 |
|---|---|
| 上传时找不到入口文件 | 打包部署模式+在函数目录内执行,路径含空格是重灾区 |
| 绑路径报「必须以 / 开头」 | HTTP 路径老老实实带前导斜杠 |
| 交互式确认卡住脚本 | 给安装过程预喂几个「回车」,选默认项 |
| 批量删除只让删一条 | 循环单条删,别跟数据库的脾气较劲 |
| 跨域配置「看起来没生效」 | 响应头键名是小写的——检查时别按原大小写找,会误判缺失 |
| 时间统一差了 8 小时 | 云端跑的是世界时,展示层统一加回 8 小时再格式化 |
| 删除后统计数字没变 | 页面本地重算,别只信服务端初值 |
| 参数拼错一个词 | 输出无法流式播放/解析失败——逐个核对拼写,别凭手感 |
这些坑的共同点:每一个都会在关键时刻浪费半小时以上,而每一个的解法都只需一句话。所以它们现在的形态是一张表——下次部署新问卷,照单排查,十分钟扫完。
可以抄走的一句话:先让数据有地方落,再谈漂亮——免费的函数,够用就是最好的架构。 —— 本期方法速记
十八份回声听起来不多,但对一个静态网站来说是质变:从「我们说、大家听」,变成「我们说、大家答、答案落进库、库变成简报」。数据闭环一通,网站就从展板长成了器官。
下一篇特稿,我们讲一次和「名字」较真的经历:一个英文名的全网修正,以及署名这件事为什么值得认真。
箱子敞着口,钥匙攥在手里——一个人,也是一间机房。我们,下期见。