Zen*_*tzi 5 service-worker fetch-api progressive-web-apps next.js
请不要标记为重复。这与此处的其他类似问题并不完全相同。它更具体且完全可重现。
yarn && yarn devlocalhost:3000(F12)->Applications->Service Workers 并确保已安装 Service Worker。或者,如果您想手动执行此操作,请按照以下说明操作:
yarn create-next-app app_namecd app_name && yarnservice-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;
})()
);
});
Run Code Online (Sandbox Code Playgroud)
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);
});
});
}
Run Code Online (Sandbox Code Playgroud)
yarn devlocalhost:3000并确保 Service Worker 已加载到 (F12)Applications/Service Workers 下我需要在service-worker.js代码中更改哪些内容才能避免重复请求?
这是 Chrome DevTools 显示请求的方式,也是预期的。
存在从客户端 JavaScript 到 Service Worker 的资源请求以及从 Service Worker 到服务器的请求。除非服务工作人员缓存了响应并且不需要检查服务器是否有更新,否则这种情况总是会发生。
| 归档时间: |
|
| 查看次数: |
4016 次 |
| 最近记录: |