我的生产应用程序托管在heroku上。
每次我对其进行更改时,应用程序都会重新启动。
因此,如果用户已登录 - 他们将被注销。
如果用户正在处理某些事情,那么用户就会丢失他的数据。 假设用户正在填写表格。由于应用程序已重新启动,因此提交表单无效。用户必须再次登录并填写表格。
如何在不影响现有用户数据的情况下推向生产?
我在某处读到了一个模块,它可以在不影响现有用户数据的情况下推动生产。也就是说,如果用户正在处理某些事情,则会创建一个允许用户无中断地工作的过程。 更新生产时,过程不是。
知道如何解决这个问题吗?
答案 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找到更多信息。