如何在不影响用户工作的情况下将更改推送到生产环境

时间:2014-05-07 16:06:10

标签: node.js express

我的生产应用程序托管在heroku上。

每次我对其进行更改时,应用程序都会重新启动。

因此,如果用户已登录 - 他们将被注销。

如果用户正在处理某些事情,那么用户就会丢失他的数据。 假设用户正在填写表格。由于应用程序已重新启动,因此提交表单无效。用户必须再次登录并填写表格。

如何在不影响现有用户数据的情况下推向生产?

我在某处读到了一个模块,它可以在不影响现有用户数据的情况下推动生产。也就是说,如果用户正在处理某些事情,则会创建一个允许用户无中断地工作的过程。 更新生产时,过程不是。

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是Heroku,那么您将自动获得一个部署系统,确保用户无需停机。部署了新版本的应用程序并与旧版本进行热交换。

如果您的用户正在注销,可能是因为在重新启动应用时会删除会话数据。

要避免这种情况,请使用持久会话存储,例如redis-connect

var express = require("express")
  , redis = require("redis")
  , RedisStore = require("connect-redis")(express);

app.configure(function() {
  app.use(express.session({
    store: new RedisStore({
      client: redis
    })
  });
});

上面的代码是一个示例,您可以在https://github.com/visionmedia/connect-redis找到更多信息。