图片起源:
一个一般的 Angular 应用程序在浏览器中执行,在 DOM 中出现页面以响应用户操作。Angular Universal 在服务器上执行,生成动态应用程序页面,而后在客户端上疏导。这意味着应用程序通常会更快地出现,让用户有机会在应用程序齐全交互之前查看应用程序布局。
终点是用户的申请,通常从浏览器收回。
申请应该达到缓存层(例如 CDN),该层可能蕴含曾经在服务器端出现的应用程序,在这种状况下响应十分快。
CDN 通常将服务器端渲染存储一段时间,具体取决于业务需要。在给定工夫之后,缓存生效。为了以最佳形式进行此生效,倡议 CDN 在缓存被驱赶之前申请新的服务器端渲染,并在执行新渲染时持续提供现有缓存。
如果 CDN 没有缓存 SSR 渲染,它会将申请进一步转发到反向代理(例如负载均衡器)。
反向代理(通常是负载均衡器)将决定将申请转发到哪个 SSR 节点(在节点集群中)。
SSR 节点接管申请并开始渲染。它向 OCC API 收回 OCC 调用。
不倡议将 SSR 服务器 / 节点间接裸露给用户,因为渲染速度很慢并且无奈满足预期的响应工夫。
OCC API 缓存层负责缓存来自 OCC API 服务器的 OCC API 响应。通常,这意味着缓存 GET 和 HEAD 申请的响应。如果 OCC API 缓存层缓存了响应,则立刻将其返回给 SSR 节点,而无需将申请达到理论的 OCC API 服务器,从而使 SSR 节点执行渲染的速度十分快。
倡议为 OCC API 服务器设置某种缓存层,因为这部分在服务器端渲染时破费的工夫最多。
如果 OCC API 缓存层不蕴含给定申请的缓存响应,它会将其转发给 OCC 服务器进行解决。