Browser Support
في بعض الأحيان، تعلّق المتصفّحات الحديثة الصفحات أو تتجاهلها تمامًا عندما تكون موارد النظام محدودة. في المستقبل، ستسعى المتصفحات إلى تنفيذ ذلك بشكل استباقي، ما يؤدي إلى استهلاك أقل للطاقة والذاكرة. توفّر Page Lifecycle API خطافات دورة الحياة حتى تتمكّن صفحاتك من التعامل بأمان مع هذه الإجراءات التي يتّخذها المتصفّح بدون التأثير في تجربة المستخدم. اطّلِع على واجهة برمجة التطبيقات لمعرفة ما إذا كان عليك تنفيذ هذه الميزات في تطبيقك.
الخلفية
تُعد دورة حياة التطبيق إحدى الطرق الرئيسية التي تدير بها أنظمة التشغيل الحديثة الموارد. على أجهزة Android وiOS وأحدث إصدارات Windows، يمكن لنظام التشغيل بدء التطبيقات وإيقافها في أي وقت. ويسمح ذلك لهذه المنصات بتبسيط الموارد وإعادة تخصيصها في الأماكن التي تفيد المستخدم بشكل أفضل.
على الويب، لم تكن هناك دورة حياة من هذا النوع، ويمكن إبقاء التطبيقات نشطة إلى أجل غير مسمى. عند تشغيل عدد كبير من صفحات الويب، يمكن أن يتم استهلاك موارد النظام المهمة، مثل الذاكرة ووحدة المعالجة المركزية والبطارية والشبكة، بشكل مفرط، ما يؤدي إلى تجربة سيئة للمستخدم النهائي.
على الرغم من أنّ منصة الويب تتضمّن منذ فترة طويلة أحداثًا مرتبطة بحالات مراحل النشاط، مثل load وunload وvisibilitychange، فإنّ هذه الأحداث لا تسمح للمطوّرين إلا بالاستجابة لتغييرات حالات مراحل النشاط التي يبدأها المستخدم. لكي يعمل الويب بشكل موثوق على الأجهزة ذات الطاقة المنخفضة (ويكون أكثر مراعاة للموارد بشكل عام على جميع المنصات)، تحتاج المتصفحات إلى طريقة لاستعادة موارد النظام وإعادة تخصيصها بشكل استباقي.
في الواقع، تتّخذ المتصفّحات اليوم إجراءات نشطة للحفاظ على الموارد في الصفحات ضمن علامات التبويب في الخلفية، وتودّ العديد من المتصفّحات (خاصةً Chrome) أن تتّخذ المزيد من هذه الإجراءات للحدّ من استخدامها الإجمالي للموارد.
تكمن المشكلة في أنّه ليس لدى المطوّرين أي طريقة للاستعداد لهذه الأنواع من التدخّلات التي يبدأها النظام أو حتى معرفة أنّها تحدث. وهذا يعني أنّ المتصفّحات يجب أن تكون حذرة وإلا ستتسبّب في تعطّل صفحات الويب.
تحاول Page Lifecycle API حلّ هذه المشكلة من خلال:
- تقديم مفهوم حالات مراحل النشاط وتوحيده على الويب
- تحديد حالات جديدة يبدأها النظام وتسمح للمتصفحات بالحدّ من الموارد التي يمكن أن تستهلكها علامات التبويب المخفية أو غير النشطة
- إنشاء واجهات برمجة تطبيقات وأحداث جديدة تتيح لمطوّري الويب الاستجابة للانتقالات من وإلى هذه الحالات الجديدة التي يبدأها النظام
يوفّر هذا الحلّ إمكانية التوقّع التي يحتاجها مطوّرو الويب لإنشاء تطبيقات مقاومة لتدخّلات النظام، كما أنّه يتيح للمتصفّحات تحسين موارد النظام بشكل أكثر فعالية، ما يعود بالنفع في النهاية على جميع مستخدمي الويب.
في ما تبقّى من هذه المشاركة، سنتعرّف على ميزات "دورة حياة الصفحة" الجديدة ونستكشف علاقتها بجميع الحالات والأحداث الحالية لمنصة الويب. سيقدّم أيضًا توصيات وأفضل الممارسات بشأن أنواع العمل الذي يجب (ولا يجب) أن ينفّذه المطوّرون في كل حالة.
نظرة عامة على حالات وأحداث مراحل نشاط الصفحة
جميع حالات "دورة حياة الصفحة" منفصلة ولا تتداخل مع بعضها، ما يعني أنّه لا يمكن أن تكون الصفحة في أكثر من حالة واحدة في الوقت نفسه. ويمكن بشكل عام رصد معظم التغييرات التي تطرأ على حالة دورة حياة الصفحة من خلال أحداث نموذج المستند (DOM) (راجِع اقتراحات المطوّرين لكل حالة لمعرفة الاستثناءات).
ربما تكون أسهل طريقة لشرح حالات "دورة حياة الصفحة"، بالإضافة إلى الأحداث التي تشير إلى عمليات الانتقال بينها، هي باستخدام مخطط:
الولايات
يوضّح الجدول التالي كل حالة بالتفصيل. وتتضمّن أيضًا الحالات المحتملة التي يمكن أن تسبق الحالة الحالية وتليها، بالإضافة إلى الأحداث التي يمكن للمطوّرين استخدامها لمراقبة التغييرات.
| ولاية | الوصف |
|---|---|
| نشط |
تكون الصفحة في حالة نشطة إذا كانت مرئية ولديها تركيز الإدخال.
الحالات السابقة المحتملة: |
| غير نشط |
تكون الصفحة في حالة غير نشطة إذا كانت مرئية ولم يكن التركيز على الإدخال فيها.
الحالات السابقة المحتملة: |