sw-precache 不更新,只获取缓存数据
sw-precache not updating and taking only cached data
我正在尝试使用 sw-precache.
实施 networkfirst 策略
现在我能够缓存数据并能够从 离线 提供服务。如果我在页面中更改数据(即:将 header 从 'hello' 更改为 'Welcome'),则不会反映它总是从缓存中获取数据,只有在我取消注册服务时才会更新工作人员或清除站点数据然后只有我可以获得我的数据
这是我的sw-precachegulp任务:
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);
});
要检查两件事:
- 确保您没有缓存
sw.js
文件,因为这可能会使 Chrome 中的更新最多延迟 24 小时。 (Details.)
- 您是否在更新后随后访问网站时检查更新内容?由于缓存优先策略,更新后首次访问站点不会显示新内容(因为缓存已更新"in the background")。
我正在尝试使用 sw-precache.
实施 networkfirst 策略
现在我能够缓存数据并能够从 离线 提供服务。如果我在页面中更改数据(即:将 header 从 'hello' 更改为 'Welcome'),则不会反映它总是从缓存中获取数据,只有在我取消注册服务时才会更新工作人员或清除站点数据然后只有我可以获得我的数据
这是我的sw-precachegulp任务:
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);
});
要检查两件事:
- 确保您没有缓存
sw.js
文件,因为这可能会使 Chrome 中的更新最多延迟 24 小时。 (Details.) - 您是否在更新后随后访问网站时检查更新内容?由于缓存优先策略,更新后首次访问站点不会显示新内容(因为缓存已更新"in the background")。