1

我正在开发一个允许您上传图像和创建相册的应用程序。一切正常,接受创建专辑后新专辑在页面重新加载之前不会显示在客户端中,我不知道如何解决这个问题。

以下是创建相册的路线。在这种情况下,是否有可能使用 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');
    });
});
4

2 回答 2

4

'back' 是一个别名,req.get('Referrer')所以如果 '/albums' 是您的推荐人,您可能仍然会遇到浏览器返回 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));  

当然,如果你知道 '/albums' 之类的 url,你不必费尽心思来添加一些版本控制 - 只需将当前时间戳附加到 url 字符串。

第一种方法更清洁,并且在 imo 中效果更好。我已经看到一个页面没有引荐来源网址的情况,即使由于缓存我显然来自另一个页面。

于 2013-12-05T01:45:54.483 回答
1

您应该能够执行 res.redirect('/album') 而不是 back 强制完全重新加载但获得相同类型的反馈。

于 2012-04-28T23:23:26.707 回答