【问题标题】:When can I update a service worker?我什么时候可以更新服务人员?
【发布时间】:2017-10-11 06:49:51
【问题描述】:

假设有一个静态网站。我想使用服务工作者并缓存每个请求的响应。当用户点击每个可能的链接时,网站会被完全缓存,并且与服务器没有连接。 一切都很好,但是如果我更改一些文件并更改缓存名称以说服务工作者更新缓存,我应该等待 24 小时才能更新服务工作者。如何强制更新服务人员? 我知道这种方法:

    SWRegistration.update();

但我不知道我的文件何时会更改。例如,我可以设置间隔并每 1 小时更新一次 sw,但我认为这不是一个好主意。而且我无法从服务器传递任何参数,因为该站点无权访问服务器(所有数据都在缓存中)。 有没有什么办法可以解决的?

【问题讨论】:

  • 不完全确定我是否关注你。你的意思是:第 1 天用户打开网站并注册 SW + 整个网站被缓存。在第 17 天,用户再次离线打开站点 - 现在缓存版本从 SW 显示给用户。在这两次访问之间,例如在第 9 天,您使用新内容更新站点。您是否正在寻找一种方法让客户从第 9 天获得新内容并在第 17 天将其展示给用户用户从未在第 1 天到第 17 天之间打开网站?
  • 否,Service Worker 将在 24 小时后从服务器更新,如果内容发生更改,所有内容都将重新缓存。但我想在内容更改后(早于 24 小时)强制更新 sw。
  • 不,我认为这不可能。您可以利用 Web Push API 向客户端发送消息,因为 SW 负责处理消息。然后消息处理程序可以执行某种缓存清除逻辑,而不是向用户显示通知。我自己没有尝试过,但我觉得这是可能的——这当然会给应用程序增加一堆完全不相关的复杂性。

标签: service-worker


【解决方案1】:

您可以查看these 或使用SW Toolbox。它处理静态文件的离线策略,无论是网络优先还是缓存优先。这样就解决了你的软件更新方式

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    相关资源
    最近更新 更多