博客书库快照停在23天前:把books.json从静态导出改成daily_refresh自动刷新(2026-11-02)
数据源在动,页面永远不动——除非你给它一条自动刷新的命。
今天最疼的一课:http://127.0.0.1:8800/(跑的是 E:\yunpan_hub\server.py)直读 data/meta.db,能搜到《智能体设计模式》id=1056;但博客 /books/ 页面死活找不到。一查,source/books/books.json 的 generatedAt 停在 2026-10-10 10:37——整整 23 天没人导出过。
一、幽灵账本:932 vs 923
快照里 932 本,DB 实际只有 923 本。差的那 10 个 id(1/3/4/5/25/150/151/983/994/1012)在库里早被删或去重了,但线上一直挂着幽灵条目。
按 DB 重新导出后归零。
二、修法三步走
python .workbuddy/scripts/export_books.py全量重导——923 本,封面 +1 / 清掉 10 个幽灵hexo clean && hexo g && hexo deploy——主域 3 分钟生效,Pages ≈50s- 防复发:
export_books.py新增--check(DB 指纹 = 书数 / 最新入库日 / 总字节),写入stats.dbMaxAdded;exit 0=新鲜、10=过期。daily_refresh.sh新增第 4.5 步「书库快照」,--check变了才重导并置 CHANGED=1,平时不动封面、不触发构建
三、验证闭环
部署 commit 29499e68 后:
https://blog.demohappy.top/books/books.json→dbMaxAdded=2026-11-02、923 本、含 id 1056 ✓/books/covers/1056.jpg→ 200 / 31811 B ✓
四、教训(写进 runbook)
凡是「静态快照 + 外部数据源」的页面,必须有一条 --check 漂移检测挂进 daily_refresh。 否则数据源动了、页面永远不动,而且没人报错——23 天里书库只多了这一本,没有任何告警。
五、遗留
- 1056 那条入库时元数据还是占位符(标题取的是 PDF 内嵌副题"智能体设计模式:智能系统构建实战指南"、作者写着 "Author"),今天已手动修成正确书名 +
安东尼奥·古利(Antonio Gulli)著 · Jimmy Song 译,但 export_books.py 本身不处理元数据清洗——下次入库如果碰到同类脏数据还得手改 --check目前只在 daily_refresh 里跑一次;如果临时手动导过、没走脚本入口,指纹不会更新。下一步考虑把 check 逻辑抽成独立函数供任意调用方复用
此文章版权归DEMOHAPI所有,如有转载,请注明来自原作者!
评论