إرسال العديد من الطلبات لتحميل الفيديو/الصوت أثناء تحرير المنشور

مرحبًا بالجميع! أود تقديم تقرير عن خطأ.
تم تكراره على الإصدار v2.4.5 و v2.5.0.

المتطلبات المسبقة

  • إنشاء منشور يتضمن تحميل فيديو/صوت.
  • قمت باختباره مع رفع الوسائط الآمن، ولكن يجب أن يُعاد إنتاجه مع رفع الوسائط غير الآمن.
  • ابدأ في تحرير المنشور.
  • افتح وحدة تحكم مطور المتصفح. اختياريًا، اضبط فلتر لـ API الرفع.
  • انتظر حتى تنتهي جميع الطلبات ثم امسح وحدة التحكم.

خطوات إعادة إنتاج الخطأ

  • اكتب أي شيء في المنطقة اليسرى (التحرير).
  • تحقق من وحدة تحكم مطور المتصفح.

النتيجة الفعلية

  • كل ضغطة على لوحة المفاتيح تُعتبر تغييرًا، مما يبسط الكتابة ويؤدي باستمرار إلى إنشاء أحداث رفع الفيديو.
  • العديد من التغييرات ستؤدي إلى إرسال كم هائل من الطلبات، ثم رفض الطلبات بسبب حد معدل API و تسجيل الخروج التلقائي من المنتدى.

النتيجة المتوقعة

  • عدم وجود طلبات لرفع الصوت/الفيديو أثناء تحرير المنشور

شاهد الصورة المتحركة:

ملاحظة حول الخطأ:

هذا السطر هو سبب الخطأ. إنه يستدعي دالة load لعنصر DOM <video>/<audio> في كل مرة يتم فيها عرض المعاينة، أي في كل مرة يتغير فيها المنشور.

3 إعجابات

هل يستمر في إصدار 2.6 التجريبي؟

نعم، تستمر في 2.6 بيتا وكذلك في أحدث إصدار (208d85aaff0392a3a796f84ea78670def6ed7b8e) من فرع test-passed.

هذا أمر غريب. أستطيع تكرار المشكلة فقط إذا قمت بتحديد مربع الاختيار “تعطيل التخزين المؤقت” في تبويب الشبكة في مستكشف الويب الخاص بي. عندما ألغي تحديد “تعطيل التخزين المؤقت”، أحصل على النتائج المتوقعة. أنا أستخدم متصفح كروم على نظام أوبونتو. من الفيديو الذي أرسلته، يبدو أنك لم تحدد “تعطيل التخزين المؤقت”، لذا فأنا غير متأكد مما يسبب هذا الاختلاف.

إعجاب واحد (1)

يجب ألا يؤثر خيار “تعطيل التخزين المؤقت” على إرسال الطلبات. يؤثر هذا الخيار فقط على مصدر نتيجة الطلب - سواء كان من ذاكرة التخزين المؤقت للمتصفح أم من المصدر الفعلي.

تُرسل طلبات الرفع هذه بواسطة الكود الذي يعيد عرض المعاينة مع كل ضغطة زر، مما يتسبب في إنشاء عنصر DOM جديد للفيديو/الصوت. لذلك، يتم استدعاء load لعنصر DOM جديد، وهو ما يتطلب بالتأكيد إرسال طلب.

حتى لو كان عنصر DOM “مخزنًا مؤقتًا” (وليس مُنشأً من جديد في كل مرة)، فإن الطلب يُرسل مرة واحدة فقط بغض النظر عن خيار “تعطيل التخزين المؤقت”.

لقد تفحصت الأمر وأستطيع إعادة إنتاجه إلى حد ما مع رفع الفيديوهات الآمنة وغير الآمنة. يبدو أنه في مرحلة معينة يتم التخزين المؤقت ويتوقف عن إرسال هذه الطلبات بشكل متكرر، لكنه لا يزال يمثل مشكلة. السطر الذي أشرت إليه:

أضيفته أنا، لكنه لا يبدو أنه يؤثر على أي شيء حاليًا. إذا قمت بإزالته، فإن معاينات الفيديو لا تزال تعمل بشكل صحيح. أعرف أننا قمنا بعمل آخر يتعلق بصور مصغرة للفيديو وما إلى ذلك، والذي على الأرجح قد أصلح أي مشكلة كنت قد وضعت هذا السطر من أجلها. لذا أعتقد أنني سأقوم بإزالته فقط، مما سيحل مشكلة تعدد الطلبات.

3 إعجابات

تم دمج إصلاح FIX: Remove unnecessary audio/video parent element load by martin-brennan · Pull Request #10511 · discourse/discourse · GitHub. شكرًا لك على تقرير الخطأ المفصل! @kkurdupov

4 إعجابات