#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.