1

我正在尝试使用sw-precache实施networkfirst策略。 现在我能够缓存数据并能够离线服务。如果我在页面中更改数据(即:将标头从“你好”更改为“欢迎”),则无法反映它总是从缓存中获取数据,只有在我取消注册服务工作者或清除站点数据时才会更新我可以得到我的数据

这是我的 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); 
});
4

1 回答 1

1

要检查的两件事:

  • 确保您没有缓存sw.js文件,因为这可能会使 Chrome 中的更新延迟长达 24 小时。(详情。)
  • 您在更新访问网站时检查更新内容?由于缓存优先策略,更新后对站点的初始访问不会显示新内容(因为缓存已“在后台”更新)。
于 2018-01-17T18:12:14.930 回答