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



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

每次我向它推送更改,应用程序都会重新启动。

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

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

如何在不影响现有用户数据的情况下将其推送到生产环境?

我在某个地方读到一个模块,它将允许推送到生产而不影响现有的用户数据。也就是说,如果用户正在处理某些事情,那么将创建一个允许用户不受中断地工作的进程。当生产更新时,流程不更新。

你知道我该怎么做吗?

如果您正在使用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找到更多。

相关内容

最新更新