Angular SSR 只负责渲染 initial page,一旦加载了初始页面,客户端 Angular 应用程序就会接剩下的交互,而后客户就能够进行 SPA 导航,并通过 ajax 调用后盾 API。
Angular SSR 须要留神的开发关键点。
如何查看一个网站是 http1.1 还是 http1.0?
ng serve 处于 dev 用处的 express 服务器:
在 Chrome 开发者工具 network 面板也能看到:
在 response header 区域也能查看:
连贯重用是应用 HTTP Keep-alive,这是 HTTP/1.1 的一个个性。通过应用 HTTP Keep-alive,一个 TCP
连贯用于程序解决多个 HTTP 申请,因而能够节俭为每个申请关上新 TCP
连贯的工夫。然而,每个 HTTP
申请自身都是独立的,因而不会主动重复使用身份验证和相似申请。
在 HTTP 1.1 中,除非另有申明,否则所有连贯都被视为长久连贯。HTTP 长久连贯不应用独自的 keepalive 音讯,它们只容许多个申请应用单个连贯。然而,Apache httpd 1.3 和 2.0 的默认连贯超时工夫仅为 15 秒,而 Apache httpd 2.2 及更高版本仅为 5 秒。短超时的长处是可能疾速交付网页的多个组件,同时不会耗费资源来运行多个服务器过程或线程太长时间。
上图右边演示了频繁的 TCP 连贯建设和敞开。
HttpClient 是一个内置的服务类,位于 @angular/common/http
包中。它对每个申请都有多个签名和返回类型。它应用 RxJS 基于可察看的 api,这意味着它返回可察看对象和订阅它所需的内容。这个 API 是基于浏览器公开的 XMLHttpRequest 接口开发的。
对于 HttpClient 是否是 singleton 的问题:
- 如果在 AppModule 的
@NgModule({providers: [...]})
或 AppModule 间接或间接导入的模块中提供服务,那么你会失去一个单例。 - 如果在
@Component(...)
中提供服务,那么将取得每个组件实例的服务实例。