服务工作者和客户端请求'缓存控制':'无缓存'

时间:2017-03-23 23:09:48

标签: service-worker

假设客户端执行此操作

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'并且无论服务工作缓存中存储什么都会挽救?

1 个答案:

答案 0 :(得分:2)

随意纠正我,但谷歌搜索后我发现了这个

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

当我测试console.log('SW :', request.headers.get('Cache-control'))时,标题似乎已被删除。

我正在慢慢了解为什么有些浏览器供应商对服务工作者犹豫不决,这使得整个缓存不直观,浏览器缓存在一开始就已经不直观了。