Sobes.tech
Middle

Veb işçiləri nədir və onlar nə üçün lazımdır?

sobes.tech Süni İntellekt

AI-dan cavab

Veb işçiləri, brauzerin əsas UI axışından ayrılmış arxa plan axışında JavaScript kodunu işə salmağın bir yoludur.

Məqsəd:

  • Resurs tələbatlı hesablamaları əsas axışı bloklamadan yerinə yetirmək, bu da interfeysin donmasını qarşısını alır.
  • Böyük məlumatların işlənməsi və ya uzunmüddətli əməliyyatların (məsələn, parsing, sıxışdırma, bəzi hallarda şəbəkə sorğuları) arxa planda həyata keçirilməsi.
  • Veb tətbiqlərinin performansını və cavabvermə qabiliyyətini artırmaq.

Veb işçilərinin növləri:

  1. Dedicated Worker: Onu yaradan skriptlə əlaqəlidir.
  2. Shared Worker: Eyni domen daxilində müxtəlif pəncərələr və ya sekmələrdə işləyən bir neçə skript arasında paylaşa bilər.
  3. Service Worker: Şəbəkə sorğularını yakalayır, keşi idarə edir, offline giriş təmin edir, push bildirişlərini dəstəkləyir.

Dedicated Worker yaradılması və istifadəsi nümunəsi:

// main.js (əsas axış)
const worker = new Worker('worker.js');

// İşçiyə mesaj göndərmək
worker.postMessage('Çəkli hesablamaları başlat');

// İşçidən mesaj alma
worker.onmessage = function(event) {
  console.log('İşçidən alınan:', event.data);
};

// worker.js (işçi kodu)
self.onmessage = function(event) {
  console.log('İşçidə alınan:', event.data);

  // Çəkli hesablamaların simulyasiyası
  let result = 0;
  for (let i = 0; i < 1000000000; i++) {
    result += i;
  }

  // Nəticəni əsas axışa geri göndərmək
  self.postMessage('Hesablamalar tamamlandı, nəticə: ' + result);
};

Məhdudiyyətlər:

  • DOM-ya birbaşa giriş yoxdur.
  • Əsas axışın bəzi qlobal dəyişənləri (məsələn, window, document) istifadə edilə bilməz.
  • Əlaqə, asinxron mesaj mübadiləsi vasitəsilə həyata keçirilir (postMessageonmessage/addEventListener('message')).
  • Məlumatlar, kopyalama (structured clone algorithm) yolu ilə ötürülür, lakin böyük məlumatlar üçün Transferable Objects istifadə edilə bilər, bu da göndərməyi referansla həyata keçirir (orijinal axışda erişimi itirir).