近期更新报告:留言能发图了

好久没写技术向的文章了,其实也算不上什么技术,只是用 AI 给博客补了些需要的功能。正巧这阵子真新增了几样,索性写一篇讲讲改了哪些地方。

大概可以列为三块:博客本身、博客后台,以及给后台和统计做支撑的服务端。都是围绕博客做的功能增强,所以一处改动,别处往往也得跟着动。

博客站:留言终于能发图了

几个月之前做过一个留言功能,但当时只支持纯文本。最近一个朋友跟我说,留言无法上传图片,没法分享她的想法。于是就着手对留言功能做了些升级。

来回改了好几轮,大概经历了这么个过程:最初的版本是独立的一个上传区域,即和当前的预览图位置一致,跟编辑器割裂,用着别扭;后来改成点击图标后直接上传图片到后端存储,然后通过 markdown 语法插到正文里,却又要处理图片和文字的排版关系,而且没有预览,图片上传和正文提交还是分开的——图片在上传时就已经进了后台,文本反倒可以不提交,这其实是留了隐患;最终一版把上传改成先本地排队、提交时统一处理,这个功能需求才算相对完善。

现在的流程是这样:本地选好图片,先落到留言框底部的预览框,这会儿只在本地排队和预览;留言写完,再一并提交到服务端。同时,考虑到性能和存储,图片大小限制在 5 MB。

20260927211157-2026-09-27_21-10-45-qpeqf2go-ww319.webp

经过一番需求的描述和实际使用中的修正,现在留言板和说说评论区都可以直接上传插入图片,编辑器的工具栏最右侧新增了一个图片按钮,点一下选图,图片进队列,可以在本地预览、也能删掉重新换。

博客后台:从能用到好用

后台这段时间主要在补几个短板。

登录问题。 之前后台设定的登录缓存是 6 小时,期间自动续期,超过 6 个小时就得重新认证一次。每次连 GitHub 认证实在麻烦,不光要挂代理,还要输验证码。现在把登录设备管理做起来了,在后端勾选的登录设备可以有更长的登录缓存,7 天,不用再总登录了。同时也能看到自己在哪些设备上登录过。

20260927211154-2026-09-27_21-08-48-i48djjo0-8phyi.webp

草稿有了缓冲区。 由于后台是直接操作 GitHub API,以前每次操作——保存、发布、修改、删除——都会触发一次 CI 部署。尽管已经用了 [Skip CI] 跳过,但提交记录却被这些琐碎操作塞满,看着挺乱。现在多了一层 S3 暂存:有点像本地的 IDE,草稿写完后放在缓冲区里,可以直接改草稿要发布的目录,提交的时候一次性推出去,会直接落到指定的发布路径。也就是把一连串操作先记在缓冲区里,提交时统一生效,多重操作简化为了一次。

20260927211156-2026-09-27_21-09-12-9mmxjwj6-cbz3n.webp 20260927211152-2026-09-27_21-08-37-iwxaica1-un4ue.webp

文章的链接和文件名分开了。 因为用中文写作,我爱把文件名起成中文,又没有给文章设置 slug,永久链接里中文字符一转义,就会变成非常长的一串字符。现在编辑时,元数据面板多了个 slug 属性,让文件名和 slug 解耦,slug 可以手动填,也可以按规范自动生成,文件名随便起。对我这种爱起中文文件名的人来说,算是解决了一个心病。

20260927211149-2026-09-27_21-07-55-gsi8gq6e-47yw4.webp

服务端:统计看得更细,图片存得更稳

服务端做的是后台和统计背后的事,前端的不少功能都要由它支撑。

留言的图片存储。 这是配合博客那边一起做的。图片上传之后总得有个地方放,后端增加了 S3 和 GitHub 仓库两种存储方式。另外,原来留言查看并不支持看图片和附件,为了应对需求,一并做了修改和补充。而且,之前用户直接回复博主的答复邮件时,邮件里携带的图片和附件也是不显示的,这次一并添加了。

由于测试留言给删掉,导致这里没有图片展示。

统计的地区数据。 之前做过一个简易的博客访问数据统计。但由于找不到好用的开源 IP 归属地查询,访客的地区显示很乱,归属地识别不准确,有的地区名称显示英文,有的显示中文。总之过于简陋,这一轮根据观察到的问题和需求,重新整理和修复了地区的归属显示,同时,修复了一些其它小问题,界面也做了微调。

20260927211159-2026-09-27_21-11-23-nisonzv6-f7ebr.webp

最后

都是自己用的功能,也不是古法手作,全靠 AI 攒出来,没有什么值得炫耀的地方。但看着站点一点点完善,一点点长出自己想要的功能,心里还是有点小激动的。