我在 jekyll 网站中使用 sw-precache 通过以下配置添加离线功能:
gulp.task('generate-service-worker', function(cb) {
var path = require('path');
var swPrecache = require('sw-precache');
var rootDir = '_site';
var packageJson = require('./package.json');
swPrecache.write('./service-worker.js', {
staticFileGlobs: [rootDir + '/**/*.{html,css,png,jpg,gif,svg}', rootDir + '/js/*'],
stripPrefix: rootDir + '/',
runtimeCaching: [{
urlPattern: /\/$/,
handler: 'networkOnly'
}],
handleFetch: argv.cacheAssets || false,
maximumFileSizeToCacheInBytes: 10485760, // 10 mb
cacheId: packageJson.name + '-v' + packageJson.version
}, cb);
});
问题是,当我更改网站中的内容(例如,博客文章中的文本,或索引页面中的某些文本)时,更改不会显示,直到安装了新的 serviceworker 版本并且浏览器已经刷新,这当然是cacheFirst
.
我想要的是对站点索引的请求始终首先是网络,这就是我在这里尝试的:
runtimeCaching: [{
urlPattern: /\/$/,
handler: 'networkFirst'
}]
但这不起作用,索引总是从服务人员而不是从网络中获取,我该如何做到这一点?