静态服务器端渲染或动态服务器端渲染
Static Server Side Rendering or Dynamic Server Side Rendering
为了使网站 SEO 友好,我们必须在 Angular
中实施 Server side rendering
应用程序。
我已经阅读了很多关于服务器端渲染的文章。在阅读的过程中,我了解到两种渲染方式。
1.静态服务器端渲染
2. 动态服务器端渲染
但这是什么意思?我没有从我读过的文章中得到这个。仍然对为我的应用程序选择哪一个感到困惑。
所以我只想知道对于哪种类型的 application/website 我们必须使用静态,对于哪种类型的 application/website 我们必须使用动态服务器端渲染?
正如您所说,有两种方法可以在服务器上呈现 Angular 应用程序。这是区别,并附有示例来说明它们的用法。
静态服务器端渲染
本质上,这是指为您的应用程序生成预渲染页面的过程,然后您可以使用 Amazon S3. The fact that these files are static also means they'd be easy to serve out of a CDN. You simply build the files on your local machine or CI environment, then push to wherever your host is. Here's a short guide on Pre-rendering Angular Applications.
等服务静态托管这些页面
最终,您在 Angular 应用程序中定义的每个路由都会生成一个 HTML 文件,其中包含在加载时显示的任何动态生成的内容。这显然适用于搜索引擎和爬虫。当浏览器加载您的某个页面时,它会立即获得预呈现的响应,然后 Angular 开始执行您的控制器、服务等中定义的所有动态行为。
示例:
您已经建立了一个展示某些产品的营销网站。它有固定数量的路线(家、关于、联系)。构建应用程序后,您将获得 3 个静态 HTML 文件、一些 Javascript 以及涉及的任何其他资产。
动态服务器端渲染
您可能已经猜到,这在您拥有动态路由时特别有用(例如 /products/:productId
)。使用 Angular Universal 我们可以 运行 Node 中的 Express.js 服务器,它将在客户端请求时动态呈现每个页面。这需要更多时间,但非常值得!
示例:
您已经建立了一家商店,每次添加新产品时,您都希望它可用于 Google 和喜欢的索引。您还希望它在 Facebook 等 Open Graph 预览渲染器中显示良好。
动态SSR(服务端渲染)&静态预渲染
Dynamic SSR 的概念是将启动一个活动的 Node 服务器,每当路由被命中时,它将动态生成并序列化应用程序——将该字符串返回到浏览器。
Static Pre-rendering 是当我们想要预渲染一个路由列表,并创建静态文件时,(即:index.html,about-us.html, 等),然后使用我们选择的服务器稍后提供这些文件。
那么我们如何知道何时选择哪一个?
预渲染通常会为您提供更好的性能,因为我们不会等待服务器在您的应用程序中访问所有必要的 API,并且无需“序列化”任何内容,它已经具有所有序列化 HTML 你的应用程序为每个路由文件输出。
在考虑我们需要采取哪条路线之前,我们会与客户一起考虑以下问题。
何时使用静态预渲染:
您的应用程序本身是相当静态的。
(或者至少是您尝试预渲染的路线)
例如:主页 |关于我们 |联系我们
您网站的非常动态的部分(以及 Login/Auth 屏障后面的部分)可以指向应用程序的正常客户端呈现 (CSR) 版本,并且 Angular 可以 bootstrap 本身正常。
您的应用程序不经常更新。
每当需要对静态路由进行一些更改时,您只需再次 运行 构建脚本并重新发布包含所有预渲染文件的 /dist 文件夹。
何时使用动态 SSR:
- 您的应用程序(以及您需要到 SSR 的路由)非常动态
- 您有一份“热门产品”列表 | “实时数据” |等等,您需要为每个服务器端渲染正确填充。
- 您的应用程序结构是基于 JSON 文件或 CMS 呈现的,其中任何内容都可能在任何给定时刻发生变化。
通常大多数应用程序都需要静态预渲染(因为身份验证墙后面的任何路由都不会从使用 SSR 中获得 much/any 好处,因为其中之一主要目的是 SEO 收益,并提高感知性能。
请记住,您始终可以让应用程序的某些方面在 SSR 期间不呈现,而在 CSR 期间填充这些动态部分! (客户端渲染)
参考
https://medium.com/@MarkPieszak/angular-universal-server-side-rendering-deep-dive-dc442a6be7b7
为了使网站 SEO 友好,我们必须在 Angular
中实施 Server side rendering
应用程序。
我已经阅读了很多关于服务器端渲染的文章。在阅读的过程中,我了解到两种渲染方式。
1.静态服务器端渲染 2. 动态服务器端渲染
但这是什么意思?我没有从我读过的文章中得到这个。仍然对为我的应用程序选择哪一个感到困惑。
所以我只想知道对于哪种类型的 application/website 我们必须使用静态,对于哪种类型的 application/website 我们必须使用动态服务器端渲染?
正如您所说,有两种方法可以在服务器上呈现 Angular 应用程序。这是区别,并附有示例来说明它们的用法。
静态服务器端渲染
本质上,这是指为您的应用程序生成预渲染页面的过程,然后您可以使用 Amazon S3. The fact that these files are static also means they'd be easy to serve out of a CDN. You simply build the files on your local machine or CI environment, then push to wherever your host is. Here's a short guide on Pre-rendering Angular Applications.
等服务静态托管这些页面最终,您在 Angular 应用程序中定义的每个路由都会生成一个 HTML 文件,其中包含在加载时显示的任何动态生成的内容。这显然适用于搜索引擎和爬虫。当浏览器加载您的某个页面时,它会立即获得预呈现的响应,然后 Angular 开始执行您的控制器、服务等中定义的所有动态行为。
示例:
您已经建立了一个展示某些产品的营销网站。它有固定数量的路线(家、关于、联系)。构建应用程序后,您将获得 3 个静态 HTML 文件、一些 Javascript 以及涉及的任何其他资产。
动态服务器端渲染
您可能已经猜到,这在您拥有动态路由时特别有用(例如 /products/:productId
)。使用 Angular Universal 我们可以 运行 Node 中的 Express.js 服务器,它将在客户端请求时动态呈现每个页面。这需要更多时间,但非常值得!
示例:
您已经建立了一家商店,每次添加新产品时,您都希望它可用于 Google 和喜欢的索引。您还希望它在 Facebook 等 Open Graph 预览渲染器中显示良好。
动态SSR(服务端渲染)&静态预渲染
Dynamic SSR 的概念是将启动一个活动的 Node 服务器,每当路由被命中时,它将动态生成并序列化应用程序——将该字符串返回到浏览器。
Static Pre-rendering 是当我们想要预渲染一个路由列表,并创建静态文件时,(即:index.html,about-us.html, 等),然后使用我们选择的服务器稍后提供这些文件。
那么我们如何知道何时选择哪一个?
预渲染通常会为您提供更好的性能,因为我们不会等待服务器在您的应用程序中访问所有必要的 API,并且无需“序列化”任何内容,它已经具有所有序列化 HTML 你的应用程序为每个路由文件输出。 在考虑我们需要采取哪条路线之前,我们会与客户一起考虑以下问题。
何时使用静态预渲染:
您的应用程序本身是相当静态的。 (或者至少是您尝试预渲染的路线) 例如:主页 |关于我们 |联系我们
您网站的非常动态的部分(以及 Login/Auth 屏障后面的部分)可以指向应用程序的正常客户端呈现 (CSR) 版本,并且 Angular 可以 bootstrap 本身正常。
您的应用程序不经常更新。 每当需要对静态路由进行一些更改时,您只需再次 运行 构建脚本并重新发布包含所有预渲染文件的 /dist 文件夹。
何时使用动态 SSR:
- 您的应用程序(以及您需要到 SSR 的路由)非常动态
- 您有一份“热门产品”列表 | “实时数据” |等等,您需要为每个服务器端渲染正确填充。
- 您的应用程序结构是基于 JSON 文件或 CMS 呈现的,其中任何内容都可能在任何给定时刻发生变化。
通常大多数应用程序都需要静态预渲染(因为身份验证墙后面的任何路由都不会从使用 SSR 中获得 much/any 好处,因为其中之一主要目的是 SEO 收益,并提高感知性能。 请记住,您始终可以让应用程序的某些方面在 SSR 期间不呈现,而在 CSR 期间填充这些动态部分! (客户端渲染)
参考 https://medium.com/@MarkPieszak/angular-universal-server-side-rendering-deep-dive-dc442a6be7b7