التعامل مع التدخلات الإعلانية الشديدة

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

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

معايير "الإعلانات ذات الاستهلاك المكثّف للموارد"

يُعدّ الإعلان ثقيلاً إذا لم يتفاعل معه المستخدم (مثلاً، لم ينقر عليه) واستوفى أيًا من المعايير التالية:

  • يستخدم سلسلة المحادثات الرئيسية لأكثر من 60 ثانية إجمالاً
  • يستخدم سلسلة المحادثات الرئيسية لأكثر من 15 ثانية في أي فترة 30 ثانية
  • يستخدم أكثر من 4 ميغابايت من معدّل نقل البيانات للشبكة

يتم احتساب جميع الموارد المستخدَمة من قِبل أي إطارات iframe فرعية من إطار الإعلان ضمن الحدود المسموح بها للتدخّل في هذا الإعلان. من المهم ملاحظة أنّ حدود الوقت المسموح بها في سلسلة التعليمات الرئيسية لا تتطابق مع الوقت المنقضي منذ تحميل الإعلان. تتعلّق الحدود بالمدة التي تستغرقها وحدة المعالجة المركزية لتنفيذ رمز الإعلان.

اختبار التدخّل

تم طرح هذه الميزة في الإصدار 85 من Chrome، ولكن بشكل تلقائي، يتم إضافة بعض التشويش والتغيُّر إلى الحدود الدنيا لحماية خصوصية المستخدم.

يؤدي ضبط chrome://flags/#heavy-ad-privacy-mitigations على إيقاف إلى إزالة هذه الحمايات، ما يعني تطبيق القيود بشكل حتمي وفقًا للحدود فقط. من المفترض أن يسهّل ذلك عملية تصحيح الأخطاء والاختبار.

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

يمكنك الاطّلاع على التدخّل الذي تم تطبيقه على عيّنة من المحتوى على heavy-ads.glitch.me. يمكنك أيضًا استخدام هذا الموقع الإلكتروني التجريبي لتحميل عنوان URL عشوائي كطريقة سريعة لاختبار المحتوى الخاص بك.

يُرجى العِلم عند إجراء الاختبار أنّ هناك عددًا من الأسباب التي قد تمنع تطبيق أي إجراء.

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

الإجراءات المطلوبة منك

عرض إعلانات من مقدّم خدمة تابع لجهة خارجية على موقعك الإلكتروني

ليس عليك اتّخاذ أي إجراء، ولكن عليك أن تعلم أنّه قد تتم إزالة الإعلانات التي تتجاوز الحدود المسموح بها عندما يتصفّح المستخدمون موقعك الإلكتروني.

تعرض إعلانات مباشرة على موقعك الإلكتروني أو تقدّم إعلانات للعرض على مواقع إلكترونية تابعة لجهات خارجية

تابِع القراءة للتأكّد من تنفيذ عملية المراقبة اللازمة من خلال Reporting API لعمليات التدخّل بشأن الإعلانات الثقيلة.

أن تنشئ محتوى إعلانيًا أو تحتفظ بأداة لإنشاء محتوى إعلاني

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

ماذا يحدث عند إزالة إعلان؟

يتم تسجيل التدخّل في Chrome من خلال Reporting API الذي يحمل الاسم المناسب، وذلك باستخدام نوع التقرير intervention. يمكنك استخدام Reporting API لتلقّي إشعارات بشأن عمليات التدخّل إما من خلال طلب POST إلى نقطة نهاية عملية الإبلاغ أو ضمن JavaScript.

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

لإعداد الصفحة لتقارير HTTP، يجب أن تتضمّن الاستجابة العنوان Report-To:

Report-To: { "url": "https://example.com/reports", "max_age": 86400 }

سيتضمّن طلب POST الذي تم تنشيطه تقريرًا على النحو التالي:

POST /reports HTTP/1.1
Host: example.com

Content-Type: application/report

[{
 "type": "intervention",
 "age": 60,
 "url": "https://example.com/url/of/ad.html",
 "body": {
   "sourceFile": null,
   "lineNumber": null,
   "columnNumber": null,
   "id": "HeavyAdIntervention",
   "message": "Ad was removed because its CPU usage exceeded the limit. See https://www.chromestatus.com/feature/4800491902992384"
 }
}]

توفّر واجهة برمجة تطبيقات JavaScript السمة ReportingObserver مع الطريقة observe() التي يمكن استخدامها لتفعيل دالة ردّ نداء تم توفيرها بشأن التدخّلات. يمكن أن يكون ذلك مفيدًا إذا كنت تريد إرفاق معلومات إضافية بالتقرير للمساعدة في تصحيح الأخطاء.

// callback that will handle intervention reports
function sendReports(reports) {
  for (let report of reports) {
    // Log the `report` json via your own reporting process
    navigator.sendBeacon('https://report.example/your-endpoint', report);
  }
}

// create the observer with the callback
const observer = new ReportingObserver(
  (reports, observer) => {
    sendReports(reports);
  },
  { buffered: true }
);

// start watching for interventions
observer.observe();

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

window.addEventListener('pagehide', (event) => {
  // pull all pending reports from the queue
  let reports = observer.takeRecords();
  sendReports(reports);
});

تذكَّر أنّه لحماية تجربة المستخدم، يفرض الحدث pagehide قيودًا على مقدار العمل الذي يمكن تنفيذه ضمنه. على سبيل المثال، ستؤدي محاولة إرسال fetch() طلب باستخدام التقارير إلى إلغاء هذا الطلب. يجب استخدام navigator.sendBeacon() لإرسال هذا التقرير، وحتى في هذه الحالة، يبذل المتصفّح أقصى جهد ممكن، ولكن لا يمكن ضمان إرسال التقرير.

يكون ملف JSON الناتج من JavaScript مشابهًا للملف الذي تم إرساله في طلب POST:

[
  {
    type: 'intervention',
    url: 'https://example.com/url/of/ad.html',
    body: {
      sourceFile: null,
      lineNumber: null,
      columnNumber: null,
      id: 'HeavyAdIntervention',
      message:
        'Ad was removed because its network usage exceeded the limit. See https://www.chromestatus.com/feature/4800491902992384',
    },
  },
];

تشخيص سبب التدخّل

محتوى الإعلان هو مجرد محتوى ويب، لذا استخدِم أدوات مثل Lighthouse لتدقيق الأداء العام للمحتوى. تقدّم عمليات التدقيق الناتجة إرشادات مضمّنة بشأن التحسينات. يمكنك أيضًا الرجوع إلى مجموعة web.dev/fast.

قد يكون من المفيد اختبار إعلانك في سياق أكثر عزلة. يمكنك استخدام خيار عنوان URL المخصّص على https://heavy-ads.glitch.me لاختبار ذلك باستخدام إطار iframe جاهز ومصنّف على أنّه إعلان. يمكنك استخدام "أدوات مطوّري البرامج في Chrome" للتأكّد من أنّه تم تصنيف المحتوى كإعلان. في لوحة العرض (يمكن الوصول إليها من خلال قائمة النقاط الثلاث ثم مزيد من الأدوات > العرض)، اختَر تمييز إطارات الإعلانات. إذا كنت تختبر المحتوى في النافذة ذات المستوى الأعلى أو في سياق آخر لا يتم فيه تصنيف المحتوى كإعلان، لن يتم تفعيل التدخّل، ولكن سيظل بإمكانك التحقّق يدويًا من الحدود.

تظهر حالة الإعلان في إطار أيضًا في لوحة العناصر حيث تتم إضافة تعليق توضيحي ad بعد علامة الفتح <iframe>. يمكنك أيضًا الاطّلاع على ذلك في لوحة التطبيق ضمن قسم اللقطات، حيث ستتضمّن اللقطات التي تمّت الإشارة إليها على أنّها إعلانات السمة "حالة الإعلان".

استخدام الشبكة

افتح لوحة الشبكة في &quot;أدوات مطوّري البرامج في Chrome&quot; للاطّلاع على نشاط الشبكة العام للإعلان. عليك التأكّد من وضع علامة في مربّع الاختيار "إيقاف ذاكرة التخزين المؤقت للحصول على نتائج متّسقة عند تكرار عمليات التحميل.

لوحة &quot;الشبكة&quot; في &quot;أدوات مطوّري البرامج&quot;
لوحة "الشبكة" في "أدوات مطوّري البرامج"

سيعرض لك المبلغ المحوّل في أسفل الصفحة المبلغ المحوّل للصفحة بأكملها. ننصحك باستخدام حقل الإدخال فلتر في أعلى الصفحة لحصر الطلبات على تلك المرتبطة بالإعلان فقط.

إذا عثرت على الطلب الأوّلي للإعلان، مثلاً، مصدر إطار iframe، يمكنك أيضًا استخدام علامة التبويب المصدر ضمن الطلب للاطّلاع على جميع الطلبات التي يؤدي إليها.

علامة التبويب &quot;بادئ التشغيل&quot; لأحد الطلبات
علامة التبويب "بادئ التشغيل" لطلب معيّن

يُعدّ ترتيب القائمة الإجمالية للطلبات حسب الحجم طريقة جيدة لرصد الموارد الكبيرة جدًا. وتشمل الأسباب الشائعة الصور والفيديوهات التي لم يتم تحسينها.

ترتيب الطلبات حسب حجم الردّ
ترتيب الطلبات حسب حجم الرد:

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

استخدام وحدة المعالجة المركزية (CPU)

ستساعدك لوحة الأداء في "أدوات مطوّري البرامج" على تشخيص المشاكل المتعلّقة باستخدام وحدة المعالجة المركزية. الخطوة الأولى هي فتح قائمة إعدادات الالتقاط. استخدِم القائمة المنسدلة وحدة المعالجة المركزية لتقليل سرعة وحدة المعالجة المركزية إلى أقصى حدّ ممكن. من المرجّح أن يتم تفعيل إجراءات التدخّل الخاصة بوحدة المعالجة المركزية (CPU) على الأجهزة ذات الطاقة المنخفضة أكثر من أجهزة التطوير المتطورة.

فعِّل التحكّم في الشبكة ووحدة المعالجة المركزية في لوحة &quot;الأداء&quot;.
فعِّل التحكّم في الشبكة وتقييد سرعة وحدة المعالجة المركزية (CPU) في لوحة "الأداء".

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

ملخّص لتتبُّع في لوحة &quot;الأداء&quot;
ملخّص لتتبُّع في "لوحة الأداء"

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

الترتيب حسب &quot;وقت التنفيذ الذاتي&quot; في علامة التبويب &quot;من الأسفل إلى الأعلى&quot;
رتِّب حسب "وقت التنفيذ الذاتي" في علامة التبويب "من الأسفل إلى الأعلى".

يتم أيضًا ربط ملف المصدر المرتبط هناك، ما يتيح لك تتبُّعه من خلال لوحة المصادر لفحص تكلفة كل سطر.

وقت التنفيذ المعروض في لوحة &quot;المصادر&quot;
وقت التنفيذ المعروض في لوحة "المصادر"

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

كيفية الإبلاغ عن تدخلات غير صحيحة

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