给博客加了点折腾派的东西:友链体检、状态页、系列合集

可爱的站长 发布于 3 小时前 11 次阅读 1377 字 web


起因很小:点开自己友链页,发现有个朋友的站要转六秒多才出东西。

然后就收不住了。一晚上的结果是——友链体检、站点状态页、文章系列,外加几个之前一直想加没加的小东西。这篇按时间顺序记一下,顺便给未来的自己留个说明书。

一、友链体检:先把我那六秒的友链抓出来

思路很朴素:每 12 小时,拿 wp_remote_head 挨个敲一遍友链的门(HEAD 不行就退回 GET),记下状态码和耗时,然后给每个友链配一个状态点。

  • ● 绿点:能正常打开
  • ● 黄点:能开,但超过 3 秒
  • ● 红点:连不上

第一次跑出来的结果挺有教育意义:两个站 500~900 毫秒,一个站 6759 毫秒——就是开头说的那个。数据不会说谎,但会让人有点尴尬。

顺带把友链页的重复条目也去掉了(数据库里同一站点存了两份,一份是隐藏的)。现在页面上是清爽的三张卡片,脚注写着「上次检测时间」,鼠标悬停能看到具体状态码和耗时。

二、状态页:给这台小机器装个仪表盘

以前这些数据都藏在 SSH 里:内存用了多少、磁盘还剩多少、证书几天后过期、上一次备份是什么时候。每次都要敲命令看,索性做成一个页面。

数据全是页面打开那一刻现取的,没有任何第三方监控服务:

站点运行     1 天 17 小时 3 分
系统负载     0.59 / 0.46 / 0.26
内存占用     1062 MB / 1871 MB
磁盘占用     15 GB / 39 GB
数据库       MySQL 8.0.46
HTTPS 证书   剩 89 天
最近备份     2026-10-21 11:30
友链体检     2 正常 / 1 偏慢 / 0 失联

内存和证书这两项是从 /proc/meminfo 和一次 TLS 握手里读的,备份时间则是备份脚本每次跑完写的小 JSON。哪个指标不正常,卡片边框会变成琥珀色——比盯着一串命令输出舒服多了。

写的时候踩了个小坑:内存一开始显示成 1082632 MB / 1915896 MB,因为 /proc/meminfo 的单位是 kB,忘了除 1024。差点以为自己买了台 1.9 TB 内存的机器。

三、系列:同一件事写到第三篇,是时候整理了

WordPress 自带的分类和标签都不太适合「连载」这回事——分类太粗,标签太散。所以加了个 series 分类法:

  • 文章底部自动出现「本文属于系列 · XXX(共 N 篇)」的目录,当前这篇高亮标出来
  • 开一个汇总页,按系列列出所有文章

想都不用想,第一个建的系列就是「WordPress 重建与优化」,把从那次数据库挂掉、到抢救、到两轮优化,一共三篇串起来了。以前读者看到第三篇可能不知道前两篇讲什么,现在链起来了。

四、顺手加的几样

1. 评论回复通知(这个要吐槽一下)

主题其实自带「评论被回复时发邮件」的功能,开关打开着,但一封都没发出去过。翻源码发现判断写错了:

$admin_notify = iro_opt('admin_notify') ? '1' : ((isset($pe) && $pe) != get_bloginfo('admin_email') ? '1' : '0');

(isset($pe) && $pe) 得到的是布尔值,拿去和一个邮箱字符串比较,结果恒为 false,于是 $admin_notify 永远是 '0',外层那个 != '0' 的判断永远过不去。

没有去改主题(改了主题更新就丢),而是写了个小插件接管这段逻辑,顺便补上:自己回自己不通知、审核通过后才通知、邮件里带一键退订。

2. PWA

加了 manifest 和 Service Worker,手机上可以「添加到主屏幕」。Service Worker 只缓存静态资源(图、CSS、JS),HTML 永远走网络——不然哪天发了新文章自己却看不到,就更尴尬了。

3. 说说页和热门文章

那七条说说以前散在数据库里,没人找得到,现在有了独立入口。热门文章则是把每篇文章的阅读量拿出来排了个榜。

4. 隐私政策

这个其实拖了很久。站点开着注册、会收集评论邮箱、还写了访问统计,但隐私政策一直是「草稿」状态。补上之后至少能说清楚:访问统计不存 IP,那个 iro_seen 的 Cookie 只活 30 分钟。

五、一点感想

这几样东西没有一个能提升「性能指标」,首页该是 140 毫秒还是 140 毫秒。但它们解决的是另一种焦虑:

你不知道它有没有出事,直到它出事。

友链死了两个月你不会发现,证书过期当天你才会发现,备份三个月没跑成功你也只会在需要它的那一天发现。把这些「看不见的状态」变成页面上一个绿点、一行数字,本质上是在给自己省未来的惊吓。

以及,那个 6759 毫秒的友链——我打算留着。毕竟它现在是整页最诚实的数据。