资产变更时更新服务工作者

时间:2017-08-19 05:30:00

标签: javascript angular angular-cli service-worker ngx-translate

我注意到我的Angular版本(使用Angular-cli)没有更新我的翻译(使用ngx-translate - 甚至在从浏览器中删除缓存后也没有。

在我的angular-cli.json上,我已将serviceWorker设为true。我尝试将其切换到false,并且更新的翻译文件已正确显示。所以,我猜服务工作者在生成新版本时没有更新我的翻译文件。

如何确保我的资产在更改后会更新? angular-cli是否支持在构建之前配置我们的服务工作者的任何方式?我在documentation中没有找到关于它的更多信息。

1 个答案:

答案 0 :(得分:0)

如果翻译已缓存,则需要将var cacheName = 'myAppCache-3s'; var filesToCache = [ '/' 'index.html', 'scripts/hammer.min.js', 'images/play_white.svg', 'images/stop_white.svg', 'images/back_white.svg', 'images/forward_white.svg', 'images/sfondo.jpg', 'images/ic_refresh_white_24px.svg', 'scripts/meteo-zoom.js', 'scripts/meteosurf_200.js', 'scripts/jquery3-2-1.min.js', 'scripts/jqueryui1-12-1.min.js', 'styles/inline_01.css', 'styles/meteosurf_200.css', 'styles/jqueryui-smoothness.css', 'styles/images/ui-bg_glass_65_ffffff_1x400.png', 'styles/images/ui-icons_454545_256x240.png', 'images/icons/icon-64x64.png', ]; 更改为服务工作者激活。

即:

var cacheName = 'myAppCache-3t';

当我更改资产时,我总是更改cacheName,在名称的末尾添加一个新版本(即:skipWaiting())。

如果先前已安装了服务工作者,但在刷新或页面加载时可以使用新版本的工作程序,则新版本将在后台安装,但尚未激活。只有在不再加载任何仍在使用旧服务工作者的页面时,才会激活它。只要仍然没有加载此类页面,新服务工作程序就会激活。

但您可以使用self.addEventListener('install', function(e) { console.log('[ServiceWorker] Install'); e.waitUntil( caches.open(cacheName).then(function(cache) { console.log('[ServiceWorker] Caching app shell'); return cache.addAll(filesToCache); }).then(function() { return self.skipWaiting(); }) ); }); 函数强制执行此行为:

message += result.get(i) +System.lineSeparator();