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

または、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文字列に現在のタイムスタンプを追加するだけです。

最初の方法はよりクリーンで、より良いimoで動作します。キャッシングのために明らかに別のページから来たのに、ページにリファラーがない場合があります。

于 2013-12-05T01:45:54.483 に答える
1

フルリロードを強制するために戻る代わりにres.redirect('/ album')を実行できるはずですが、同じタイプのフィードバックを取得します。

于 2012-04-28T23:23:26.707 に答える