عامل الويب

يُعرَّف عامل الويب ، وفقًا لاتحاد شبكة الويب العالمية (W3C) ومجموعة عمل تقنية تطبيقات النص التشعبي للويب (WHATWG)، بأنه نص برمجي بلغة جافا سكريبت يُنفَّذ من صفحة HTML ويعمل في الخلفية ، بشكل مستقل عن النصوص البرمجية الأخرى التي قد تُنفَّذ أيضًا من نفس صفحة HTML. [ 1 ] غالبًا ما يكون عامل الويب قادرًا على استخدام وحدات المعالجة المركزية متعددة النوى بكفاءة أكبر. [ 2 ]

تعتبر كل من W3C وWHATWG تقنية Web Workers بمثابة برامج نصية طويلة الأمد لا تتأثر بتفاعلات المستخدمين أو النقرات. ومن شأن منع هذه البرامج من التأثر بأنشطة المستخدمين أن يسمح لصفحات الويب بالبقاء سريعة الاستجابة أثناء تشغيلها للمهام الطويلة في الخلفية.

تُعدّ مواصفات عامل الويب جزءًا من معيار HTML الحي. [ 1 ]

ملخص

كما تصورت مجموعة عمل الويب (WHATWG)، فإنّ عمال الويب ثقيلون نسبيًا ولا يُقصد استخدامهم بأعداد كبيرة. ومن المتوقع أن يكونوا طويلي العمر، مع تكلفة أداء عالية عند بدء التشغيل، وتكلفة ذاكرة عالية لكل مثيل. [ 1 ]

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

سمات

تتفاعل برامج Web Workers مع المستند الرئيسي عبر تمرير الرسائل . ينشئ الكود التالي برنامج Worker يقوم بتنفيذ جافا سكريبت في الملف المحدد.

var worker = new Worker ( "worker_script.js" );

لإرسال رسالة إلى العامل، postMessageيتم استخدام طريقة كائن العامل كما هو موضح أدناه.

worker.postMessage ( "Hello World! " ) ;

تستخدم الخاصية onmessageمعالج الأحداث لاسترداد المعلومات من عامل.

worker.onmessage = function ( event ) { alert ( "تم استلام رسالة " + event.data ) ; doSomething ( ); } function doSomething ( ) { // تنفيذ العمل worker.postMessage ( "تم إنجاز العمل!" ) ; }worker . terminate ();

بمجرد إنهاء عامل، فإنه يخرج عن النطاق ويصبح المتغير الذي يشير إليه غير معرف؛ عند هذه النقطة يجب إنشاء عامل جديد إذا لزم الأمر.

مثال

أبسط استخدام لتقنية Web Workers هو أداء مهمة مكلفة حسابيًا دون مقاطعة واجهة المستخدم.

في هذا المثال، يقوم المستند الرئيسي بإنشاء عامل ويب لحساب الأعداد الأولية ، ويعرض تدريجياً أحدث عدد أولي تم العثور عليه.

الصفحة الرئيسية هي كالتالي:

< ! DOCTYPE html > <html> <head> <title> مثال العامل : حساب أحادي النواة < / title > </head> <body> <p> أكبر عدد أولي تم اكتشافه حتى الآن هو : < output id = " result " > </output> </p> <script> var worker = new Worker ( ' worker.js ' ) ; worker.onmessage = function ( event ) { document.getElementById ( ' result ' ) . textContent = event.data ; } ; </script> </body> </html>

يُنشئ استدعاء Worker()الدالة البانية عامل ويب ويعيد workerكائنًا يُمثله، ويُستخدم هذا الكائن للتواصل مع عامل الويب. onmessageيسمح معالج الأحداث الخاص بهذا الكائن للبرنامج باستقبال الرسائل من عامل الويب.

فيما يلي تفاصيل برنامج Web Worker:

var n = 1 ; var end_value = 10 ** 7 ; search : while ( n <= end_value ) { n ++ ; for ( var i = 2 ; i <= Math.sqrt ( n ); i ++ ) if ( n % i == 0 ) continue search ; // تم العثور على عدد أولي! postMessage ( n ); }

لإرسال رسالة إلى الصفحة، postMessage()تُستخدم هذه الطريقة لنشر رسالة عند العثور على عدد أولي. [ 1 ]

يدعم

إذا كان المتصفح يدعم تقنية Web Workers، فستكون خاصية Worker متاحة في كائن النافذة العام. [ 3 ] ستكون خاصية Worker غير مُعرَّفة إذا كان المتصفح لا يدعمها.

يتحقق مثال التعليمات البرمجية التالي من دعم تقنية Web Worker في المتصفح

function browserSupportsWebWorkers ( ) { return typeof window.Worker === "function " ; }

يدعم متصفحا Chrome و Opera و Edge و Internet Explorer (الإصدار 10) و Mozilla Firefox و Safari تقنية Web Workers حاليًا . [ 4 ] [ 5 ] [ 6 ] ويدعم متصفح Safari على نظام iOS تقنية Web Workers منذ الإصدار 5. أما متصفح Android ، فقد دعمها لأول مرة في الإصدار 2.1، ولكن تم إيقاف الدعم في الإصدارات من 2.2 إلى 4.3 قبل استعادته في الإصدار 4.4. [ 7 ] [ 8 ]

انظر أيضاً

مراجع

  1. 1 2 3 4 عمال الويب ، WHATWG ، تم الاطلاع عليه في 2 يناير 2023
  2. "معيار HTML الحي" . Html.spec.whatwg.org . 30 يناير 2017. تم الاطلاع عليه في 31 يناير 2017 .
  3. "HTML5 Up and Running" مارك بيلجريم. دار نشر أورايلي/جوجل. أغسطس 2010
  4. "تقديم HTML5"، لوسون، ب. وشارب، ر.، 2011.
  5. "HTML5 و CSS3" بريان ب. هوجان. شركة المبرمجين العمليين، 2010.
  6. "هل يمكنني استخدام... عامل الويب" . caniuse.com . تم الاطلاع عليه بتاريخ 30 سبتمبر 2019 .
  7. "تسليط الضوء: قياس أداء نظام أندرويد 2.1 باستخدام Web Workers - محرك Isogenic" . مؤرشف من الأصل بتاريخ 19 أكتوبر 2013. تم الاطلاع عليه بتاريخ 10 يوليو 2011 .
  8. "هل يمكنني استخدام... جداول الدعم لـ HTML5 وCSS3 وما إلى ذلك؟" . caniuse.com . تم الاطلاع عليه بتاريخ 10 يونيو 2017 .