稳定 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.

  1. 这是应用程序没有 store 选项的问题吗?
  2. 在 GAE node.js 标准上获得 store 的最简单方法是什么?
  3. 如何在此环境中使用内存缓存?

您说的内存在 App Engine 标准环境中不是持久的是正确的:到达同一实例的请求将能够重新使用内存,但是,您的应用程序可能 运行 在许多实例上,这些无论如何都是短暂的。

GCP 尚未在 App Engine 上提供来自 Node.js 的内存缓存解决方案。目前的建议是使用第三方解决方案,如 Redis Labs Memcache(参见 tutorial) 配置内存缓存实例后,您应该能够为快速会话使用 MemecachedStore。参见 this sample

另一种选择是使用 Cloud Datastore 来存储会话。请参阅 nodejs-datastore-session 节点模块。我自己没试过。