sw-precache不更新并仅采用缓存数据

时间:2018-01-16 14:39:02

标签: caching progressive-web-apps sw-precache

我尝试使用 sw-precache 实施 networkfirst 策略。
现在我可以缓存数据并能够从离线提供服务。如果我更改数据(即:将标题从'hello'更改为'Welcome')在页面中没有得到反映它始终从缓存中获取数据只有在我取消注册服务工作者或清除站点数据时才会获得更新我可以获取我的数据

这是我的sw-precache gulp任务:

gulp.task('generate-service-worker', function(callback) {
  var path = require('path');
  var swPrecache = require('sw-precache');
  var rootDir = '.';

  swPrecache.write(path.join(rootDir, 'sw.js'), {
    staticFileGlobs: [
      rootDir + '/css/**.css',
      rootDir + '/js/**/*.{js,css}',
      rootDir + '/images/**/*.{png,jpg,jpeg}',
      rootDir + '/*.{html,js}',
    ],
    runtimeCaching: [
      {
        urlPattern: 'http://localhost:8080',
        handler: 'networkFirst'
      }],
    stripPrefix: rootDir
  }, callback); 
});

1 个答案:

答案 0 :(得分:1)

要检查两件事:

  • 确保您没有缓存sw.js个文件,因为这可能会延迟Chrome中最多24小时的更新。 (Details。)
  • 您是否在更新后检查更新后续访问网站的内容?由于缓存优先策略,更新后对网站的初始访问不会显示新内容(因为缓存已更新"在后台")。