v1.6.0
一条通道,四类指令
- 发行方在后台一次下发,全部用户站在心跳里拉取:站点暂停/恢复、插件与主题紧急停用、 最低版本要求、吊销/恢复授权
- 「实时」是怎么做到的:用户站有访问时在响应发完之后顺手问一次(间隔 20 秒),
另可挂一条 cron 兜底。实测:一次普通访问就把指令同步了,首页响应不受影响(
0.13s) - 绝不把网络调用放进请求路径:页面渲染只读本地快照。所以发行方慢、挂掉, 访客毫无感觉 —— 这是刻意的取舍,否则等于把用户站的可用性交给发行方
- 整份载荷由发行方私钥签名,用户站按收到的原始字节验签(不重拼 JSON), 再从中只挑出指向自己的指令应用
容错与限度(如实说明)
- 验签不过 → 一律不采用,并记日志。宁可让一条该生效的指令晚一点生效, 也不要因为中间人塞了一份坏载荷把好站点停掉、把插件全禁掉
- 拿不到指令 → 按上次的指令继续跑,7 天内视为有效。失败后退避 60 秒, 不会每个请求都去撞墙
- 临时停用可以设天数,到期自动恢复,忘了撤也不会变成永久
- 被暂停的站点前台显示专门一页:写明原因、恢复时间、找谁,且后台照常可进 —— 站长要能进去看到完整状态,而不是对着一个 503 猜服务器坏了
- 停用插件是在加载之前判断的,有问题的代码一行都不会跑;停用主题会回落到内置主题, 不会白屏