Middle
Web işçileri nedir ve ne işe yararlar?
sobes.tech yapay zeka
AI'dan gelen yanıt
Web işçileri, arka plan akışlarında, ana kullanıcı arayüzü akışından ayrı olarak betiklerin çalıştırılmasının bir yoludur.
Ana amaçları:
- Performansı artırma: Kaynak yoğun görevleri (karmaşık hesaplamalar, büyük veri hacimlerinin işlenmesi, ayrıştırma) ana akıştan taşıyarak, arayüzün çiziminden ve kullanıcı olaylarının işlenmesinden sorumlu olan ana akıştan ayırmak. Bu, sayfanın donmasını önler ve uygulamanın yanıt verme kabiliyetini artırır.
- Paralelizm: Çok çekirdekli işlemcileri daha verimli kullanarak aynı anda birden fazla görev yapma imkanı sağlar.
Üç tür web işçisi vardır:
- Dedicated Workers: Belirli bir sayfaya bağlıdır ve sadece ona erişilebilir.
- Shared Workers: Birden fazla sayfa veya sekmeden erişilebilir.
- Service Workers: Ağ proxyleri gibi çalışır, ağ isteklerini yakalar ve çevrimdışı işlevsellik, push bildirimleri ve diğer gelişmiş web uygulaması (PWA) özelliklerini uygular.
Çalışma prensipleri:
- Ayrı bağlam: İşçi, kendi küresel nesnesine ve tarayıcı API'sinin alt kümesine erişime sahiptir (DOM,
window,document,parenterişimi yoktur). - Mesaj alışverişi: Ana akış ile işçi arasındaki etkileşim,
postMessage()veonmessageolay işleyicisi aracılığıyla gerçekleşir. Veriler değer (kopyalanmış) veya referans (Transferable Objects) yoluyla iletilir.
Dedicated Worker kullanımı örneği:
// main.js (ana akış)
const worker = new Worker('worker.js'); // İşçi oluştur
worker.onmessage = (event) => {
// İşçiden gelen mesajı işle
console.log('İşçiden alınan:', event.data);
};
worker.postMessage('Karmaşık işlemi başlat'); // İşçiye mesaj gönder
// worker.js (işçi dosyası)
onmessage = (event) => {
// Ana akıştan gelen mesajı işle
console.log('Ana akıştan alınan:', event.data);
// Karmaşık görevi gerçekleştir
let result = 0;
for (let i = 0; i < 1000000000; i++) {
result += i;
}
// Sonucu geri gönder
postMessage(result);
};