علامات التبويب في الخلفية في Chrome 57

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

تحسين تطبيق للخلفية

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

بالنسبة إلى بعض المواقع الإلكترونية، من خلال هذا التحسين البسيط، يمكنك تقليل استخدام وحدة المعالجة المركزية (CPU) بنسبة تصل إلى %75:

var doVisualUpdates = true;

document.addEventListener('visibilitychange', function(){
    doVisualUpdates = !document.hidden;
});

function update() {
    if (!doVisualUpdates) {
    return;
    }
    doStuff();
}

السياسات

requestAnimationFrame()‎

وفقًا للمستندات: لا يستدعي Chrome requestAnimationFrame() عندما تكون صفحة في الخلفية. ويتم تطبيق هذا السلوك منذ عام 2011.

محاذاة الموقّت في الخلفية

بدايةً من الإصدار Chrome 11، كل موقت مستقل لا يتم تشغيله أكثر من مرة في الثانية. يشغّل Chrome هذه الموقّتات على دفعات مرة في الثانية، مما يضمن الحفاظ على الحد الأدنى لعدد عمليات التنشيط العملية. تُعتبر الصفحات التي تشغّل صوتًا مسموعًا مرئية للمستخدم ومستثناة من موقّت الخلفية. تقييد البيانات. يستمر هذا الاستثناء لعدة ثوانٍ بعد إيقاف تشغيل الصوت للسماح للتطبيقات بإضافة المقطع الصوتي التالي إلى "قائمة المحتوى التالي".

يُرجى العِلم أنّ الصوت يُعد مسموعًا عندما يعرض Chrome رمز الصوت فقط. لا تمنح عمليات بث الصوت بدون صوت إعفاءات.

تقييد مؤقتات الخلفية المستندة إلى الميزانية

تم طرح هذه الميزة في الإصدار 57 من Chrome، ويشكّل تقييد الموقّت المستنِد إلى الميزانية إضافة أخرى إلى آلية مواءمة الموقّت، ويفرض حدًا إضافيًا على استخدام وحدة المعالجة المركزية للموقّت في الخلفية. وتعمل هذه الميزة على النحو التالي:

  • تحتوي كل علامة تبويب في الخلفية على ميزانية زمنية (بالثواني) لتشغيل الموقّتات في الخلفية.
  • تخضع الصفحة لقيود الميزانية الزمنية بعد مرور 10 ثوانٍ في الخلفية.
  • لا يُسمح بتنفيذ مهمة الموقّت إلا عندما تكون الميزانية الزمنية غير سالبة.
  • بعد تنفيذ الموقّت، يتم طرح وقت تشغيله من الميزانية.
  • يتم تجديد الميزانية باستمرار مع مرور الوقت (المضبوطة حاليًا على معدل 0.01 ثانية في الثانية). تجدر الإشارة إلى أنّه يمكن تعديل معدل إعادة إنشاء الميزانية هذا يجمع Chrome المزيد من البيانات عن سلوك التقييد.

هناك عدد من الاستثناءات التلقائية من هذا التقييد:

  • وتُعد التطبيقات التي تشغّل المحتوى الصوتي مقدمة ولا يتم تقييدها.
  • التطبيقات التي تستخدم اتصالات في الوقت الفعلي (WebSockets وWebRTC)، لتجنُّب إغلاق هذه الاتصالات بسبب انتهاء المهلة ولا تزال قاعدة "وقت التشغيل مرة واحدة في الثانية" تطبيقه في هذه الحالات.

يُرجى العِلم أنّ هذه الآلية تستخدِم الوقت الفعلي، وليس وقت وحدة المعالجة المركزية. وهي تقريبية جيدة لوقت وحدة المعالجة المركزية وتفرض عقوبة على حظر سلسلة التعليمات الرئيسية لعدة ساعات.

وأخيرًا، تذكر أنه إذا كنت تستخدم مهامًا طويلة في الخلفية، فإن تطبيقك لفترة طويلة جدًا (بما يصل إلى 100 ضعف مدة مهمتك). قسّم عملك إلى أجزاء تبلغ مدتها 50 ملّي ثانية أو أقلّ إرشادات الأداء واستخدِم أداة معالجة الحدث visibilityChange لتجنُّب القيام بعمل غير ضروري في الخلفية.

عمليات الإيقاف

يقدّم Chrome العلامة --disable-background-timer-throttling لحالات الاستخدام، مثل تشغيل مجموعات الاختبار والعمليات الحسابية الثقيلة الأخرى التي يوافق عليها المستخدم.