用nodejs搭建的图片服务器为什么会用eTag自动设置http缓存?

发布于 2022-09-12 00:26:32 字数 1755 浏览 20 评论 0

以下是所有核心代码:

module.exports = {  
    'POST /uploadImg': async (ctx, next) => {  
        let err = await upload.single('avatar')(ctx, next)  
            .then(res => res)  
            .catch(err => err)  
        if(err){  
            ctx.response.status = 499;  
  ctx.response.message = 'image upload failed:'+err.code;  
  }else{  
            console.log(ctx)  
            ctx.response.body = ctx.req.file.filename;  
  }  
    },  
  'GET /downloadImg/:filename': async (ctx, next) => {  
        let name = ctx.params.filename;  
        let extension = name.split('.').slice(-1)[0].toLowerCase();  
        if (extension != 'gif' && extension != 'png' && extension != 'jpeg') {  
            ctx.response.status \= 497;  
            ctx.response.message = 'not a image file';  
  } else {  
            try {  
                ctx.response.type = 'image/' + extension;  
                ctx.response.body = fs.readFileSync(config.imageDir + '/' + name);  
            } catch (err) {  
                ctx.response.status = 498;  
                ctx.response.message = 'no such file exists or download failed';  
            }  
        }  
    }  
};

可以看到就是简单的对文件上传和下载
用的是koa和koa-multer中间件

为什么这个服务器会自动对资源缓存进行eTag校验:
截屏2019-12-3020.36.19.png

补充:
入口文件的内容,这个项目没有用到express

const Koa = require('koa');  
const bodyParser = require('koa-bodyparser');  
const controller = require('./controller');  
const app = new Koa();  
  
app.use(bodyParser());  
app.use(controller());  
app.listen(3001);  
console.info('app is listening at port 3001');

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

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

发布评论

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

评论(1

雄赳赳气昂昂 2022-09-19 00:26:32

你确定是koa

image.png

express 有自动设置 https://github.com/expressjs/express/blob/master/lib/response.js#L201
koa没看到

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