帖子修订中图片持久性不一致:为什么有些已删除图片会导致链接失效,而另一些却永久保留?

Discourse 团队及社区朋友们,你们好:

我在自托管的 Discourse 实例中注意到关于帖子版本历史中图片处理的一个有趣现象,希望能了解其底层机制。

背景:

  • 我的站点已将图片上传重定向至 Cloudflare R2(兼容 S3 的存储)。

  • 过去几个月里,我对某些帖子进行了多次编辑,涉及替换或移除旧图片并上传新图片。

  • 所有原始图片上传均存储在 R2 中。

观察到的现象: 当我查看这些旧帖子的帖子版本历史记录时:

  1. 对于几个月前替换或删除图片的大部分版本,版本中的图片链接仍可完全访问并能正确加载。

  2. 但对于少数特定版本,图片完全损坏或缺失底层物理文件,仅保留占位符。

我的问题:

  • Discourse 的 CleanUpUploads 及孤立文件清理后台作业如何区分这些不同版本?

  • 为什么某些历史版本中的图片即使在最新帖子正文中被移除后,仍能在 R2(或缓存)中无限期保留,而另一些则被彻底清除或丢失优化变体?

非常感谢对代码库或数据库逻辑(upload_references / OptimizedImage)中有关版本处理方面的任何见解!

Leo