2017-05-29 37 views
0

我的主屏幕上添加了渐进式网络应用程序。我选择了独立运行类型,我在其中运行了一个service-worker。如果我更新我的网站(与其相关的service-worker,我可以看到更新,如果我直接加载到浏览器,但如果我通过家里启动它添加的链接,我总是看到旧网站。以独立方式启动的渐进式网络应用程序无法检测网站更新

有一个在独立模式启动我的网站时,请求更新的方式?

+0

有什么'start_url'你使用你的Web应用程序清单是什么?如果您在设备上的Chrome中导航到相同的'start_url',那么您是否看到与您在添加到主屏幕的链接中看到的内容不同的内容? –

回答

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 + '">'); 
0

我想你问:“有没有办法来动态更新我的预缓存资产没有更新我的服务人员?” 是的! 我一直在努力升级到JSON缓存策略 - >https://serviceworke.rs/json-cache.html我们将很快发布!

+0

它听起来很有趣...我会尝试,我会建议你,在此先感谢 – firegloves

+0

chris yout json缓存策略由ios safari支持? – firegloves

+0

是的。我一直在做这个机制大约6 - 7年。有了服务人员,我一直在升级它并从localStorage迁移到indexeddb。 这是几年前我给出的关于整体概念的Velocity的演示文稿 - > https://youtu.be/GKxkzu0pHUc?list=PLqf5nhDkyqZHR6fQxCYoqPIJwiRdoMXMf 这是一篇关于使用localStorage进行缓存的文章,我很久以前写过 - > https://love2dev.com/blog/use-local-storage-to-make-your-single-page-web-application-rock/ 我希望为服务工作者提供新代码,使用旧版浏览器完成本周(iOS)后备。 –

相关问题