javascript - 服务器设置了etag,但是不缓存怎么办?

查看:152
本文介绍了javascript - 服务器设置了etag,但是不缓存怎么办?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

如图所示

请求中带有If-None-Match和If-Modified-Since头,响应中也含有Etag和Last-Modified头,并且etag相等,Last-Modified也符合。理论上应该返回304 Not Modified吧。可是我试了好几次,每次都是200ok,没有利用缓存。服务端用的是koa和koa-etag中间件。
该怎么办呢?

解决方案

解决了,原因是我的服务端没有写相关处理逻辑,本以为koa-etag和koa-static这两个中间件自动设置的。。。
解决办法是,自己写返回304的逻辑。

app.use(async (ctx, next) => {
  await next();
  if (ctx.fresh) {
    ctx.status = 304;
  }
});

通过ctx.fresh来判断是否过期,没有则设置响应为304。

这篇关于javascript - 服务器设置了etag,但是不缓存怎么办?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆