2

我發現我的角度構建(使用角CLI)沒有更新我的翻譯(使用ngx-translate - 甚至不是從瀏覽器中刪除緩存後更新服務工作者,當資產變動

在我angular-cli.json,我VE設置serviceWorkertrue。我試了一下切換到false並正確顯示更新的翻譯文件。所以,我想產生一個新的版本時,服務人員並沒有更新我的翻譯文件。

任何想法如何,我保證我的資產在更改時會更新嗎?angular-cli是否支持配置我們的服務器的任何方式副職工人建造之前?我沒有在他們的documentation中找到關於它的很多信息。

回答

0

如果翻譯被緩存,您需要將cacheName更改爲您的服務工作人員激活。

即:

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', 
]; 

當我改變資產,我總是改變cacheName,在名稱(即:var cacheName = 'myAppCache-3t';)的末尾添加一個新的版本。

如果您的服務工作人員之前已經安裝過,但在刷新或頁面加載時可以使用新版本的工作人員,則新版本將安裝在後臺,但尚未激活。只有在加載的頁面不再有仍在使用舊服務工作者的情況下才會激活它。一旦沒有更多這樣的頁面被加載,新的服務工作者就會激活。

但你可以強制這種行爲與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(); 
    }) 
); 
}); 
+0

啊,但是我使用[角CLI(https://github.com/angular/angular-cli)。我想知道是否有一個命令(或者我可以設置的變量)在構建過程中這樣做(服務工作人員在構建過程中會自動生成)。 –

+0

對angular-cli不太瞭解,但是你的dist文件夾中應該有一個worker-basic腳本。 –