动态更改Express静态路径

时间:2017-04-07 09:00:06

标签: express loopbackjs

在Express中,您可以设置一个静态文件夹,通过中间件提供文件。根据我的理解,然后在整个应用程序生命周期中设置它。

是否可以在server.js中为每个请求设置某个位置?例如,某些请求使用“clientNew”文件夹,而其他请求使用“client”。我希望能够通过会话ID而不是通过URL查看差异。

1 个答案:

答案 0 :(得分:0)

因此,虽然这不是一个推荐的方法,但对于一个" open"由于优化缓存和响应时间而导致大量用户的应用程序我通过执行指向静态处理程序的指针来解决它。

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中的变量,然后切换路径。值得注意的是etag的禁用,这是至关重要的,因为浏览器存储以前的客户端并确定他们的文件是否仍然可以保留。

此代码在应用程序的早期使用,在本例中为Loopback(由核心使用Express)。