用nodejs搭建的图片服务器为什么会用eTag自动设置http缓存?
以下是所有核心代码:
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校验:
补充:
入口文件的内容,这个项目没有用到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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你确定是
koa
?express
有自动设置 https://github.com/expressjs/express/blob/master/lib/response.js#L201koa
没看到