عدم اتساق حفظ الصور في مراجعات المنشور: لماذا تتعطل بعض الصور المحذوفة بينما تبقى أخرى بشكل دائم؟

مرحباً فريق Discourse والمجتمع،

لقد لاحظت سلوكاً مثيراً للاهتمام فيما يتعلق بمعالجة الصور ضمن مراجعات المنشورات (Post Revisions) على نسخة Discourse المستضافة ذاتياً، وأود أن أفهم الآلية الكامنة وراء ذلك.

السياق:

  • يتم توجيه تحميلات الصور في موقعي إلى Cloudflare R2 (تخزين متوافق مع S3).

  • خلال الأشهر القليلة الماضية، قمت بإجراء عدة تعديلات على منشورات تتضمن استبدال أو إزالة الصور القديمة بأخرى جديدة.

  • جميع الصور الأصلية المرفوعة موجودة في R2.

الملاحظة: عند فحص سجل مراجعات المنشورات لهذه المنشورات القديمة:

  1. بالنسبة لمعظم المراجعات التي تم فيها استبدال أو حذف صورة منذ عدة أشهر، يبقى رابط الصورة في المراجعة متاحاً بشكل كامل وتُحمَّل بشكل صحيح.

  2. بالنسبة لبعض المراجعات المحددة، تكون الصورة معطلة تماماً أو تفتقد إلى ملفها الفعلي الأساسي، مما يترك مجرد عنصر نائب (placeholder).

سؤالي:

  • كيف تميز مهمة الخلفية CleanUpUploads وإزالة العناصر اليتيمة (orphan removal) في Discourse بين هذه المراجعات؟

  • لماذا تستمر بعض صور المراجعات القديمة في R2 (أو الكاش) بشكل دائم حتى بعد إزالتها من نص المنشور الأحدث، بينما تُحذف بعض الصور الأخرى بالكامل أو تفقد نسختها المحسّنة (optimized variants)؟

أي رؤى حول قاعدة الشيفرة أو منطق قاعدة البيانات (upload_references / OptimizedImage) المتعلقة بالمراجعات ستكون مقدرةً عالياً!

ليو