在Angular应用中使用服务端渲染有几个原因:SSR有助于SEO。搜索引擎爬虫可以解析通过服务器呈现的HTML页面的源代码。对于运行在CSR模式下的单页应用,页面的源代码是在客户端浏览器中执行复杂的JavaScript生成的,很多现代爬虫对此无能为力。Facebook和Twitter等社交媒体平台可以在分享时显示SSR渲染网站的预览。网页在服务器上渲染后,可以缓存页面内容,从而可以更快的响应用户对同一页面的请求。要在Angular应用程序中实现服务器端渲染,您可以使用Angular通用包。我们在使用AngularUniversal时,向OCC服务器发起业务数据请求的API会被触发两次。第一个在服务器呈现页面时执行一次,第二个在客户端应用程序启动时触发。这种API反复触发的方式会导致延迟问题和糟糕的用户体验,因为发生这种情况时屏幕经常会闪烁。此外,SAPCCV2上的SSR容器是Node.js代码运行的地方,因此更容易受到性能下降的影响。选择Node.js和server.jsjsapps-*后,可以在Dynatrace的TechnologyandProcesses页面查看CPU和内存。请注意,SSR应用程序文件的名称可能会有所不同,默认为main.js。后续页面将显示所选任何给定指标的平均利用率。单击单个pod将带您进入其进程详细信息页面,您可以在其中查看有关cpu/内存利用率和重启时间的信息。对于SSR,有关CPU的详细信息将位于“系统性能”选项卡下,而有关V8内存使用情况的详细信息将位于“Node.js指标”选项卡下。当发现SSRPod的CPU使用率很高时,基于Node.js的设计,虽然我们可以通过垂直扩展来缓解这个问题,但另一方面,如果并发请求数很大,那么我们也可以考虑水平扩展的方式来降低每个Pod的CPU利用率。尽可能多地消除SpartacusStorefront中的CPU密集型代码,如有必要,研究是否可以将逻辑卸载到OCC层执行。
