Кэш увеличивается с каждой загрузкой

#google-analytics #progressive-web-apps #service-worker #browser-cache #cachestorage

Вопрос:

Я работаю над своим веб-сайтом портфолио. Это PWA и есть сервисный работник. Я кэширую индексную страницу и все необходимые ресурсы индексной страницы с помощью service worker. Но когда я на самом деле тестирую его, размер кэша увеличивается с каждой загрузкой. После некоторых экспериментов я обнаружил, что проблема связана со скриптом Google Analytics, хотя я не уверен. Но я не могу найти способ это исправить. Я скопировал код непосредственно из Google Analytics. Затем, поскольку это не сработало, я попытался установить crossorigin="anonymous" . Тогда он также не работает.

Исходный код

Заранее спасибо!

Ответ №1:

Прямо сейчас обработчик вашего сервисного работника fetch безоговорочно применяет стратегию кэширования ко всем запросам, независимо от того, какой сервер задействован.

Если вы хотите избежать применения этой стратегии к запросам, отправляемым на сторонние серверы, такие как Google Analytics, вы можете выйти из fetch обработчика раньше, перед вызовом event.respondWith() . Если вы это сделаете, то нормальное поведение сети все равно будет применяться, и вы не получите никакого кэширования.

Предполагая, что все ресурсы, которые вы хотите кэшировать, обслуживаются с сервера того же происхождения, вы можете сделать это с помощью:

 self.addEventListener('fetch', (event) => {
  const url = new URL(event.request.url);
  if (url.origin !== location.origin) {
    return;
  }

  // event.respondWith() and the caching logic goes here.
});
 

Комментарии:

1. Спасибо, что решил проблему. Я просмотрел некоторые из ваших ответов и узнал, что вы написали о руководстве workbox. Вы сотрудник Google?

2. Да, я являюсь членом команды веб-разработчиков Google и сопровождающим Workbox.