Service Worker кэширует изображения разных размеров в зависимости от разрешения экрана

1

Я хочу кэшировать "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);
            }
        })
    );
});
Теги:
caching
service-worker

1 ответ

1

Такая информация доступна внутри вашего приложения- fetch рабочего сервиса в качестве заголовка запроса, если у вас есть соответствующий подсказку клиента.

На данный момент он не отображается в ServiceWorkerGlobalScope или внутри события, переданном обработчику install.

В принципе, это означает, что вы сможете использовать эту информацию, если вы используете кэширование во время выполнения внутри вашего обработчика fetch, но не при реализации предварительной подготовки внутри обработчика install.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню