在独立版中启动的渐进式Web应用程序不会检测站点更新

时间:2017-05-29 14:02:15

标签: service-worker progressive-web-apps

我在主屏幕上添加了一个渐进式网络应用程序。我选择了独立的运行类型,我在其中运行service-worker

所有工作完美,只有一个疑问:如果我更新我的网站(使用其相对service-worker,我可以看到更新,如果我将其直接加载到浏览器中,但如果我通过家添加链接启动它我总是看到旧网站。

在独立模式下启动网站时有一种方法可以请求更新吗?

2 个答案:

答案 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 + '">');
相关问题