我的应用程序托管在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找到更多。