在路线res.redirect(“返回”)后刷新页面(Reload a page after res

2019-06-24 00:13发布

我工作的一个应用程序,它允许你上传图片,并创建相册。 一切正常接受所创建的相册后的新专辑没有在客户端显示,直到重新加载页面,我无法弄清楚如何解决这个问题。

下面是创建一个相册的路线。 是它在某种程度上可能使该航线完成后重新加载页面使用的东西比res.redirect(“返回”)在这种情况下,别的吗?

当然,我可以复制/粘贴路由的代码首先加载页面,但是这将是多干。 也许我可以在这条线路中调用其他途径?

路线:

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');
    });
});

Answer 1:

你应该能够做到res.redirect(“/专辑”)而不是回力全部重新加载,但得到相同类型的反馈。



Answer 2:

“回”是一个别名req.get('Referrer')所以如果“/相册”是你的推荐人,你可能还是会遇到与浏览器返回一个304(HTTP不能修改)HTTP状态或浏览器缓存页面问题(通用) 。 如果您遇到这个问题,你可以做几件事情:

发送部分清除缓存头:

res.header('Cache-Control', 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0');
res.redirect('back');

或修改的网址:

 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));  

当然,如果你知道网址,如“/张专辑”你没有去,虽然所有rigamarole添加一些版本 - 只是当前时间戳附加到URL字符串。

第一种方式是更清洁和更好的海事组织工作。 我见过的情况下,当一个页面没有引用即使我清楚地从另一个页面,由于缓存来了。



文章来源: Reload a page after res.redirect('back') in route