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

发布于 2022-09-04 04:25:24 字数 317 浏览 18 评论 0

如图所示
图片描述

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

戈亓 2022-09-11 04:25:24

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

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

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

甜点 2022-09-11 04:25:24

你看看这个有没影响:https://segmentfault.com/q/10...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文