图片来源:普通的Angular应用程序在浏览器中执行,在DOM中呈现页面以响应用户操作。AngularUniversal在服务器上执行,生成静态应用程序页面,并在客户端启动。这意味着应用程序通常呈现得更快,让用户有机会在完全交互之前查看应用程序布局。起点是用户的请求,通常来自浏览器。请求应该转到缓存层(例如CDN),其中可能包含已在服务器端呈现的应用程序,在这种情况下响应非常快。CDN通常会根据业务需要将服务器端呈现存储一段时间。在给定时间后,缓存将失效。为了以最佳方式执行此失效,建议CDN在缓存被逐出之前请求新的服务器端渲染,并在执行新渲染时继续为现有缓存提供服务。如果CDN不缓存SSR渲染,它会将请求进一步转发到反向代理(例如负载均衡器)。反向代理(通常是负载均衡器)将决定将请求转发到哪个SSR节点(在节点集群中)。SSR节点收到请求,开始渲染。它对OCCAPI进行OCC调用。不建议将SSR服务器/节点直接暴露给用户,因为呈现速度很慢并且不符合预期的响应时间。OCCAPI缓存层负责缓存来自OCCAPI服务器的OCCAPI响应。通常,这意味着缓存对GET和HEAD请求的响应。如果响应被OCCAPI缓存层缓存,它会立即返回给SSR节点,而无需请求到达实际的OCCAPI服务器,从而使SSR节点可以非常快速地执行渲染。建议为OCCAPI服务器设置某种缓存层,因为这部分在服务器端渲染中花费的时间最多。如果OCCAPI缓存层不包含给定请求的缓存响应,它会将其转发给OCC服务器进行处理。
