在Apollo客户端中提高性能
将数据重定向到缓存
在某些情况下,一个查询可能会通过一个执行过的不同的查询请求已在查询中的数据,多亏了
在这些情况下,您可以避免向服务器发送获取相同数据的后续查询。要了解更多信息,请参阅缓存重定向。
预取数据
预取涉及在数据需要被呈现之前,执行数据查询。它有助于使应用的UI对用户更加响应。
大部分情况下,预取涉及查询,一旦可以猜测用户可能需要它。
例如,以下代码片段通过client.query执行一个查询,当用户悬停在特定链接上时(到使用查询返回数据的一页):
当 GET_DOG 查询完成后,其结果存储在 Apollo 客户端缓存中。这意味着如果用户随后点击链接,狗的详细页面可以立即从缓存中填充那些数据,对用户来说感觉是瞬间的。
除了鼠标悬停外,这里还有一些其他情况建议在预取中有帮助:
- 在多步流程(例如向导)中,可以在每个 当前 步骤期间预先加载每个 下一步 步骤的数据。
- 如果您的应用程序分析显示在两个特定视图之间频繁切换,您可以使用预取来优化该路径。
- 如果有多个选项卡或幻灯片(例如幻灯片放映)的区域在页面上,您可以预载数据的部分或全部以提高切换的流畅性。
一种特殊的预取形式是从服务器存储 hydration,因此您也可以考虑初始化比首次页面加载实际需要更多的数据,以提高其他交互的速度。
请随时提交建议其他预载机会的PR!