在使用Angular5中的SW Precache时排除子站点URLs

10

我可以在使用SW Precache生成服务工作者时排除某些URL吗?以下是我的swprecache.config.json文件。

module.exports = {
navigateFallback: '/index.html',
stripPrefix: 'dist',
root: 'dist/',
staticFileGlobs: [
  'dist/index.html',
  'dist/**.js',
  'dist/**.css',
  'dist/**.ico',
  'dist/assets/images/**.jpg',
  'dist/assets/images/**.png',
  'dist/assets/images/**.gif',
  'dist/assets/js/**/**.js',
  'dist/assets/js/**.js',
  'dist/assets/css/**.css',
  'dist/assets/fonts/**.{js,html,css,png,jpg,gif,svg,eot,ttf,woff,ico}',
  'dist/**.{js,html,css,png,jpg,gif,svg,eot,ttf,woff,ico}',
   '!dist/Subscription/**.{js,html,css,png,jpg,gif,svg,eot,ttf,woff,ico}'
],

runtimeCaching: [{
  urlPattern: /^https:\/\/netdna\.bootstrapcdn\.com\//,
  handler: 'networkFirst'
}]

};

我尝试使用非运算符,例如'!dist/Subscription/**.{js,html,css,png,jpg,gif,svg,eot,ttf,woff,ico}'。但是它不起作用,所以当我导航到子站点时,我会收到“无法匹配任何路由”的错误。只有在清除浏览器数据后,我才能导航到子站点。请问有人可以帮我修复它吗?请查看我的错误enter image description here

谢谢


好的,但现在看起来你遇到了一个Angular路由问题,而不是sw-precache的问题。你定义了哪些路由? - Stef Chäser
如果路由问题意味着什么,那么第一次访问子站点也不应该导航到该站点,对吗? - kamalav
2个回答

1

谢谢,这个也不起作用,请看我使用后的错误截图。 - kamalav

0

生成ServiceWorker后,我检查了fetch事件中的请求是否包含"Subscription",如下所示,这个方法运行良好。

 self.addEventListener('fetch', function(event) {
if (event.request.method === 'GET') {
// Should we call event.respondWith() inside this fetch event handler?
// This needs to be determined synchronously, which will give other fetch
// handlers a chance to handle the request if need be.
var shouldRespond;
if (event.request.url.match('^.*(\/Subscription\/).*$')) {
    return false;
}
  // OR

if (event.request.url.indexOf('/Subscription/') !== -1) {
    return false;
}

 .............}})

它正常运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接