gpt4 book ai didi

node.js - 在 route 的 res.redirect ('back' ) 之后重新加载页面

转载 作者:太空宇宙 更新时间:2023-11-03 22:48:23 25 4
gpt4 key购买 nike

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

以下是创建相册的路线。在这种情况下,是否可以使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com