我们有从我们的媒体服务器重定向到 CDN 的图像,我试图从我的服务工作者逻辑中排除这些图像,以解决 Chrome 40 中的错误。在 Canary 中,同一个工作者能够正常工作。我认为有一个event.default()
回退到标准行为,但我没有在 Chrome 的实现中看到这一点,并且阅读规范似乎目前的建议是只使用fetch(event.request)
.
所以我遇到的问题是我是否必须等到 99% 的所有用户迁移到 Chrome 41+ 才能在这种情况下使用服务人员,或者有什么方法可以让我选择退出某些请求?
我的逻辑核心如下:
worker.addEventListener('install', function(event){
event.waitUntil(getDefaultCache().then(function(cache){
return cache.addAll(precacheUrls);
}));
});
worker.addEventListener('fetch', function(event){
event.respondWith(getDefaultCache().then(function(cache){
return cache.match(event.request).then(function(response){
if (!response){
return fetch(event.request.clone()).then(function(response){
if (cacheablePatterns.some(function(pattern){
return pattern.test(event.request.url);
})) {
cache.put(event.request, response.clone());
}
return response;
});
}
return response;
});
}));
});