Les Service Workers sont des scripts qui s'exécutent en arrière-plan d'une application Web, distincts du thread principal du navigateur. Ils activent les notifications push, la synchronisation en arrière-plan et les fonctionnalités hors ligne. Les techniciens de service fonctionnent comme intermédiaire entre l'application Web, le navigateur et le réseau. Voici des exemples de comment et quand les techniciens de service peuvent être utilisés :
Habituellement, lorsque vous visitez une page Web, la page Web envoie une requête au serveur, et le serveur vous renvoie les données :
Si vous avez un Service Worker enregistré, il sera ajouté comme middleware entre le navigateur Web et le serveur :
Il arrête la requête vers le serveur et décide si la requête est envoyée au serveur ou fonctionne hors ligne. Et au lieu de vous montrer une page 404 Not Found dans ce cas, vous pourrez voir la page entière hors ligne. Vous pouvez également créer des pages hors ligne personnalisées avec des techniciens de service.
S'il n'y a pas d'Internet sur votre ordinateur, une page d'erreur s'affichera.
Même s'il n'y a pas d'Internet, nous accéderons à la page Web avec un technicien de service.
ENREGISTRER → INSTALLER → ACTIVER → RÉCUPÉRER
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Home</title> <!-- Scripts --> <script src="main.js" defer></script> </head> <body> <!-- istalgan kodlaringizni yozishingiz mumkin... --> </body> </html>
nous avons connecté le fichier main.js au HTML.
main.js
// service worker browser tomonidan support qilinishini tekshirib olamiz if ('serviceWorker' in navigator) { // web sahifa browserga yuklanishi bilan ishlashini aytib o'tamiz window.addEventListener('load', () => { // 1. service workerni registratsiyadan o'tkazamiz. navigator.serviceWorker .register('sw.js') // bizda sm.js file ochib olishimiz kerak bo'ladi. va bu yerdagi register ushani target qiladi. .then((registration) => console.log('Service Worker registered with scope:', registration.scope) ) .catch((error) => { console.error('Service Worker registration failed:', error); }); }); }
sw.js
// browser kashda qanday nom nilan saqlanishini bildirish uchun nom beramiz const cacheName = 'my-cache-v1'; // Qaysi fayllarni kashlashini aytib o'tib ketamiz const cacheFiles = ['index.html', 'posts.html', 'css/style.css', 'js/main.js']; // 2. INSTALL qilamiz self.addEventListener('install', (event) => { event.waitUntil( // kashdan biz bergan nom bilan joy ochadi va bizni fayllarimizni joylaydi. caches.open(cacheName).then((cache) => cache.addAll(cacheFiles)) ); }); // 3. ACTIVATE qilish self.addEventListener('activate', () => { console.log('Server worker activated'); }); // 4. FETCH, ya'ni oflayn holatimizda kashlangan fillarni ko'rsatish uchun olish self.addEventListener('fetch', (event) => { event.respondWith( caches .match(event.request) .then((response) => response || fetch(event.request)) ); });
Après avoir effectué ce processus, nous pouvons voir que l'activation a eu lieu si nous allons dans la colonne Applications dans la section des outils de développement du navigateur et voyons la section Service Workers.
Quand nous passerons à la partie stockage du cache, nous obtiendrons les fichiers que nous avons marqués du nom que nous avons donné.
Et après avoir regardé ceux-ci, nous pouvons voir le résultat :
Comme vous pouvez le constater, cela fonctionne désormais hors ligne. À l'état hors ligne, le Service Worker le récupère à l'endroit qu'il nous a ouvert dans le cache Storage.
@abdulakhatov-dev
@AbdulakhatovDev
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!