[更新公告]轻墨 v2.2 → v2.7.0 更新总结:从“能用”到“好用”怎么样
轻墨 v2.2 → v2.7.0 更新总结:从“能用”到“好用”
好久没认真写更新公告了。上次系统性的介绍还停在 v2.1,后来轻墨陆续攒了不少东西:评论提醒、反垃圾、SEO、在线更新、内置 B站表情、图片灯箱,还有免刷新实时评论。
最近又把安装、登录和数据保存重新梳理了一遍。这篇一次性补上,从 v2.2 讲到现在的 v2.7.0。
v2.2:在线更新来了,评论开始“认识”你
在线更新:后台「系统更新」可以检查 GitHub 最新提交,下载并覆盖程序文件,自动跳过 data/ 和上传目录;也支持自定义 ZIP 直链。更新终于不用每次手工搬文件了。
这一版还引入了版本常量 QM_VERSION,方便显示和维护系统版本。
评论归属地插件也来了:记录评论 IP,在线查询归属地并进行本地缓存,在评论旁展示地区等信息。
为了让这类功能更容易扩展,核心新增了两个评论钩子:qm_comment_data 负责写入前过滤,qm_comment_meta 负责渲染时补充信息。归属地、反垃圾等插件就通过这些入口接进来。
v2.3:评论提醒、反垃圾和 SEO
这一阶段主要围绕评论体验和站点功能做补充:
- 邮箱必填与访客记忆:提交评论需要填写昵称、邮箱和内容,邮箱用于通知;浏览器会记住昵称、邮箱和主页,下次不用重新输入。
- @提及与回复提醒:被提到或收到回复时,可以通过邮件接收提醒。
- 反垃圾评论插件:支持提交间隔、IP 限频、链接数量限制,以及关键词、邮箱和昵称黑名单,拦截时会说明原因。
- SEO 插件:补充 canonical、Open Graph、Twitter Card 和文章 JSON-LD,并支持生成
sitemap.xml。 - RSS 增强与 Atom 订阅:补充全文、作者、分类、标签和更新时间,增加 Atom 订阅入口。
- 页脚自定义:站点设置支持填写 HTML,备案链接、版权声明和统计代码都可以放进去。
- 后台侧边栏布局:左侧菜单、当前页面高亮,窄屏时调整布局。
- 按日归档与侧栏公告:可以查看某一天发布的文章,公告支持设置标题和显示位置。
这期间也修了在线更新的下载地址、临时目录和错误提示等问题,出错时能更清楚地知道卡在哪里。
v2.4:补一些细节和“人情味”
邮件失败原因更明确了:连接失败、登录失败、服务器拒绝,或者 PHP mail() 不可用,会给出具体提示,测试邮件也有明确结果。
友链支持分类和图标,页面按分类展示,排序可以选择按名称或每次刷新随机。
评论增加头像,通过邮箱哈希生成 Cravatar / Gravatar 地址。
楼中楼回复取消固定层数限制,子回复默认折叠,想看时再点「展开回复」。评论多的时候,页面也不会一下拉得太长。
v2.5:表情自由,图片也能放大看
这一版主要折腾评论区。
内置了 194 枚 B站小黄脸表情,图片随系统发布,表情面板新增「B站」分组,也可以直接输入 :doge:、:huaji: 等表情码。
表情面板改成顶部分类 Tab,颜文字、Emoji、B站表情分组展示,不再横向铺一大排。
评论支持 Markdown:加粗、链接、行内代码和图片都能用。评论图片限制显示宽度,正文和评论中的图片可以点击进入灯箱,支持左右切换、Esc 关闭。
登录页也换了新样式,评论框增加随机占位提示,每次聚焦换一句俏皮话。
后续的小版本继续补细节:修复长串颜文字和图片混排撑破页面的问题,为样式表加上版本号,减少浏览器旧缓存带来的显示异常。
还修了一个很烦的情况:评论没保存成功,却收到了通知邮件。写入失败后不再假装成功,也不再发送这类“幽灵邮件”。
v2.6.0:不用刷新,也能接上话
这一版加入了 AJAX 自动刷新:
- 文章页每隔约 12秒检查评论,有变化时更新评论区和数量。
- 已经展开的回复层级会尽量保留,不用重新点开。
- 首页和归档列表每隔约 45秒检查文章变化。
- 页面切到后台标签时暂停轮询,减少无用请求。
- 回复按钮改为事件委托,新刷出来的评论也能直接回复。
虽然还不是即时通信,但看文章、聊评论时,终于不用一直按刷新了。
v2.7.0:把安装和数据保存重新捋一遍
前面加了不少功能,这一版主要补基础,也处理几个实际使用中会遇到的问题。
安装有正式界面了
取消安装时自动创建的 admin/admin,改成自行设置管理员用户名和密码。
安装表单、错误提示、安装成功页和已安装提示页都有了完整样式,也照顾了手机布局。
新建和修改密码统一为至少6个字符,提示也换成正常人能看懂的话。之前那个“12至72字节”,确实太像写给程序看的了。
安装流程还调整了完成顺序:初始数据全部保存成功后,才写入配置文件,标记安装完成。
第一篇文章,Hello world!
新安装的博客会生成一篇 Hello world!,介绍 Qingmo 和基本使用方式。
第一条评论来自 Qingmo:
感谢使用 Qingmo,愿每一笔墨都轻而不浮,重而不滞。好好书写吧。 —— Qingmo 团队
已有站点的文章和评论不会因此被替换。这是送给新博客的一句开场白。
数据保存更稳一点
轻墨用文件保存数据,部署简单,但并发读写也得认真处理。
这次加入完整请求锁,保护读取、修改和保存,避免多个请求拿着旧数据互相覆盖。文件先写入临时文件,完整写入后再替换目标。
保存失败会直接报错,不再出现“提示成功,实际没存进去”的情况。
本地进行了 12 个独立 PHP 进程并发写入测试,文章 ID 没有重复,评论没有丢失。
这版的做法也有取舍:为了数据一致,所有写入都会经过同一把存储锁排队——如果某个请求特别慢(比如写盘变慢、或正在做解压覆盖类的大操作),后面的写入就得等它一会儿。备份依然要做,目前没有内置一键备份功能。
登录、更新和邮件补上检查
同一个 IP 在 15 分钟内连续登录失败满 5 次,会被临时挡下并提示稍后再试。修改密码后,其他设备上旧的登录会话会在下次访问时失效。
SMTP 邮件与在线更新连接都开启证书校验,更新地址只接受 HTTPS。更新包会逐项检查:HTTP 状态与最小体积、zip 内的路径(防目录穿越)、解压总体积与文件数上限、是否为单一顶层目录,并确认包含 index.php 和 includes/functions.php 核心文件;覆盖前逐文件备份,写入失败会尝试自动恢复原文件。
这部分还没有做到终点:更新包签名尚未实现,断电或进程被强制终止时的中途状态没有自动恢复保证——所以每次更新前,还是手动把 data/ 备份一份更稳妥。
几个容易忽略的小坑
- 编辑文章后,置顶状态和插件扩展字段会保留。
- 待审核评论不再提前向访客发邮件,首次审核通过后再发送提醒。
- 评论审核后重新统计数量。
- 评论增加长度、主页协议和回复对象校验。
- 自动刷新遇到网络失败或页面隐藏后,可以继续后续轮询,不会一直卡住。
少一个重复插件
「页脚备案信息」插件移除了。
站点设置已经有页脚自定义,而且支持 HTML,备案链接和版权声明统一放在那里就好。
旧版正在使用这个插件的朋友,先把文字迁移过去,再停用插件。覆盖升级不会自动删除旧插件文件。
现在的轻墨,有些什么?
写文章可以用 Markdown 或可视化编辑器,主题和插件可以按自己的习惯选择。
评论区有头像、Markdown、内置表情、折叠回复和自动刷新,图片可以点击放大;需要的话,还能开启归属地、反垃圾和邮件提醒。
站点方面有友链分类、全文订阅、SEO 插件、在线更新和页脚自定义。功能慢慢补,但还是想保留轻量、简单的感觉。
升级前记得这几件事
先备份,尤其是 data/ 和 assets/uploads/。当前在线更新会跳过这两个目录,手动覆盖程序文件时也要保留它们。
旧账号和密码继续有效,不需要重新安装。升级到 v2.7.0 后需要重新登录一次;如果还在用默认密码,顺便改掉吧。
当前版本:v2.7.0。完整更新日志、安装说明和主题插件开发说明都在 GitHub 仓库。
攒了这么久,总算把公告补上了。
好好书写吧,留言区见~
评论 (0)
还没有评论,来抢沙发吧~
发表评论