Angular University是一个扩展功能的开源项目。此项目使服务器上的服务器上方。
为了在服务器上渲染,Angular使用Node.js的DOM实现-Domino。对于每个获取请求,Domino将创建一个类似的浏览器文档对象。在此对象的上下文中,Angular初始化了应用程序,然后将请求发送到后端以执行各种异步任务,并将任何更改应用于组件,并且它仍在node.js环境中运行。渲染引擎然后将DOM序列化为字符串并将字符串提供给服务器。服务器将此HTML作为对GET的响应发送。渲染。
使用角大学最常见的问题是使用角大学。最常见的问题是用户在网站上打开页面并查看白屏幕。在翻译到Web应用程序领域的术语中,它是第一个字节(TTFB).TTFB是指浏览器请求的时间页面到服务器的时间接收第一个信息字节。在这种情况下,浏览器确实希望从服务器接收响应,但请求随着时间的推移结束。
在分析此绩效问题之前,我们需要了解Zone.js和ApplicationRef。
Zone.js是一种工具,允许开发人员跟踪异步操作。在其帮助的情况下,Angular创建了自己的区域并在其中启动了应用程序。在Angular区域的每个异步操作的末端,将触发更改检测。
ApplicationRef是对正在运行的应用程序(文档)的引用。在此类的所有功能中,我们对ApplicationRef.isstable attribute.it是可观察到的布尔值。当Angular区域中没有异步任务,是真的,当有任何异步任务时,ISSTABLE是错误的。
因此,应用的稳定性取决于角区域中异步任务的存在。
当该应用程序的应用程序Ref.istable首次成为正确时,Angular将呈现当前的应用程序状态并清理平台资源。
现在,我们可以假设用户正在尝试打开无法达到稳定状态的应用程序。SETINTERVAL,RXJS.INTERVAL或在Angular区域运行的任何其他递归操作,HTTP请求将防止Angular应用程序进入稳定状态。
我们可以使用RXJS的超时操作员强迫长时间的HTTP请求超时。
上面示例的逻辑是,如果HTTP请求在两秒钟内未收到服务器的响应,请输入Catcheror错误处理模块。
该解决方案的缺点是,对于每个HTTP请求,我们需要手动向其添加超时操作员。
更优雅的实现是使用开发包。
如果将模块导入到AppServerModule中,则HTTP请求的超时只能在服务器侧面渲染环境中起作用。
原来的;https://juejin.cn/post/7098340173187907598