Panorama-tab-groups: يعد تبديل مجموعات علامات التبويب بطيئًا ويستهلك الكثير من الموارد حقًا

تم إنشاؤها على ٢٩ ديسمبر ٢٠١٨  ·  7تعليقات  ·  مصدر: projectdelphai/panorama-tab-groups

هل هناك على أي حال يمكن إصلاح هذا؟

التعليق الأكثر فائدة

أرى من الشفرة أنه يتم إعادة تحميل الصفحة في كل مرة يتم فيها التبديل إلى عرض مجموعة علامات التبويب. عندما يتم تشغيل حدث visibilitychange لأن المستند مرئي ( document.hidden === false ) فإنه يستدعي captureThumbnails لكل علامة تبويب ، ثم يعيد تحميل الصفحة ثم يستدعي captureThumbnails تكرارا. يقوم بتخزين الصور المصغرة في الجلسة ، لكنه لا يقوم بتحميلها أبدًا. لذلك ، هناك مجال للتحسين هنا:

  • لا تعيد تحميل الصفحة في كل مرة يتم عرضها
  • لا تلتقط الصور المصغرة مباشرة قبل إعادة تحميل الصفحة
  • ابحث عن الصور المصغرة من الجلسة بدلاً من الالتقاط مرة أخرى (أو لا تحفظها في الجلسة ، إذا لم تكن هناك حاجة)

يمكنني إلقاء نظرة على هذه إذا كنت تريد

ال 7 كومينتر

🤔 لقد واجهت تبديلًا أبطأ قليلاً مع العديد من المجموعات.

هل لك أن تخبرنا ببعض الأرقام من فضلك؟

كم عدد المجموعات / علامات التبويب لديك؟
كيف تقيس كثافة الموارد؟

لدي مجموعتان ، إحداهما بها 219 علامة تبويب ، والأخرى بها ست علامات.

تبدأ المراوح الموجودة على نظامي في الدوران وإذا كنت أقوم بتشغيل الصوت عبر وضع القارئ. يتوقف الصوت ويتلعثم.

النظام: Nightly، Fedora 29، Intel® Core ™ i7-4710HQ CPU @ 2.50GHz × 8، GeForce GTX 860M / PCIe / SSE2.

أرى من الشفرة أنه يتم إعادة تحميل الصفحة في كل مرة يتم فيها التبديل إلى عرض مجموعة علامات التبويب. عندما يتم تشغيل حدث visibilitychange لأن المستند مرئي ( document.hidden === false ) فإنه يستدعي captureThumbnails لكل علامة تبويب ، ثم يعيد تحميل الصفحة ثم يستدعي captureThumbnails تكرارا. يقوم بتخزين الصور المصغرة في الجلسة ، لكنه لا يقوم بتحميلها أبدًا. لذلك ، هناك مجال للتحسين هنا:

  • لا تعيد تحميل الصفحة في كل مرة يتم عرضها
  • لا تلتقط الصور المصغرة مباشرة قبل إعادة تحميل الصفحة
  • ابحث عن الصور المصغرة من الجلسة بدلاً من الالتقاط مرة أخرى (أو لا تحفظها في الجلسة ، إذا لم تكن هناك حاجة)

يمكنني إلقاء نظرة على هذه إذا كنت تريد

سيكون ذلك رائعًا! شكرًا للنظر في هذا :) ما زلت في إجازات حتى مساء السبت بتوقيت المحيط الهادئ ، لذا أقدر كل العمل الذي تقومون به يا رفاق!

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

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

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

لذلك أعتقد أنني قد وجدت (أحد) المصادر الأكبر لهذا (على الأقل عند عدم التبديل إلى عرض البانوراما. هذه علبة الديدان الخاصة بها).

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

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

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات