Привет, команда и сообщество Discourse,
Я заметил интересный способ обработки изображений в ревизиях постов на своем самостоятельно размещенном экземпляре Discourse и хотел бы понять лежащий в этом механизме принцип.
Контекст:
-
Загрузка изображений на моем сайте настроена через Cloudflare R2 (хранилище, совместимое с S3).
-
За последние несколько месяцев я внес несколько изменений в посты, которые предполагали замену или удаление старых изображений новыми.
-
Все исходные загруженные изображения находятся в R2.
Наблюдение: Когда я проверяю историю ревизий постов для этих старых постов:
-
В большинстве ревизий, где изображение было заменено или удалено несколько месяцев назад, ссылка на изображение в ревизии остается полностью доступной и корректно загружается.
-
В некоторых конкретных ревизиях изображение полностью отсутствует или физический файл потерян, оставляя только плейсхолдер.
Мой вопрос:
-
Как фоновая задача
CleanUpUploadsи удаление «осиротевших» загрузок в Discourse различает эти ревизии? -
Почему некоторые изображения из исторических ревизий хранятся в R2 (или в кэше) неопределенно долго, даже после удаления из тела последнего поста, в то время как другие полностью удаляются или теряют свои оптимизированные варианты?
Буду очень признателен за любые сведения о кодбейсе или логике базы данных (upload_references / OptimizedImage), касающиеся ревизий!
Лео