複数の言語でURLをサポートするNode Webアプリケーションがあります。私は現在のURLのウェールズ版を生成するためのミドルウェアをいくつか持っています(例えば、URLは/foo
、ウェールズ版は/welsh/foo
となります)。これはリンク上に表示されます。Node/Expressでrequest.urlを取得する際の競合条件
この関数はrequest
オブジェクトを受け取り、更新されたURL(request.url
でアクセス)を返します。残念ながら、自分のサイトで複数のページを一度に開くと、一部のページは<a>
リンクで間違ったURLを取得します(たとえば、私が開いた他のページの1つにWelsh URLが表示されます)。ページをリロードすると、今回はリンクが再生成されます。その後、私はgetCurrentUrl(request, 'welsh')
のようなテンプレートでそれを呼び出す...
res.locals.getCurrentUrl = (req, locale) => {
// snip: some logic to check if the URL already contains the locale
return "://" + req.get('host') + req.originalUrl;
};
:
私のミドルウェアは、このようになります。
JavaScriptを使用して一度に十数個のタブを開くと、この現象が発生します(一度にたくさんのサイトURLを開くボタンが付いたステータスページがあります)。明らかに、これは実用的なユースケースではありませんが、交通量の多い瞬間に、この競合状態が起こる可能性があります。url
などのリクエストごとの変数をレンダリングしたほうが信頼性の高い方法がありますか?出力?私は何か間違っているのですか?
はこれを試していない - 何の喜びを。 –
OK。試してみる価値があった。私はどこかにグローバル変数があると思います。すべての変数を初期化し、可能な限り使用に近いものとして宣言してください。それと幸運。 – theGleep