تاريخ النشر: 10 أغسطس 2023، تاريخ آخر تعديل: 14 يوليو 2026
سيتم إيقاف حدث unload نهائيًا بشكل تدريجي من خلال تغيير الإعدادات التلقائية تدريجيًا، ما يؤدي إلى توقّف معالِجات unload عن التنشيط على الصفحات ما لم يتم تفعيلها من جديد بشكل صريح.
المخطط الزمني للإيقاف النهائي
لاحظنا أنّ سلوك `unload` من المرجّح أن يخضع للتغييرات في وقت مبكر من يناير 2019، عندما أعلنّا عن نيتنا تنفيذ ذاكرة التخزين المؤقت للصفحات. بالتوازي مع عمل التنفيذ، أجرينا حملة توعية واسعة النطاق أدّت إلى انخفاض كبير في استخدام unload. ولاستكمال هذه الحملة، بدأنا أيضًا في تقديم طرق لاختبار تأثير إيقاف `unload` نهائيًا من Chrome 115:
- الاختبار في بيئة الإنتاج باستخدام Permission-Policy API لـ `unload` في Chrome 115 (يوليو 2023)
- الاختبار محليًا من خلال تفعيل علامة في Chrome 117 (سبتمبر 2023)
على مدار عام 2024، عالجنا العديد من المشاكل التي تعيق بدء عملية الطرح، وعلى مدار عام 2025، طرحنا عملية الإيقاف النهائي لأهم 50 موقعًا إلكترونيًا:
| الهدف | تاريخ الهدف | أهم 50 موقعًا إلكترونيًا | نسبة نقاط الانطلاق الأخرى |
|---|---|---|---|
| 135 | 26 مارس 2025 | 1 (www.google.com) |
0 |
| 139 | 30 يوليو 2025 | 5 | 0 |
| 140 | 27 أغسطس 2025 | 10 | 0 |
| 141 | 24 سبتمبر 2025 | 25 | 0 |
| 142 | 22 أكتوبر 2025 | 50 | 0 |
في عام 2026، بدأنا طرح هذه الميزة لجميع نقاط الانطلاق، على مدار أكثر من 8 أهداف (أو حوالي 32 أسبوعًا)، كما هو موضّح في الجدول التالي.
| الهدف | تاريخ الهدف | أهم 50 موقعًا إلكترونيًا | نسبة عمليات تحميل صفحات Chrome لجميع المواقع الإلكترونية |
|---|---|---|---|
| 146 | 10 مارس 2026 | 50 | 1 |
| 147 | 7 أبريل 2026 | 50 | 5 |
| 148 | 5 مايو 2026 | 50 | 10 |
| 149 | 2 يونيو 2026 | 50 | 20 |
| 150 | 30 يونيو 2026 | 50 | 40 |
| 151 | 28 يوليو 2026 | 50 | 60 |
| 152 | 25 أغسطس 2026 | 50 | 80 |
| 154 | 22 سبتمبر 2026 | 50 | 100 |
تستند عملية الطرح الكاملة إلى عمليات تحميل الصفحات (مع الثبات بمرور الوقت)، بدلاً من المستخدمين أو المواقع الإلكترونية الفردية، وذلك لتجنُّب التأثير في المستخدمين أو المواقع الإلكترونية أكثر من غيرها، كما هو موضّح في "إشعار الإيقاف النهائي".
يُرجى العِلم أنّنا نوفّر أيضًا قائمة بخيارات إيقاف الإعداد في حال عدم توفير هذا المخطط الزمني للإيقاف النهائي وقتًا كافيًا لنقل البيانات من `unload`.
خلفية
تم تصميم unload ليتم تنشيطه عند إلغاء تحميل المستند. من الناحية النظرية، يمكن استخدامه لتشغيل الرمز في أي وقت ينتقل فيه المستخدم من صفحة، أو كبرنامج معاودة الاتصال في نهاية الجلسة.
تشمل السيناريوهات التي تم فيها استخدام هذا الحدث بشكل شائع ما يلي:
- حفظ بيانات المستخدم: حفظ البيانات قبل مغادرة الصفحة
- تنفيذ مهام التنظيف: إغلاق الموارد المفتوحة قبل مغادرة الصفحة
- إرسال الإحصاءات: إرسال البيانات المتعلقة بتفاعلات المستخدم في نهاية الجلسة
ومع ذلك، فإنّ حدث unload غير موثوق به على الإطلاق.
على أجهزة الكمبيوتر المكتبي في Chrome وFirefox، يكون unload موثوقًا به إلى حد ما، ولكنّه يؤثر سلبًا في أداء الموقع الإلكتروني من خلال منع استخدام bfcache (ذاكرة التخزين المؤقت للصفحات).
على متصفّحات الأجهزة الجوّالة، غالبًا ما لا يتم تشغيل unload لأنّه يتم غالبًا نقل علامات التبويب إلى الخلفية ثم إغلاقها. لهذا السبب، تختار المتصفّحات منح الأولوية لذاكرة التخزين المؤقت للصفحات على الأجهزة الجوّالة بدلاً من unload، ما يجعلها أقل موثوقية. يستخدم Safari أيضًا هذا السلوك على أجهزة الكمبيوتر المكتبي.
يرى فريق Chrome أنّ استخدام نموذج الأجهزة الجوّالة لمنح الأولوية لذاكرة التخزين المؤقت للصفحات بدلاً من unload على أجهزة الكمبيوتر المكتبي سيؤدي إلى حدوث مشاكل من خلال جعله أقل موثوقية هناك أيضًا، في حين أنّه كان موثوقًا به إلى حد ما في Chrome (وFirefox) من قبل. بدلاً من ذلك، يهدف Chrome إلى إزالة حدث unload تمامًا. إلى أن يتم ذلك، سيظل موثوقًا به على أجهزة الكمبيوتر المكتبي في Chrome للمستخدمين الذين أوقفوا الإعداد بشكل صريح.
لماذا يتم إيقاف حدث unload نهائيًا؟
يُعدّ إيقاف unload نهائيًا خطوة أساسية في إدراك أكبر بكثير للويب الذي نستخدمه الآن. يمنح حدث unload إحساسًا زائفًا بالتحكّم في دورة حياة التطبيق، وهو ما لم يعُد صحيحًا بشكل متزايد في ما يتعلق بكيفية تصفّحنا للويب في عالم الحوسبة الحديث.
تُجمّد أنظمة تشغيل الأجهزة الجوّالة صفحات الويب أو تلغي تحميلها بشكل متكرر للحفاظ على الذاكرة، وتفعل متصفّحات أجهزة الكمبيوتر المكتبي ذلك بشكل متزايد الآن أيضًا للأسباب نفسها. حتى بدون تدخلات نظام التشغيل، غالبًا ما يبدّل المستخدمون علامات التبويب ويغلقون علامات التبويب القديمة بدون "مغادرة الصفحات" رسميًا.
تُعدّ إزالة حدث unload باعتباره قديمًا إقرارًا بأنّنا كمطوّري ويب بحاجة إلى التأكّد من أنّ نموذجنا يتطابق مع نموذج العالم الحقيقي وألا نعتمد على المفاهيم القديمة التي لم تعُد صحيحة، حتى لو كانت صحيحة في أي وقت مضى.
بدائل لأحداث unload
بدلاً من unload، يُنصح باستخدام ما يلي:
visibilitychange: لتحديد وقت تغيُّر مستوى ظهور الصفحة يحدث هذا الحدث عندما يبدّل المستخدم علامات التبويب أو يقلّل نافذة المتصفّح أو يفتح صفحة جديدة. ننصحك باعتبار حالةhiddenآخر وقت موثوق به لحفظ بيانات التطبيق والمستخدم.pagehide: لتحديد وقت انتقال المستخدم من الصفحة يحدث هذا الحدث عندما ينتقل المستخدم من الصفحة أو يُعيد تحميلها أو يُغلق نافذة المتصفّح. لا يتم تنشيط حدثpagehideعند تصغير الصفحة أو التبديل إلى علامة تبويب أخرى. يُرجى العِلم أنّه بما أنّpagehideلا يجعل الصفحة غير مؤهّلة لذاكرة التخزين المؤقت للصفحات، فمن الممكن استعادة الصفحة بعد تنشيط هذا الحدث. إذا كنت تنظّف أي موارد في هذا الحدث، فقد تحتاج إلى استعادتها عند استعادة الصفحة.
يختلف الحدث beforeunload قليلاً عن unload في حالة الاستخدام، لأنّه حدث قابل للإلغاء. غالبًا ما يُستخدم لتحذير المستخدمين من التغييرات غير المحفوظة عند الانتقال من الصفحة. هذا الحدث غير موثوق به أيضًا لأنّه لن يتم تنشيطه إذا تم إغلاق علامة تبويب في الخلفية. يُنصح بالحدّ من استخدام beforeunload وإضافته بشكل مشروط فقط. بدلاً من ذلك، استخدِم الأحداث المذكورة سابقًا لمعظم بدائل unload.
لمزيد من التفاصيل، يُرجى الاطّلاع على هذه النصيحة بشأن عدم استخدام المعالِج unload.
رصد استخدام unload
هناك أدوات مختلفة لمساعدتك في العثور على مواضع ظهور حدث unload على الصفحات. يسمح ذلك للمواقع الإلكترونية باكتشاف ما إذا كانت تستخدم هذا الحدث، سواء في الرمز الخاص بها أو باستخدام المكتبات، وبالتالي قد تتأثر بعملية الإيقاف النهائي القادمة.
أدوات مطوري البرامج في Chrome
أدوات مطوري البرامج في Chrome تتضمّن عملية back-forward-cache تدقيق لمساعدتك في تحديد المشاكل التي قد تمنع صفحتك من أن تكون مؤهّلة لذاكرة التخزين المؤقت للصفحات، بما في ذلك استخدام معالِج unload.
لاختبار ذاكرة التخزين المؤقت للصفحات، اتّبِع الخطوات التالية:
على صفحتك، افتح "أدوات مطوري البرامج"، ثم انتقِل إلى التطبيق > الخدمات في الخلفية > ذاكرة التخزين المؤقت للصفحات.
انقر على اختبار ذاكرة التخزين المؤقت للصفحات ينقلك Chrome تلقائيًا إلى
chrome://terms/ثم يعيدك إلى صفحتك. بدلاً من ذلك، يمكنك النقر على زرَّي الرجوع والتقديم في المتصفّح.
إذا لم تكن صفحتك مؤهّلة للتخزين المؤقت للصفحات، ستعرض لك علامة التبويب ذاكرة التخزين المؤقت للصفحات قائمة بالمشاكل. ضِمن إجراء قابل للتنفيذ، يمكنك معرفة ما إذا كنت تستخدم unload
Reporting API
يمكن استخدام Reporting API بالتزامن مع سياسة أذونات للقراءة فقط لرصد استخدام unload من قِبل مستخدمي موقعك الإلكتروني.
لمزيد من التفاصيل، يُرجى الاطّلاع على استخدام Reporting API للعثور على عمليات إلغاء التحميل
Bfcache notRestoredReasons API
تعرض السمة notRestoredReasons، التي تمت إضافتها إلى فئة PerformanceNavigationTiming، معلومات عمّا إذا تم منع المستندات من استخدام ذاكرة التخزين المؤقت للصفحات bfcache أثناء التنقّل، والسبب في ذلك. في ما يلي مثال على شكل التحذير في عنصر الرد بشأن مستمع unload حالي:
{
children: [],
id: null,
name: null,
reasons: [
{"reason", "unload-listener"}
],
src: null,
url: "https://www.example.com/page/"
}
التحكّم في الوصول إلى unload
يُوقف Chrome حدث unload نهائيًا بشكل تدريجي. في الوقت الحالي، يمكنك استخدام أدوات مختلفة للتحكّم في هذا السلوك والاستعداد لعملية الإيقاف النهائي القادمة. يُرجى العِلم أنّه يجب ألا تعتمد على هذه التقنيات على المدى الطويل، وعليك التخطيط لنقل البيانات إلى البدائل في أقرب وقت ممكن.
تسمح لك الخيارات التالية بتفعيل معالِجات unload أو إيقافها لاختبار كيفية عمل موقعك الإلكتروني بدونها، ما يتيح لك الاستعداد لعملية الإيقاف النهائي القادمة. هناك أنواع مختلفة من السياسات:
- سياسة الأذونات: هي واجهة برمجة تطبيقات منصة تتيح لمالكي المواقع الإلكترونية التحكّم في الوصول إلى الميزات، على مستوى الموقع الإلكتروني أو صفحة فردية، باستخدام عناوين HTTP.
- سياسات المؤسسات: هي أدوات لمشرفي تكنولوجيا المعلومات لإعداد Chrome لمؤسستهم أو شركتهم. يمكن إعدادها باستخدام لوحة مشرف، مثل "وحدة تحكّم المشرف في Google".
- الميزات التجريبية في Chrome: تسمح هذه الميزة لمطوّر فردي بتغيير إعداد الإيقاف النهائي لـ
unloadلاختبار التأثير في مواقع إلكترونية مختلفة.
سياسة الأذونات
تمت إضافة سياسة أذونات من Chrome 115 للسماح للمواقع الإلكترونية بإيقاف استخدام unload والاستفادة فورًا من ذاكرة التخزين المؤقت للصفحات لتحسين أداء الموقع الإلكتروني. يمكنك الاطّلاع على هذه الأمثلة حول كيفية ضبط هذه السياسة لموقعك الإلكتروني. يسمح ذلك للمواقع الإلكترونية بالاستعداد لعملية الإيقاف النهائي لـ unload.
تم توسيع نطاق هذه السياسة في Chrome 117 للسماح للمواقع الإلكترونية بفعل العكس، والموافقة على الاستمرار في محاولة تنشيط معالِجات unload كما تفعل الآن، لأنّ Chrome يغيّر الإعدادات التلقائية لهذه المعالِجات لعدم تنشيطها في المستقبل. يمكنك الاطّلاع على هذه الأمثلة حول كيفية الاستمرار في السماح بتنشيط معالِجات `unload` لموقعك الإلكتروني. على الرغم من أنّنا ننصح مالكي المواقع الإلكترونية بالتوقف عن استخدام معالِجات unload نظرًا لعدم موثوقيتها، فإنّنا نخطط لدعم خيار إيقاف الإعداد هذا في المستقبل القريب للمواقع الإلكترونية التي تحتاج إلى استخدامه. يُرجى العِلم أنّ إعادة تفعيل الإعداد لا تجعل معالِجات unload أكثر موثوقية على الأجهزة الجوّالة، بل تستعيد الوضع الراهن فقط.
سياسة المؤسسات
يمكن للمؤسسات التي لديها برامج تعتمد على حدث unload لتعمل بشكل صحيح استخدام سياسة ForcePermissionPolicyUnloadDefaultEnabled لمنع الإيقاف النهائي التدريجي للأجهزة الخاضعة لسيطرتها. من خلال تفعيل هذه السياسة، سيظل unload مفعّلاً تلقائيًا لجميع نقاط الانطلاق. قد تضبط الصفحة سياسة أكثر صرامة إذا أرادت ذلك. على غرار خيار إيقاف سياسة الأذونات، تُعدّ هذه السياسة أداة للحدّ من التغييرات المحتملة التي قد تؤدي إلى حدوث مشاكل. ننصحك مرة أخرى مالكي المواقع الإلكترونية بالتوقف عن الاعتماد على معالِجات unload، ولكن يخطط Chrome لدعم خيار إيقاف الإعداد هذا للمؤسسات في المستقبل القريب للمواقع الإلكترونية التي تحتاج إلى استخدامه.
الميزات التجريبية في Chrome ومفاتيح سطر الأوامر
بالإضافة إلى سياسة المؤسسات، يمكنك إيقاف الإيقاف النهائي للمستخدمين الفرديين باستخدام الميزات التجريبية في Chrome ومفاتيح سطر الأوامر:
سيؤدي ضبط chrome://flags/#deprecate-unload على enabled إلى تقديم الإعدادات التلقائية للإيقاف النهائي ومنع تنشيط معالِجات unload. لا يزال من الممكن إلغاؤها على أساس كل موقع إلكتروني على حدة باستخدام سياسة الأذونات، ولكن سيستمر تنشيطها تلقائيًا.
يمكن أيضًا التحكّم في هذه الإعدادات من خلال مفاتيح سطر الأوامر.
مقارنة الخيارات
يلخّص الجدول التالي الاستخدامات المختلفة للخيارات التي تمت مناقشتها سابقًا:
| تقديم الإيقاف النهائي | تقديم الإيقاف النهائي (مع استثناءات) | منع الإيقاف النهائي لتأمين وقت لنقل البيانات | |
|---|---|---|---|
| سياسة الأذونات (تنطبق على الصفحات/المواقع الإلكترونية) |
نعم | نعم | نعم |
| سياسة المؤسسات (تنطبق على الأجهزة) |
لا | لا | نعم |
| الميزات التجريبية في Chrome (تنطبق على المستخدمين الفرديين) |
نعم | لا | لا |
| مفاتيح سطر الأوامر في Chrome (تنطبق على المستخدمين الفرديين) |
نعم | لا | نعم |
الخاتمة
يتم إيقاف معالِجات unload نهائيًا. لقد كانت غير موثوق بها لفترة طويلة وليس من المضمون تنشيطها في جميع الحالات التي يتم فيها إتلاف مستند. بالإضافة إلى ذلك، فإنّ معالِجات unload غير متوافقة مع bfcache.
على المواقع الإلكترونية التي تستخدم معالِجات unload الاستعداد لعملية الإيقاف النهائي القادمة من خلال اختبار أي معالِجات unload حالية أو إزالتها أو نقلها أو، كحل أخير، تأخير عملية الإيقاف النهائي إذا كانت هناك حاجة إلى مزيد من الوقت.
الإقرارات
نشكر كلاً من Kenji Baheux وFergal Daly وAdriana Jara وJeremy Wagner على ملاحظاتهم المفيدة أثناء المراجعة.
الصورة الرئيسية من قِبل Anja Bauermann على Unsplash