これは、キャッシングと応答時間の最適化のために多くのユーザーがいる「オープン」アプリケーションの推奨アプローチではありませんが、静的ハンドラへのポインタを使用して解決しました。
exports.createDynamicPath = function(app, path) {
var static = app.loopback.static(path, { etag: false});
var dynamicPath = function (req, res, next) {
return static(req, res, next);
}
dynamicPath.setPath = function (newPath) {
static = app.loopback.static(newPath, { etag: false})
}
return dynamicPath;
}
exports.determineClient = function(app, dynamicPath){
return function(req, res, next) {
if(req.cookies && req.cookies.version != "client2"){
dynamicPath.setPath("client");
}else{
dynamicPath.setPath("client2");
}
next();
}
}
cookieの変数に基づいて、pathを切り替えます。注目すべき点は、エタグを無効にすることです。これは、以前のクライアントを保存していて、ファイルが保持可能かどうかを判断するブラウザにとって重要です。
このコードはアプリで早期に使用されます(この場合は、コアでExpressを使用します)。
エクスプレススタティックの代わりにCDNを使用してみませんか? CDNの場合は、各リクエストレベルで簡単にフォルダ名を変更することができます – vartika
CDNはオプションではありません。複数のクライアントフォルダを使用しており、非常に少量のユーザーに対して多くの変更/増加を行います。私たちが必要とするのは、(クッキーに現在保存されている)リクエストのバージョン番号に応じて、静的フォルダが変更されるという自動解決です。存在しない場合、デフォルトで提供します。 – Undrium