2

我已经在 GAE node.js 标准环境中的应用程序中使用没有store价值的 express-session 实现了会话机制。cookie.maxAge尽管它在 localhost 上没有问题,但无论在 GAE node.js 标准环境中如何配置,会话似乎都已终止。这就是我所拥有的:

app.use(session({
  cookie: {
    maxAge: 31536000000, // 1 year
    secure: true
  },
  secret: SECRET,
  resave: true,
  saveUninitialized: true
}));

我认为这是由 GAE 不持久内存引起的,如果是这样,我应该添加store选项。我寻找了一个最简单的选项并找到了 memcache,但它在 GAE node.js standard 上尚不可用

  1. 这是应用程序没有store选项的问题吗?
  2. 拥有storeGAE node.js 标准的最简单方法是什么?
  3. 如何在此环境中使用 memcache?
4

1 回答 1

4

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

GCP 尚未在 App Engine 上提供来自 Node.js 的 memcache 解决方案。当前的建议是使用第三方解决方案,例如 Redis Labs Memcache(请参阅教程)一旦您配置了一个 memcache 实例,您应该能够将 aMemecachedStore用于您的快速会话。请参阅此示例

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

于 2018-10-23T15:56:42.757 回答