三个月前开始用上自己开发的博客程序 Press,关于评论系统有过很多设想,目前的实现是一个表现非常传统的支持嵌套的内置评论。本文列举评论系统常见的实现方式,并进行浅显地探讨。
随着博客不再流行,评论系统也没人太过在意了。很多人在放弃使用 WordPress 之后,干脆放弃了传统的评论系统,转而使用其他方式作为与读者沟通的渠道。下面先回顾一下现有的实现方式。
现有的实现方式
传统评论系统
可免登录发布评论,只要填写邮箱和昵称,首次评论时可能需要站方审核。WordPress 中还常配合同门产品 Gravatar,根据邮箱获取到用户提前设定的头像。因为无需身份验证,导致 Spam 肆虐,常常需要手动审核,或者使用过滤插件。
这种不严格认证的作派,也与中国大陆的监管政策冲突。比如煎蛋网(WordPress),曾经主动关闭吐槽功能1,后来采取了限制措施,要求登录才能发表内容。
但仍有大量网站采用这种评论方式,如 土木坛子(WordPress)、Tualatrix(非 WordPress),阮一峰(Movable Type)等。
Trackback/Pingback
一直被 Spam 滥用,因此,一些小白教程里面建议禁用掉。
第三方评论系统
如 Disqus、多说、Cusdis等。通过引入一个 JS 脚本,可以为任何页面提供评论功能。Disqus 非常有名,我在十年前就使用过,但最终一些问题放弃了2。
至今仍有大量网站使用,比如 Sukka(Next.js)。但我浏览了其最新文章的评论区,仍然显示着「评论基础模式加载失败,请 重载 或 尝试完整 Disqus 模式」的提示。
多说曾经广受欢迎,但早已在 2017年5月关闭。
自建第三方评论
第三方评论系统好处很多,自建版就更好了,不过有些技术门槛和运营成本。
如罗磊、烧饼博客(Next.js)采用了自建 Artalk。有意思的是,烧饼博客的自建评论系统屏蔽了大陆的访问注1,或许是出于保持ICP备案的目的吧。
Cusdis也支持自建。有意思的是,其作者的博客目前是关闭评论状态。
关闭评论
博客盛行的时代,有人只当笔记用,并不关注与读者的沟通,如好记性不如烂笔头注2等。
也有一些评论很多的网站出于其他的考虑,直接关闭了评论功能,如 我爱水煮鱼。
借用评论
很多静态博客的原始数据就是 Markdown 文本,非常适合在 Github 托管,便于共同创作和堪误。更有人采用了 Github Issues 来发布内容,就干脆使用其自带的评论功能,如BMPI。ULyC 也曾采用过这种方式注3。
Nostr 评论系统
新概念社交媒体协议 Nostr 有一个第三方评论的替代方案 nocommnet。凭借 Nostr 本身的技术特色,这个评论系统无需存储,可匿名,也跨站点复用身份。评论内容因签名(还可加入可信时间戳)而具有不可篡改性,评论发布者应该会喜欢。Nostr 网络本身仍陷身于 Spam 泥沼,网站需采取一些预防性的过滤措施。
同时 Nostr 本身也有关于博客功能的提案3,或许未来最好的方式是把网站内容与评论系统都与其整合起来,但目前尚不够成熟。
隐藏评论
如涛叔(Pandoc),关于评论有独到见解,与诸位读者均单线联系,对话姿势扁平化,采取了评论不公开、仅手动引用精选评论的做法。这一点非常像传统杂志的「来信选登」栏目。保持有限的沟通,将注意力集中在内容上。
Webmention
KAIX.IN(Hugo)采用的评论方式,像是一种自动验证Trackback,曾经咨询过站长,大概是叫做「 Webmention」之类的名字。如果你想对其文章作出回应,则可先写一篇文章,然后将有链接到原文的文章网址帖回原文的回应处即可。
其他方式沟通
另有一些站点不提供任何评论功能,但留下了联系方式,可能是在线联系表单,或者邮件4、Telegram等。
选择传统评论
除去短暂地用过一段时间的 Disqus,我一直在用 WordPress 和 Grav 的原生评论。十几年前就在琢磨如何更好地使用嵌套评论5。可能习惯使然,在等待 Nostr 成熟之际,还是实现了传统评论,并做了嵌套功能的支持。
为了防 Spam,简单地做了一个陷阱字段,效果还行,新评论系统收到的 Spam 大概就比真实评论多个三五条(0 + 3~5)吧。
一部分精力用在了转换整理历史评论上。这个体现出了不用第三方的一种好处,原始数据在自己手里。目前还能找到 2009年的评论数据。
一些可能的改进
- 评论提交后,同发布者发送邮件,一来可以通知、存档,二来提供一个可选的验证链接
- 验证身份后可在后续会话中保存 Token
- 增加筛选条件,来自未验证发布者的内容进入审核队列
- 异步提交,提高速度
- 投票等互动
未来还可能会引入整合在一起的多种形式的评论。
另外还有一点,非常重要,就是超大量评论性能的改进,当然目前的评论量还不到时候(进度大约是 0%),希望这一功能可以早日安排上 :)
注释
-
使用大陆的 HTTP 检查工具得到了 403 的状态码 https://tool.chinaz.com/pagestatus/?url=https%3A%2F%2Fshou.si ↩
-
「好记性不如烂笔头」(
lirui.name
)是Google Reader 时代小有关注度的一个博客,话题集中在 Ubuntu 的使用等方面,使用 WordPress 搭建。 ↩ -
Ulyc 目前采用了第三方评论系统 Cusdis。在 Github 上仍有旧文的 Issue,如2021年,用更现代的方法使用PGP(上),最新评论停留在 2022年3月。而目前网站文章页面的最早评论出现在 2023年1月。 ↩
参考
-
如何评论煎蛋网关闭评论. 知乎 ↩
-
Dallas Lu. 《Disqus 插件版中的两个问题》. 2013 ↩
-
刘家财. 《评论系统迁移》. 刘家财的个人网站. 2022. 「有价值的评论少之又少,那还不如不提供评论系统,读者直接通过邮件来与博主沟通」 ↩
-
Dallas Lu. 《WordPress 完美 AJAX 嵌套评论》. 2009. ↩
Webmention
Comment Form
你好!我曾经也遇到过类似的问题,以下是几个可能的解决方法:
检查网络连接:有时候加载慢是因为网络信号不稳定,可以尝试切换Wi-Fi或者使用移动数据看是否有改善。 清理缓存:应用缓存过多也可能影响加载速度,可以在设置里清理应用缓存,或者尝试卸载再重新安装应用。 更新应用:确保你使用的应用是最新版本,有时候更新版本会修复一些已知的性能问题。 关闭后台应用:如果后台运行的应用占用较多资源,也可能导致加载缓慢,尝试关闭一些不必要的后台程序。
感觉我这个设计有点像自动关联的 Webmention,即不需发布者手动告知被评论方:https://github.com/wa008/zhblog/issues/1
Webmention 主要是想解决这种外部评论的发现的问题。如果每一个站点不亲自做,就需要委托他人做这件事。如果是聚合工具解决了这件事,那么就是这个聚合工具在内部处理了评论的发现的问题。
Nostr 也有相似的作用,是从各 Relay 发现外部相关内容。 或许某天,应该有一套评论系统,将这些“通知被评论方”的各种方式的实现,整合到一起。
Hello there, this is a test comment.
我懒,一直使用WP自带的评论系统,垃圾过滤也还好。