使用JavaScript访问缓存响应标头

时间:2019-05-17 10:43:10

标签: javascript caching response-headers

我正在尝试从我的一个缓存元素中访问响应标头“ date”。

您可以在图片中看到,我的请求没有返回正确的时间戳。相反,它返回null,但我不知道为什么。

enter image description here

这是我使用的代码:

var cachedFile = "https://www.washingtonpost.com/resizer/rgjyoeu2BaoUyNiojHCKLjN9udM=/1484x0/arc-anglerfish-washpost-prod-washpost.s3.amazonaws.com/public/EXKAUXTXXUI6TJ57ZCSDXBHOGE.jpg";
caches.open("dynamic-content").then(cache => {
  cache.match(cachedFile).then(response => {
    if(! response){
        console.log("not found");
    }else{
        var element = response.headers.get('date');
        console.log(element);
    }
  })
})

我的目标是删除旧的缓存文件。无需使用工作箱或任何插件。如果有人知道一种方法,我很高兴被开悟;)

1 个答案:

答案 0 :(得分:1)

尝试(您的请求返回空标题)

let cache={};

var url = "https://cors-anywhere.herokuapp.com/https://www.washingtonpost.com/resizer/rgjyoeu2BaoUyNiojHCKLjN9udM=/1484x0/arc-anglerfish-washpost-prod-washpost.s3.amazonaws.com/public/EXKAUXTXXUI6TJ57ZCSDXBHOGE.jpg";

async function load(url) {
  let c = cache[url];
  if(c) {
    console.log('Cached headers',c.res.headers);
  } else {
    let res = await fetch(url);
    c = cache[url] = {
      res,
      pic: await res.blob(),
    }
  }
  image.src=""; 
  image.src = URL.createObjectURL(c.pic);
}

function start() {
  load(url);
  btn.innerText="Load from cache";
  
}
<button id="btn" onclick="start()">Load</button><br>
<img id="image" height="150"/>