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

大卫·斯卡尔斯

我试图标记正在存储在服务工作者缓存中的资源。

我认为可以向该资源中添加自定义标头,以表明这一点,但是,一旦将资源存储在服务工作者缓存中,似乎就删除了标头修改。是这样吗 我在缓存规范中看不到任何有关修改响应标头的内容。

这是我尝试过的一个示例:

// I successfully cache a resource (confirmed in Dev Tools)
caches.open('testCache').then(cache => {
    cache.add('kitten.jpg');
})
.then(() => {
    console.log('successfully cached image'); // logs as expected
});

// placeholder
var modifiedResponse;

// get the cached resource
caches.open('testCache')
.then(cache => {
  return cache.match('kitten.jpg');
})

// modify the resource's headers
.then(response => {
  modifiedResponse = response;
  modifiedResponse.headers.append('x-new-header', 'test-value');
  // confirm that the header was modified
  console.log(modifiedResponse.headers.get('x-new-header')); // logs 'test-value'
  return caches.open('testCache');
})

// put the modified resource back into the cache
.then((cache) => {
  return cache.put('kitten.jpg', modifiedResponse);
})

// get the modified resource back out again
.then(() => {
  return caches.match('kitten.jpg');
})

// the modifed header wasn't saved!
.then(response => {
  console.log(response.headers.get('x-new-header')); // logs null
});

我还尝试过删除自定义标头,修改现有标头和创建new Response()响应对象,而不是获取现有的标头

编辑:我正在使用Chrome 56。

雅法蛋糕

为此,您必须创建一个新的响应:

fetch('./').then(response => {
  console.log(new Map(response.headers));

  const newHeaders = new Headers(response.headers);
  newHeaders.append('x-foo', 'bar');

  const anotherResponse = new Response(response.body, {
    status: response.status,
    statusText: response.statusText,
    headers: newHeaders
  });

  console.log(new Map(anotherResponse.headers));
});

现场演示(请参阅控制台)

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何卸载服务工作者?

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

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

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

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

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

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

notificationclick事件服务工作者

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

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

修改服务工作者请求中的响应以成为映像

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

如何根据服务工作者中的某些标志缓存响应

服务工作者和其他域(aws s3)的缓存图像:“将不缓存不透明的响应”

服务工作者可以获取和缓存跨域资产吗?

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

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

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

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

是否可以将同一个服务工作者用于两个项目?

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

服务工作者中的XMLHttpRequest

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

嵌套获取服务工作者中的响应

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

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

服务工作者缓存与 VuexPersistence

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

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