Пожалуйста, не отмечайте как дубликат. Это не является точной копией других подобных вопросов здесь, на SO. Он более конкретен c и полностью воспроизводим.
- Клон это репо.
yarn && yarn dev
- Go до
localhost:3000
и убедитесь, что в разделе (F12) -> Приложения-> Сервисные работники установлен сервисный работник. - Go на вкладку Сеть и несколько раз sh (F5)
- Наблюдайте, как удваиваются сетевые запросы.
Пример того, что я вижу:
Или, если вы хотите сделать это вручную, следуйте инструкциям ниже:
yarn create-next-app app_name
cd app_name && yarn
- в папке publi c, создайте файл с именем
service-worker.js
и вставьте следующий код:
addEventListener("install", (event) => {
self.skipWaiting();
console.log("Service worker installed!");
});
self.addEventListener("fetch", (event) => {
event.respondWith(
(async function () {
const promiseChain = fetch(event.request.clone()); // clone makes no difference
event.waitUntil(promiseChain); // makes no difference
return promiseChain;
})()
);
});
открыть
pages/index.js
и чуть ниже
import Head from "next/head";
вставить следующий код:
if (typeof window !== "undefined" && "serviceWorker" in navigator) {
window.addEventListener("load", function () {
// there probably needs to be some check if sw is already registered
navigator.serviceWorker
.register("/service-worker.js", { scope: "/" })
.then(function (registration) {
console.log("SW registered: ", registration);
})
.catch(function (registrationError) {
console.log("SW registration failed: ", registrationError);
});
});
}
yarn dev
go до
localhost:3000
и убедитесь, что работник службы был загружен в (F12) Приложения / Работники службы Go на вкладку Сеть и обновите страницу sh несколько раз. Посмотрите, как работник службы отправляет два запроса для каждого
Что мне нужно изменить в коде service-worker.js
, чтобы не было двойных запросов?