Middle
Web işçileri nedir ve ne işe yararlar?
sobes.tech yapay zeka
AI'dan gelen yanıt
Web işçileri, tarayıcının ana kullanıcı arayüzü akışından ayrı, arka planda JavaScript kodu çalıştırmanın bir yoludur.
Amacı:
- Kaynak yoğun hesaplamaları, ana akışı engellemeden gerçekleştirmek, böylece arayüzün donmasını önlemek.
- Büyük veri işlemleri veya uzun süren işlemleri (örneğin, ayrıştırma, sıkıştırma, bazı durumlarda ağ istekleri) arka planda yapmak.
- Web uygulamalarının performansını ve yanıt verme kabiliyetini artırmak.
Web işçilerinin türleri:
- Dedicated Worker: Oluşturan betiğe bağlıdır.
- Shared Worker: Aynı alan adındaki farklı pencerelerde veya sekmelerde çalışan birkaç betik arasında paylaşılabilir.
- Service Worker: Ağ isteklerini yakalar, önbelleği yönetir, çevrimdışı erişim sağlar, push bildirimlerini destekler.
Dedicated Worker oluşturma ve kullanma örneği:
// main.js (ana akış)
const worker = new Worker('worker.js');
// İşçiye mesaj gönder
worker.postMessage('Ağır hesaplamalara başla');
// İşçiden mesaj al
worker.onmessage = function(event) {
console.log('İşçiden alınan:', event.data);
};
// worker.js (işçi kodu)
self.onmessage = function(event) {
console.log('İşçide alınan:', event.data);
// Ağır hesaplamaların simülasyonu
let result = 0;
for (let i = 0; i < 1000000000; i++) {
result += i;
}
// Ana akışa geri mesaj gönder
self.postMessage('Hesaplamalar tamamlandı, sonuç: ' + result);
};
Kısıtlamalar:
- DOM'ye doğrudan erişim yok.
- Ana akışın bazı küresel değişkenleri (örneğin,
window,document) kullanılamaz. - İletişim, asenkron mesaj alışverişi yoluyla gerçekleşir (
postMessageveonmessage/addEventListener('message')). - Veriler, kopyalama (structured clone algoritması) yoluyla iletilir, ancak büyük veriler için
Transferable Objectskullanılarak referansla iletim yapılabilir (kayba yol açar).