function(){navigator.serviceWorker.register('./static/sw.js').then(function(registration){// 注册成功console.log('ServiceWorker registration successful with scope: ',registration.scope);}).catch(function(err){// 注册失败:(console
Failed to fetch :3000/client/client.7f829def.js:1 GET http://localhost:3000/client/client.7f829def.js net::ERR_FAILED 3localhost/:17 GET http://localhost:3000/client/main.230008653.css net::ERR_FAILED Seems like there is some problem in service-worker config, but how can I fix this?
在fetch 事件侦听器中获取 Service Worker 范围 window.location.host, 但window在服务工作人员内部不可用。我还尝试使用 ServiceWorkerRegistration.scope (MDN doc),它将返回我想要的值,但这在 fetch 事件处理程序中也无法访问。 我希望有类似的东西event.scope(在注册处理程序中可用),但用于获取处理程序。这可能吗?
如前所述,service worker如果用于缓存则关键在于监听Fetch事件和管理Cache资源,不过在使用它们之前,得先把service worker激活才行。而service worker的激活则要经过以下步骤: 浏览器发现当前页面注册了service worker(通过navigator.service.Worker.register('/sw.js')); 浏览器下载sw.js并执行,完成安装阶段; service wo...
高级Service Worker 功能 除了基本的离线缓存,Service Workers 还支持一些高级功能,如网络优先策略、动态缓存更新和推送通知。 1. 网络优先策略 在网络可用时,优先使用网络响应,只有在网络失败时才使用缓存。这可以通过修改 fetch 事件处理程序实现: self.addEventListener('fetch', (event) => { event.respondWith( fe...
我已经制作了一个web应用程序,并在我的应用程序中使用了service worker。当它在线时,一切都很正常。当我们第一次运行应用程序时,所有的文件都被缓存了。但是当它离线时,我得到了这个错误。 代码语言:javascript 复制 Uncaught (in promise) TypeError: Failed to fetch 我不知道为什么会发生这个错误! 我使用pwabuild...
我在使用serviceWorker管理缓存,套路很一般,首先在active事件删除以前版本缓存,然后在fetch事件缓存新版本资源。在sw激活之前,已经删除了旧版cache。正常情况应该是新版本的cache里面的缓存文件的时间晚于cache的创建时间,并且获取的都是新版本的文件。但是问题出现了:新版本的cacheStorage里面居然有上一个版本的资源,导致页...
我使用服务工作者作为代理,它抛出了TypeError:无法以一种奇怪的方式随机获取。有时,const formData = await request.formData();会失败并抛出TypeError: Failed to fetch。我将文件存储在FormData中,await request.formData()在大多数情况下都工作得很好。但是,如果对特
传给waitUntil()的 promise 会阻塞其他的事件,直到它完成,因此你可以放心,当你在新的 service worker 中得到你的第一个fetch事件时,你的清理操作已经完成。 js constdeleteCache=async(key)=>{awaitcaches.delete(key);};constdeleteOldCaches=async()=>{constcacheKeepList=["v2"];constkeyList=awaitcaches.ke...
service worker 是一个JavaScript worker ,所以它不能直接访问 DOM 。但 service worker 可以通过postMessage 接口与跟其相关的页面进行通信,发送消息,从而让这些页面在有需要的时候去操纵 DOM 。 Service worker 是一个可编程的网络代理,允许你去控制如何处理页面的网络请求, 可以处理fetch请求。