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

如图所示
图片描述

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

阅读 4.9k
2 个回答

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏