我有一个与Salesforce一起使用的节点应用程序用于一些不同的事情。其中一项功能是让用户填写表单并将其推送到Salesforce。
表单有一个下拉列表,因此我查询salesforce以获取可用的下拉项列表,并通过res.locals将它们提供给我的表单。目前,我通过一些中间件获取这些值,将它们存储在用户会话中,然后检查是否设置了会话值,如果没有,则使用它们,查询salesforce并将其拉入。
这有效,但这意味着Mongo中的每个用户会话数据都包含一大堆选项列表(对所有用户来说都是一样的)。我很少对Salesforce方面的值进行更改,因此我想知道是否存在"正确的"在我的应用程序中存储这些val的方法?
我可以将它们拉入Mongo集合,并在它们发生变化时触发手动刷新。我可以在Mongo中使它们过期(但实际上如果它们确实需要更改,那是因为有人需要立即访问新值),所以不确定这是否最有意义......
将它们存储在每个人的会话中是解决此问题的最佳方法,还是我还应该做些什么呢?
答案 0 :(得分:1)
要快速回答您的问题,您可以将它们添加到单个对象(而不是每个用户的会话数据)。但不确定如何管理他们的生命(即当他们改变时再次拉动它们)。单例可以使用一个简单的脚本文件来实现,该文件可以返回一个简单的对象...
但如果我要做这样的事情,我会采用不同的方式:
如果您能够在短时间内承担过时的数据,那么您可以编写API以便它返回缓存的响应(http缓存,在短时间内)
请注意,您还可以在第1点和第2点组合缓存并一起使用。
此处有更多资源: https://devcenter.heroku.com/articles/increasing-application-performance-with-http-cache-headers https://developers.facebook.com/docs/marketing-api/etags