gpt4 book ai didi

javascript - 有没有办法将一些值传递给服务人员以在安装步骤中使用?

转载 作者:行者123 更新时间:2023-11-28 18:18:34 24 4
gpt4 key购买 nike

有没有办法将值传递给服务工作人员,以便它可以在安装步骤中使用?

例如,如果您的网页资源位于基于项目发布版本的文件夹中 (resource-2.11/js/...)。有时您需要知道 resource-2.11 来缓存某些文件。这个值可以传入吗?

最佳答案

有几种不同的方法。

按照评论中的建议,在构建时生成 service-worker.js 文件可能是正确的方法。这样做的优点是可以确保每当版本前缀发生更改时都会触发 install 事件,因为对 service-worker.js 内容的任何更改都足以触发 service worker update .

但是,如果由于某种原因无法做到这一点,“如何将安装期间可用的值传递给服务 worker ”这一一般问题的另一个答案是使用 IndexedDB 。您可以从主页设置一个值,然后注册 Service Worker,然后 Service Worker 可以读取该值。您应该注意,从主页更改 IndexedDB 中的值将不会触发 Service Worker 更新。

最后,如果您希望在值发生变化时触发 Service Worker 更新,但由于某种原因您无法在构建期间修改 service-worker.js,则可以使用另一种方法步。就是将该值作为 URL 查询参数包含在内,当您从页面注册时,该值会附加到 service-worker.js 的末尾:

// From your web page:
if ('serviceWorker' in navigator) {
const value = encodeURIComponent('some-parameter-value');
const swUrl = `service-worker.js?_param=${value}`;
navigator.serviceWorker.register(swUrl);
}

// From your service worker:
self.addEventListener('install', event => {
const selfUrl = new URL(self.location);
// Uses https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
const parameterValue = selfUrl.searchParams.get('_param');
// Do something with parameterValue
});

使用不同的 URL 注册服务工作线程将触发服务工作线程更新,这相当于更改 service-worker.js 的内容。

关于javascript - 有没有办法将一些值传递给服务人员以在安装步骤中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40387983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com