javascript - 服务器设置了etag,但是不缓存怎么办?
本文介绍了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屋!
查看全文