1. Web Workers — Background Thread for Your JavaScript
Web Workers basically ek JavaScript ka separate background thread hai jo browser ke main thread ke parallel run hota hai.
Normal JS code main thread me run hota hai, jo HTML render, CSS apply, aur JS logic sab handle karta hai.
Agar tumhara JavaScript code heavy calculations kare (like big loops, image processing, data parsing) to main thread busy ho jaata hai, jisse UI freeze ho sakta hai.
Web Worker ka kaam:
- Ye heavy tasks ko main thread ke alag chala ke UI ko smooth rakhta hai.
- Ye ek completely isolated environment me run hota hai.
Ye Kaam Kaise Karta Hai ?
- Main thread → Browser ka main rendering process hota hai. Ye DOM, CSS, aur JS execute karta hai.
- Worker thread → Jab tum Web Worker banate ho, ye ek alag thread me run hota hai, jo main thread ke parallel kaam karta hai.
- Communication → Main thread aur worker thread ke beech direct variable sharing nahi hoti. Data send/receive hota hai message passing ke through (
postMessage()
andonmessage
). - No DOM Access → Worker directly HTML elements manipulate nahi kar sakta — iske liye message main thread me send karna padta hai.
Example :
// main.js
const worker = new Worker('worker.js');
worker.postMessage(1000000000); // worker ko large number send kiya
worker.onmessage = function(e) {
console.log("Worker result:", e.data);
};
console.log("Main thread free to handle UI!");
// worker.js
onmessage = function(e) {
const num = e.data;
let sum = 0;
for (let i = 0; i < num; i++) {
sum += i;
}
postMessage(sum); // main thread ko result bheja
};
Flow:
Main thread → Worker banata hai → Worker background me loop execute karta hai → Result main thread ko message ke through send hota hai.
Web Workers ke Fayde :
- UI ko block hone se bachata hai.
- Heavy computational tasks easily handle karta hai.
- Multi-threading ka basic form JavaScript me introduce karta hai.
Web Workers ke Limitations
- DOM ka direct access nahi.
- Files ko load karne me same-origin policy follow karni padti hai.
- Extra memory consume hoti hai (multiple threads).
Use Cases
- Image editing/filtering tools (e.g., Photoshop in browser)
- Large JSON file parsing without UI freeze
- Cryptography or password hashing
- Real-time data analytics in browser
2. Service Workers — Network & Offline Superpowers
Service Worker ek special type ka Web Worker hai jo network layer ke beech me kaam karta hai — tumhare browser aur server ke beech me ek proxy ki tarah.
Iska main kaam hota hai:
- Network requests intercept karna
- Offline experience dena by caching files
- Progressive Web Apps (PWA) banane me help karna
Ye Kaam Kaise Karta Hai ?
- Browser Register karta hai → Service Worker ko tum JS code me
navigator.serviceWorker.register()
se register karte ho. - Install phase → Service Worker tumhare app ke assets (HTML, CSS, JS, images) ko cache me store karta hai.
- Activate phase → Old cache delete hota hai aur new cache active hota hai.
- Fetch phase → Jab browser koi request karta hai, Service Worker check karta hai cache me file hai to waha se serve kare, otherwise network se fetch kare.
Important:
- Service Worker only HTTPS pe kaam karta hai (except localhost).
- Ye background me run hota hai aur DOM ka direct access nahi hota.
Example :
// register.js
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js').then(() => {
console.log('Service Worker Registered');
});
}
// sw.js
self.addEventListener('install', e => {
e.waitUntil(
caches.open('v1').then(cache => {
return cache.addAll([
'/',
'/index.html',
'/style.css',
'/script.js'
]);
})
);
});
self.addEventListener('fetch', e => {
e.respondWith(
caches.match(e.request).then(response => {
return response || fetch(e.request);
})
);
});
Service Workers ke Fayde :
- Website offline bhi kaam karti hai.
- Loading speed kaafi improve hota hai (cache use hone ki wajah se).
- Push notifications ka support deta hai.
- Background sync possible hota hai.
Service Workers ke Limitations :
- Setup aur debugging thoda complex ho sakta hai.
- HTTPS requirement mandatory hai.
- Storage space limited hota hai (browser specific).
Use
- PWA apps (Twitter Lite, Starbucks PWA)
- News websites with offline reading mode
- E-commerce apps with offline cart
- Background push notifications
Web Workers vs Service Workers Difference Table :
Feature | Web Worker | Service Worker |
---|---|---|
Purpose | Heavy JS processing without blocking UI | Offline support, caching, network control |
Runs in background | Yes | Yes |
DOM access | No | No |
Network intercept | No | Yes |
Life cycle events | No | Yes (install, activate, fetch) |
HTTPS requirement | No | Yes |
Use in PWA | No | Yes |
Message Passing | Yes | Yes |
File Caching | No | Yes |
Quiz: Test Your Knowledge on Web Workers & Service Workers
Bonus: Practical Application!
Aaj hi Web Workers & Service Workers ka use karke apne web applications ko aur fast aur responsive banayein!
Web Workers aapke JavaScript code ko background thread me run karte hain, jisse UI freeze nahi hota aur heavy tasks (jaise data processing, image manipulation) smoothly execute hote hain.
Service Workers background me chal kar offline capabilities, caching, aur push notifications jaise features provide karte hain — jo Progressive Web Apps (PWAs) ke liye backbone ka kaam karte hain.