将AWS AppSync与lambda数据源一起使用时,您可能会遇到N + 1查询问题。
基本上,当您的类型上具有单独的字段解析器并且查询返回这些类型的数组时,字段解析器lambda将被调用N次。
AWS在解析程序中引入了BatchInvoking lambda,以解决此问题。在这里,您可以阅读有关问题及其解决方案的更多信息:https : //docs.aws.amazon.com/appsync/latest/devguide/tutorial-lambda-resolvers.html#advanced-use-case-batching
但是,他们的解决方案不起作用。BatchInvoking lambda仅限于5个事件(文档中未对此进行说明)。它对N + 1问题略有改进(使其变为N / 5 + 1),但我认为这还不够,因为更复杂的查询往往会执行很长时间,并且需要更多的lambda调用。
所以我的问题是你如何处理这个问题?有什么更好的解决方案吗?
默认情况下,Amplify Auth 存储会话信息和令牌,localStorage并且可以将其配置为用于sessionStorage实现不记住用户的登录。
Amplify.configure({
Auth: {
storage: window.sessionStorage
}
})
Run Code Online (Sandbox Code Playgroud)
还需要使用自定义身份验证器 UI,因为托管的 UI 不提供此类功能
withAuthenticator(App, true, [
<SignIn/> //with 'RememberMe' option
])
Run Code Online (Sandbox Code Playgroud)
我的问题是可以从<SignIn/>组件重新配置 Amplify Auth以使用其他存储类型吗?如果我这样做,如何告诉 Amplify 在页面重新加载的情况下检查保存的会话的存储?或者有没有更好的方法来实现这样的功能?