在AppEngine Node.js标准环境中稳定快速会话

时间:2018-10-23 04:53:49

标签: node.js google-app-engine express-session google-appengine-node

我在GAE node.js标准环境上的应用中使用没有store值的express-session实现了会话机制。尽管它在localhost上没有问题,但无论如何在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. 如何在此环境中使用内存缓存?

1 个答案:

答案 0 :(得分:4)

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

GCP尚未在App Engine上提供来自Node.js的内存缓存解决方案。当前的建议是使用第三方解决方案,例如Redis Labs Memcache(请参阅tutorial) 一旦配置了Memcache实例,您就可以在快速会话中使用MemecachedStore。参见this sample

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