有没有一种方法可以使用 Angular Universal 创建一个 Angular 应用程序来从服务器而不是客户端的浏览器发送所有 http 请求?

问题描述 投票:0回答:2

由于某些要求,我需要让 Angular 应用程序在服务器上而不是在客户端/浏览器上发出所有请求。

我使用 Angular Universal 在我的角度应用程序上启用了 SSR(服务器端渲染),期望服务器发出所有 http 请求。后来我发现,在服务器完成页面和应用程序的渲染后,应用程序的客户端版本接管并且所有调用都在客户端浏览器上进行,这不是我想要的。

有没有一种方法可以使用 Angular Universal 或任何其他包/方法来使 Angular 中的所有请求仅由服务器发出?

链接到我尝试过但无效的解决方案: 文字

angular express server-side-rendering angular-universal universal
2个回答
0
投票

您必须管理在服务器端生成的状态。 有不同的方法,但最好的方法是使用 TransferState,你可以有意识地保存任何你喜欢的请求。


0
投票

您应该使用 TransferState 并保存服务器状态并在向 API 发送请求之前检查该状态。阅读有关 TransferState 的信息,当然这篇文章可以帮助您。

转移状态

您还可以使用 TransferHttpCacheModule 并将其添加到应用程序模块,导致客户端自动忽略在服务器端调用的 Get 请求。

更新: 在今天发布的 Angular 版本 16 中,httpclient 模块已经更新,它现在将缓存在服务器上发出的请求,以避免在客户端再次重新获取相同的数据。

看这篇文章

© www.soinside.com 2019 - 2024. All rights reserved.