Я хочу кэшировать "small_image.png", если screen.width мал и "big_image.png" в противном случае. Как я могу это сделать с помощью ServiceWorker?
Код ниже будет вызывать ReferenceError, потому что экран не определен в контексте рабочего рабочего.
self.addEventListener('install', function(e) {
e.waitUntil(
caches.open('stackoverflow').then(function(cache) {
if(screen.width <= 768){
return cache.addAll(lowResImages);
}else{
return cache.addAll(highResImages);
}
})
);
});
Такая информация доступна внутри вашего приложения- fetch
рабочего сервиса в качестве заголовка запроса, если у вас есть соответствующий подсказку клиента.
На данный момент он не отображается в ServiceWorkerGlobalScope
или внутри события, переданном обработчику install
.
В принципе, это означает, что вы сможете использовать эту информацию, если вы используете кэширование во время выполнения внутри вашего обработчика fetch
, но не при реализации предварительной подготовки внутри обработчика install
.