稳定 AppEngine 上的快速会话 Node.js 标准环境
Stabilizing express session on AppEngine Node.js Standard environment
我在 GAE node.js 标准环境中使用没有 store
值的快速会话在我的应用程序中实现了会话机制。尽管它在本地主机上没有问题,但无论在 GAE node.js 标准环境中如何配置 cookie.maxAge
,会话似乎都会终止。这是我的:
app.use(session({
cookie: {
maxAge: 31536000000, // 1 year
secure: true
},
secret: SECRET,
resave: true,
saveUninitialized: true
}));
我假设这是由 GAE 不持久内存引起的,如果是这样,我应该添加 store
选项。我寻找了一个最简单的选项并找到了内存缓存,但它是 not yet available on GAE node.js standard.
- 这是应用程序没有
store
选项的问题吗?
- 在 GAE node.js 标准上获得
store
的最简单方法是什么?
- 如何在此环境中使用内存缓存?
您说的内存在 App Engine 标准环境中不是持久的是正确的:到达同一实例的请求将能够重新使用内存,但是,您的应用程序可能 运行 在许多实例上,这些无论如何都是短暂的。
GCP 尚未在 App Engine 上提供来自 Node.js 的内存缓存解决方案。目前的建议是使用第三方解决方案,如 Redis Labs Memcache(参见 tutorial)
配置内存缓存实例后,您应该能够为快速会话使用 MemecachedStore
。参见 this sample
另一种选择是使用 Cloud Datastore 来存储会话。请参阅 nodejs-datastore-session 节点模块。我自己没试过。
我在 GAE node.js 标准环境中使用没有 store
值的快速会话在我的应用程序中实现了会话机制。尽管它在本地主机上没有问题,但无论在 GAE node.js 标准环境中如何配置 cookie.maxAge
,会话似乎都会终止。这是我的:
app.use(session({
cookie: {
maxAge: 31536000000, // 1 year
secure: true
},
secret: SECRET,
resave: true,
saveUninitialized: true
}));
我假设这是由 GAE 不持久内存引起的,如果是这样,我应该添加 store
选项。我寻找了一个最简单的选项并找到了内存缓存,但它是 not yet available on GAE node.js standard.
- 这是应用程序没有
store
选项的问题吗? - 在 GAE node.js 标准上获得
store
的最简单方法是什么? - 如何在此环境中使用内存缓存?
您说的内存在 App Engine 标准环境中不是持久的是正确的:到达同一实例的请求将能够重新使用内存,但是,您的应用程序可能 运行 在许多实例上,这些无论如何都是短暂的。
GCP 尚未在 App Engine 上提供来自 Node.js 的内存缓存解决方案。目前的建议是使用第三方解决方案,如 Redis Labs Memcache(参见 tutorial)
配置内存缓存实例后,您应该能够为快速会话使用 MemecachedStore
。参见 this sample
另一种选择是使用 Cloud Datastore 来存储会话。请参阅 nodejs-datastore-session 节点模块。我自己没试过。