2017-03-23 11 views
2

は、クライアントがこのサービスワーカーとクライアントの要求 'のCache-Control': 'キャッシュなし'

fetch('example.json', { 
    headers: { 
     'Accept': 'application/json', 
     'Accept-Encoding': 'gzip', 
     'Cache-control': 'no-cache' 
    }, 
    method: 'GET' 
    }).then() 

ないと仮定し、サーバーワーカーはこの

self.addEventListener('fetch', (event:any) => { 
    let request = event.request 
    if (request.method !== 'GET') return 
    event.respondWith(caches.match(request) 
    .then(cachedResponse => { 
     if (cachedResponse) return cachedResponse 
     return caches.open(RUNTIME) 
     .then(cache => fetch(request) 
      .then(response => cache.put(request, response.clone()) 
       .then(() => response))) 
    })) 
}) 

私はcaches.match(request)を把握すると仮定することはできません'Cache-control': 'no-cache'を実行して、サービスワーカーキャッシュに格納されている内容に関係なく退屈するだけですか?

答えて

2

私を修正する自由を感じるが、私はconsole.log('SW :', request.headers.get('Cache-control'))ヘッダが出striptているように見えるテストするときにいくつかのより多くのグーグルでの後、私はこの

https://bugs.chromium.org/p/chromium/issues/detail?id=451664#

を見つけました。

一部のブラウザベンダーがサービスワーカーにとって躊躇している理由は徐々に分かりますが、キャッシュ全体が直感的ではなく、ブラウザキャッシュは最初は直感的ではありませんでした。

+0

あなたはどのブラウザベンダーがサービスワーカーに嫌な印象を与えていますか? – sideshowbarker

+0

これは間違った言葉です。私は躊躇するように変更します。http://caniuse.com/#search=serviceworker –

+0

OKええ、MicrosoftとAppleがリソースをまだ実装していないことを示していると思います。サービスワーカーの実装には膨大な開発労力がかかり、ブラウザエンジンのあらゆる場所に広がるすべてのキャッシングコードに触れる必要があり、セキュリティの悪用リスクを避けるために注意深く行う必要があります。しかし、とにかくマイクロソフトとアップルはすべて最終的にそれを実装するだろう。 – sideshowbarker

関連する問題