我在主屏幕上添加了一个渐进式网络应用程序。我选择了独立的运行类型,我在其中运行service-worker
。
所有工作完美,只有一个疑问:如果我更新我的网站(使用其相对service-worker
,我可以看到更新,如果我将其直接加载到浏览器中,但如果我通过家添加链接启动它我总是看到旧网站。
在独立模式下启动网站时有一种方法可以请求更新吗?
答案 0 :(得分:0)
我认为您在问“有没有办法动态更新我的预先缓存的资产而不更新我的服务工作者?” 是! 我一直在努力升级到JSON缓存策略 - > https://serviceworke.rs/json-cache.html我们很快会发布这个!
答案 1 :(得分:0)
在挖掘之后我发现了一个简单的解决方案,我会为其他人报告。
iOS不支持service-workers
,因此不是问题。
iOS保留缓存许多资源,因此解决方案是将参数添加到各种导入中,如下所示:
确保更新的最佳解决方案是添加导入的哈希作为参数。
或者,我们可以使用时间戳来确保资源始终更新。
要附加此参数,我们可以导入这些资源,使用javascript注入它们,如此
/**
* inietta uno script nella pagina
*/
function appendScript(url) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
script.async = false; // async false to wait for previous file loading
head.appendChild(script);
}
// create parameter with date
var currVersion = '?v=' + new Date().getTime();
// get head html element
var head = document.getElementsByTagName("head")[0];
// append script
appendScript('app.js' + currVersion);
// append css
head.insertAdjacentHTML('beforeend', '<link rel="stylesheet" type="text/css" href="style.css' + currVersion + '">');