Chrome 40 のバグを回避するために、サービス ワーカー ロジックから除外しようとしているメディア サーバーから CDN にリダイレクトするイメージがあります。Canary では、同じワーカーが問題なく動作します。標準の動作にフォールバックする必要があると思っていましたがevent.default()
、Chrome の実装ではそれが見られず、仕様を読むと、現在の推奨事項は単に使用することのようfetch(event.request)
です。
したがって、私が抱えている問題は、このシナリオで Service Worker を使用するには、すべてのユーザーの 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;
});
}));
});