على سبيل المثال، يؤدي renderTopicListItem في النهاية إلى العديد من استدعاءات _getPath (لتوفير 50-100 مللي ثانية أخرى): Firefox Profiler (مكدس الاستدعاءات مصفى إلى _getPath داخل renderTopicListItem)
ربما تكون الاستدعاءات المكلفة لـ _getPath شيئًا يجب تحسينه في Ember.js وليس في Discourse.
وتفقد Firefox Profiler للحصول على رؤى حول تنفيذ JavaScript:
للأسف، لم أتمكن من تكرار هذه الزيادة الكبيرة في السرعة. على Firefox و Chrome (macOS) لا أرى أي تحسن قابل للقياس. يقضي Chrome حوالي 23 مللي ثانية في renderTopicListItem. Firefox 30 مللي ثانية. على جهاز Android قديم (Pixel 3)، أرى حوالي 108 مللي ثانية. الأرقام لا تتغير قبل/بعد التغيير.
بالمناسبة، قمت بقياس هذه الأرقام باستخدام واجهة برمجة تطبيقات الأداء. أضفت performance.mark("rtli-start") في بداية renderTopicListItem، ثم performance.measure("rtli", "rtli-start") في النهاية.
ثم أقوم بإعادة تحميل المتصفح مع إغلاق أدوات المطور وتعطيل إضافات المتصفح (يمكن لأدوات المطور وإضافات المتصفح أن تؤثر بشكل كبير على أداء العرض). ثم بعد اكتمال التحميل، أفتح أدوات المطور وأقوم بتشغيل هذا لجمع القياسات:
performance.getEntriesByName("rtli").reduce((v, m) => v + m.duration, 0);
سنقوم بالتأكيد بدمج هذا التغيير - إنه بالتأكيد تطبيق أفضل. لكنني لست متأكدًا مما إذا كان سيعطينا فرقًا مرئيًا في أداء العرض
لا يزال بإمكاني استنساخ فوائد الأداء باستخدام واجهة برمجة تطبيقات الأداء في وضع التصفح الخاص في Firefox (Linux).
اختبار http://localhost:4200/latest
الوقت المستغرق في renderTopicListItem انخفض إلى حوالي 190 مللي ثانية من حوالي 290 مللي ثانية.
تحتوي نسخة Discourse التجريبية الخاصة بي على العديد من المواضيع مع العديد من الإجابات والعديد من المؤلفين المختلفين - تم سحب البيانات من نسخة إنتاجية. ينتج عن هذا الكثير من العناصر التي يجب عرضها.
ربما هذا هو الاختلاف في معايير الأداء لدينا؟
العرض المسبق للمحتوى أسفل الطية
يقوم Discourse بعرض مسبق لـ 30 موضوعًا في صفحة “latest”. ثم يتم عرض المحتوى لأول مرة (FCP). يوجد أسفل الطية حوالي 12 موضوعًا مرئيًا فقط.
نفس الشيء بالنسبة لصفحة الموضوع: تم عرض 20 مشاركة مسبقًا، ولكن بحد أقصى 6 مشاركات من سطر واحد مرئية أسفل الطية.
هل تمانع في مشاركة إصدار فايرفوكس ونظام التشغيل؟ الرقم 290 مللي ثانية أبطأ بحوالي 3 مرات من جهاز أندرويد من عام 2018، وهو أمر مفاجئ بعض الشيء.
قد يفسر هذا بعض الاختلاف، نعم. في حالتي، قمت بتشغيلها باستخدام بيانات مباشرة من Meta:
bin/ember-cli --environment production --proxy https://meta.discourse.org
نعم، هذا تحسين محتمل. ومع ذلك، سنحتاج إلى توخي الحذر الشديد لضمان عدم قفز التخطيط و/أو التمرير (على سبيل المثال، إذا كان المستخدم يقوم بتحديث الصفحة عندما يكون بالفعل في منتصف الطريق لأسفل). تعريف “أسفل خط الطي” يختلف أيضًا بناءً على الجهاز/المتصفح/السمة.
خطأ في بناء Discourse
خطأ [ERR_TLS_CERT_ALTNAME_INVALID]: اسم المضيف/IP لا يتطابق مع الأسماء البديلة للشهادة:
المضيف: localhost. ليس في الأسماء البديلة للشهادة: DNS:*.cdck-prod-meta.discourse.cloud
خطأ في بناء Discourse
خطأ [ERR_TLS_CERT_ALTNAME_INVALID]: اسم المضيف/IP لا يتطابق مع الأسماء البديلة للشهادة:
المضيف: meta.discourse.org. ليس في الأسماء البديلة للشهادة: DNS:*.cdck-prod-meta.discourse.cloud
النظام المستخدم في المقاييس
مستخرج من Firefox about:support
الاسم
Firefox
الإصدار
95.0.2
معرف البناء
20211219102529
معرف التوزيع
canonical-002
وكيل المستخدم
Mozilla/5.0 (X11; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0
نظام التشغيل
Linux 5.10.0-0.bpo.9-amd64 #1 SMP Debian 5.10.70-1~bpo10+1 (2021-10-10)
سمة نظام التشغيل
Adwaita-dark / Adwaita
ملف برنامج التطبيق
/snap/firefox/777/usr/lib/firefox/firefox
الاسم
Firefox Developer Edition
الإصدار
96.0b10
معرف البناء
20211228195952
دليل التحديث
/opt/firefox-dev-autoinstall
قناة التحديث
aurora
وكيل المستخدم
Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0
نظام التشغيل
Linux 5.10.0-0.bpo.9-amd64 #1 SMP Debian 5.10.70-1~bpo10+1 (2021-10-10)