Кирилл Чугаинов, iTechArt
Это событийно-управляемый веб-воркер, регистрируемый на уровне источника и пути.
Он может контролировать сайт, с которым ассоциируется, перехватывать и модифицировать запросы навигации и ресурсов.
Если говорить проще, то это программируемый сетевой проксификатор.
Service workers are opt-in in the next version of Create React App. They are an amazing technology but the pitfalls today are too significant to be a good default. Will revisit in a year or two! pic.twitter.com/UPqiLKnZzB
— Dan Abramov (@dan_abramov) January 19, 2018
Это событийно-управляемый worker. Он представляет собой JavaScript-файл, который может контролировать web-страницу/сайт, с которым он ассоциируется, перехватывать и модифицировать запросы навигации и ресурсов, кэшировать их, для того чтобы предоставить вам по лный контроль над тем, как приложение ведет себя в определенных ситуациях (например, когда сеть не доступна).
Это событийно-управляемый worker. Он представляет собой JavaScript-файл, который может контролировать web-страницу/сайт, с которым он ассоциируется, перехватывать и модифицировать запросы навигации и ресурсов, кэшировать их, для того чтобы предоставить вам полный контроль над тем, как приложение ведет себя в определенных ситуациях (например, когда сеть не доступна).
const filesForCache = [
'/styles/main.css'
'/scripts/script.js'
'/pictures/logo.png'
...
];
self.addEventListener('install', (e) => {
e.waitUntil(
caches.open('cache-name').then(function (cache) {
return cache.addAll(filesForCache);
})
);
});
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.open('cache-name').then((cache) =>
cache.match(event.request)
.then((matching) =>
matching || Promise.reject('no-match'))
))
});
navigator.serviceWorker.ready
.then(function(swRegistration) {
return swRegistration.sync.register('mySync');
});
self.addEventListener('sync', function(event) {
if (event.tag == 'mySync') {
event.waitUntil(doSomeStuff());
}
});
fetch(url, {
headers: {
Range: 'bytes=START_RANGE - END_RANGE / TOTAL'
}
});
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('./sw.js');
};
...
if ('SyncManager' in window) {
...
};
const cacheName =
self.cachePrefix + '-cache';