如何在PWA中更新服务工作者缓存?

Ild*_*dar 13 javascript service-worker sw-toolbox ionic3

我使用带有sw-toolbox库的服务工作者.我的PWA缓存除API查询(图像,css,js,html)之外的所有内容.但是如果某些文件有一天会被改变怎么办呢.或者如果将更改service-worker.js会怎样.应用程序应该如何知道文件的变化?

我的service-worker.js:

'use strict';
importScripts('./build/sw-toolbox.js');

self.toolbox.options.cache = {
  name: 'ionic-cache'
};

// pre-cache our key assets
self.toolbox.precache(
  [
    './build/main.js',
    './build/main.css',
    './build/polyfills.js',
    'index.html',
    'manifest.json'
  ]
);

// dynamically cache any other local assets
self.toolbox.router.any('/*', self.toolbox.cacheFirst);

// for any other requests go to the network, cache,
// and then only use that cached resource if your user goes offline
self.toolbox.router.default = self.toolbox.networkFirst;
Run Code Online (Sandbox Code Playgroud)

我不知道在PWA中更新缓存的常用方法是什么.也许PWA应该在后台发送AJAX请求并检查UI版本?

Chr*_*ove 4

AFAIK sw_toolbox 没有网络更新缓存策略。我想这确实是你想要的。您想要修改缓存网络竞赛策略 - > https://jakearchibald.com/2014/offline-cookbook/#cache-network-race 而不是只是让失败者消失,一旦网络响应,您将想要更新客户端。这个比较高级一点我有时间还是有时间在这里解释一下。我会向客户发布一条消息,让其知道有更新。您可能想提醒用户更新或只是强制更新。我不认为这是一种边缘情况,而是一种非常常见但高级的场景。我希望尽快发布更详细的解决方案。