javascript - express+ejs 如何禁用缓存
本文介绍了javascript - express+ejs 如何禁用缓存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
主页index.ejs显示用户名和用户头像,点击的个人中心跳转至信息详情页;在信息详情页修改信息以及上传头像等操作,点击保存之后从信息详情页回到主页index.ejs,这些操作后,数据库数据已经更新,但是主页indexejs中的头像,并没有更新。如果清除浏览器缓存,再次重新登录的话就可以更新用户头像。
请问这是不是属于缓存的问题,查到的一些写法可是不管用,我先贴在下面
第一种:
var ejs = require('ejs'),
LRU = require('lru-cache');
ejs.cache = LRU(100);
第二种:
app.use(express.static(path.join(__dirname, 'public')));
app.get("/*",function (req, res, next) {
res.setHeader('Last-Modified',(new Date()).toUTCString());
next();
})
第三种:
app.set('view cache', false);
第四种:
app.disable('view cache');
即使把这些都写上也不管用,还是需要清除浏览器缓存才可以更新用户头像,请大神指点。
解决方案
最终还是要自问自答。
其实之前那个问题不是缓存的事,是我自己把自己给误导了。主要是我在渲染修改个人信息页面的时候没有findOne,也没有用session,所以我每次修改的数据是成功了,但是要显示的数据在指定页面却显示不出来。所以上面的所有都可以不要。
//加载info
router.get("/admin/info/edit",function (req, res, next) {
User.findOne({_id : req.session.user._id},function (err, doc) {
if(err) return next(err);
req.session.user = doc;
console.log(doc)
res.render("admin/info/msg",{title:"user_info"})
})
});
//发送请求
router.post("/admin/info/edit",function (req, res, next) {
var send_data = {
username : req.body.username,
age : req.body.age,
address : req.body.address,
hobby : req.body.hobby,
sex : req.body.sex,
weight : req.body.weight,
tall : req.body.tall,
pic_path : req.body.avatar,
date : moment().format()
};
// console.log(send_data);
User.findOne({_id:req.session.user._id}).lean().exec(function (err, doc) {
if(err) return res.json({error : err.toString()});
User.update({_id:req.session.user._id },send_data,function (err, doc) {
if(err) return res.json({error : err.toString()});
res.send({status : "ok!"});
});
})
});
好几天没搭理,今天没事干就想看看,结果无意间就发现了这个问题。给各位初学者的一个建议,想不明白的事,我们可以放一放。也许在不经意的某个瞬间你就想起来了。
这篇关于javascript - express+ejs 如何禁用缓存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文