假设客户端执行此操作
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'
并且无论服务工作缓存中存储什么都会挽救?
答案 0 :(得分:2)
随意纠正我,但谷歌搜索后我发现了这个
https://bugs.chromium.org/p/chromium/issues/detail?id=451664#
当我测试console.log('SW :', request.headers.get('Cache-control'))
时,标题似乎已被删除。
我正在慢慢了解为什么有些浏览器供应商对服务工作者犹豫不决,这使得整个缓存不直观,浏览器缓存在一开始就已经不直观了。