繁体   English   中英

服务器渲染:预取数据性能

[英]Server Rendering: Prefetching data Performance

我有一个运行良好的React Redux服务器渲染的应用程序。

当我转到其他页面时,我测量了一些服务器响应时间:

  • 在我的/ singin页面上,我在60毫秒内收到了响应。 好。

  • 在我的/ user页面上(需要身份验证),我在300毫秒内收到了响应。 因为服务器必须通过要求API知道用户是否有权访问此页面来预取当前用户会话和当前用户

  • 在我的/ user / graph页面上。 我在600毫秒内收到响应。 因为服务器必须通过询问API预取当前用户会话,当前用户和图形数据。

主要问题是我无法并行处理所有这些请求。

这是服务器流:

  • 接收/ user / graph的页面请求
  • 并行获取/ api / user / session/ api / user / me
  • 用React-Router进行路由匹配(它需要知道用户是否已通过身份验证)
  • 此时,服务器知道将要渲染的组件。 对于它们中的每个,它并行获取所需的数据。 这意味着获取/ api / graph/ api / graphConstants1/ api / graphConstants2等。
  • 反应渲染

这是我的问题:

  1. 最佳做法是什么?
  2. 由于预取请求,如何减少此初始渲染时间?
  3. 我是否应该仅在客户端上执行大请求(例如/ api / graph )? 但是服务器渲染的目的是什么?
  4. 我是否应该要求我的api团队仅为渲染服务器创建一个自定义的超级方法,以在一个请求中检索所有数据?

这是服务器流:

  • 接收/user/graph页面请求
  • 并行获取/api/user/session/api/user/me
  • 用React-Router进行路由匹配(它需要知道用户是否已通过身份验证)
  • 此时,服务器知道将要渲染的组件。 对于它们中的每个,它并行获取所需的数据。 这意味着获取/api/graph/api/graphConstants1/api/graphConstants2等。
  • 反应渲染

这看起来很完美对我来说,这是一件多么微服务基础架构应该表现。

如您所说,大多数API调用都是并行进行的 ,因此不必担心连续的API调用之间的延迟。

主要问题是我无法并行处理所有这些请求。

但是,您可以要求API团队为所需的微服务提供一个伞形API。 在这种情况下,API团队需要处理并行或多线程处理。

并行获取/api/user/session/api/user/me

看起来,您正在调用/api/user/session以验证用户的session 但是,您不应该利用/api/user/me caching

我猜/api/user/me这是一个GET请求,这是减少此类调用的一种方法。 data通过这个API发送可以很容易地发送的signin API,如果登入成功,高速缓存数据。

在对用户数据进行任何更新时,即在任何POSTPUTDELETE调用上,都可以清除现有的缓存数据,并且API可以返回用户的最新状态,这些状态将用于预热缓存。

PS:这种决定不能/必须在StackOverflow答案上做出,但需要API提供商和使用者之间进行深入的讨论和达成共识。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM