我正在开发一个应用程序,它允许您上传图像并创建相册。一切工作正常,接受创建相册后,在重新加载页面之前,新相册不会显示在客户端中,并且我不知道如何解决此问题。
以下是创建相册的路线。在这种情况下,是否可以使用 res.redirect('back') 之外的其他内容,以便在路由完成后重新加载页面?
当然,我可以从加载页面的路径中复制/粘贴代码,但这太枯燥了。也许我可以从该路由中调用其他路由?
路线:
app.post('/album', function(req, res){
var newAlbum = new albumModel.Album();
newAlbum.imageName = req.body.albumPicsName;
newAlbum.imageId = req.body.albumPicsId;
newAlbum.title = req.body.albumTitle;
newAlbum.save(function (err) {
if (err) {
console.log(err);
// do something
console.trace();
}
res.redirect('back');
});
});
最佳答案
'back' 是 req.get('Referrer')
的别名,因此如果 '/albums' 是您的引荐来源网址,您可能仍会遇到浏览器返回 304 的问题(http 未修改) http 状态或浏览器缓存页面(常见)。如果您遇到该问题,您可以执行以下操作:
发送一些缓存清除 header :
res.header('Cache-Control', 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0');
res.redirect('back');
或者修改url:
var url = require('url');
var u = url.parse(req.get('Referrer'), true, false);
u.query['v'] = +new Date(); // add versioning to bust cache
delete u.search;
res.redirect(url.format(u));
当然,如果您知道诸如“/albums”之类的 url,则不必费尽心思来添加一些版本控制 - 只需将当前时间戳附加到 url 字符串即可。
在我看来,第一种方法更干净,效果更好。我见过这样的情况:页面没有引荐来源网址,即使我由于缓存而明显来自另一个页面。
关于node.js - 在 route 的 res.redirect ('back' ) 之后重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10352241/