tea☆ 记录了自己给静态博客加'点赞'功能的小项目。他早想要一种让读者与帖子互动的简单方式,羡慕 Bear Blog 帖子末尾那个不打扰的点赞按钮,但又不想放弃静态生成。于是上周末写了个独立 Web 服务:给它一个帖子 URL,就返回点赞数或让你再加一赞。为防止重复点赞与滥用,他读了 Bear Blog 源码,最终只借鉴了一点——把访问者 IP 哈希与当前年份一起存储(缺点是年末发帖可能短期内被重复点赞,但总体够用)。服务加了白名单只接受特定站点的点赞,并快速校验帖子确实存在。因为服务与博客分离,只需在页面加载时用一点 JS fetch 点赞数并渲染一个按钮即可。项目最初叫「upvaas」(upvotes as a service),后来发现是印度语'斋戒'的意思,虽然不冲突,他还是想要个更独特、不那么'大厂感'的名字,绕了一圈落在「soup」(汤)上——他本想用冒热气的茶杯当已点赞图标,而汤同样冒热气,于是定名 soupvotes。现在读者可以点击每篇文章下方的茶杯'搅一搅(点赞)'。
核心要点
想给静态博客加不打扰的点赞互动,羡慕 Bear Blog 的实现但不想放弃静态生成
写了个独立 Web 服务:给它 URL 即返回赞数或允许加一赞,与博客彻底解耦
防滥用只借鉴 Bear Blog 一处:用访客 IP 哈希 + 当年份做去重键,并加站点白名单与存在性校验
I think 'soup' is also fitting because I wanted to use a steaming tea cup as an indicator for upvoted posts – and soup is also pretty steamy.(我觉得「汤」也很贴切——因为我想用一杯冒气的茶当点赞标志,而汤也同样冒着热气。)