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

格特·奎肯斯

假设客户这样做

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'并立即纾困吗?

格特·奎肯斯

随时纠正我,但在进一步搜索之后,我发现了这一点

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

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

我渐渐明白为什么有些浏览器供应商对服务人员犹豫不决,这使得整个缓存变得不直观,而浏览器缓存首先就已经不直观了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

处理服务工作者中的提取,但允许客户端看到重定向

Javascript服务工作者:从缓存中获取资源,但也进行更新

服务工作者和软件预缓存的“新版本可用”

是否可以修改服务工作者缓存响应标头?

使Web应用程序脱机-应用程序缓存或服务工作者哪个更好?

如何不缓存服务器工作者客户端

WebView:以编程方式清除服务工作者缓存

使用CSRF令牌缓存请求时,如何减少服务工作者缓存的大小

服务工作者不会从缓存中返回文件

具有SSL证书缓存的服务工作者

PWA服务工作者缓存/更新预期行为

根据年龄删除服务工作者缓存中的条目

注销时如何清除服务工作者缓存?

延迟加载或预加载Angular模块并使用服务工作者来缓存结果?

在服务工作者中服务之前,可以编辑缓存的index.html吗?

通常,服务工作者应预缓存哪些文件?

如何防止服务工作者删除缓存,PWA

如何由服务工作者更新缓存的资源

服务工作者查询缓存算法是否允许表达式匹配URL路径?

检查服务工作者缓存中是否存在URL

在服务工作者中添加图像和CSS文件以及HTML文件以进行离线缓存

服务工作者缓存文件但不离线加载

使用工作箱和服务器端呈现的 SPA 缓存服务工作者

持久服务工作者和缓存 HTML 和 PNG 文件

服务工作者从磁盘缓存中缓存资源

服务工作者在反应中缓存的路由

服务工作者缓存与 VuexPersistence

角度缓存 - 我们应该使用服务工作者吗?

服务工作者缓存破坏谷歌地图 api