拆分着陆页和单页应用程序是个好主意吗
Is it good idea to split landing page and single page app
我有应用架构问题。
我想用 nextjs 之类的东西制作登陆页面,因为它需要 SEO。
我将制作不需要 SEO 且需要登录的 React 应用程序。
我的想法是用户可以从登陆页面重定向到应用程序登录页面。
但是这应该如何托管,甚至是这个好主意吗?
两者都应该托管在不同的域上吗?
在我们开始之前,我同意你的看法,这两个不同的网站具有完全不同的行为,因此需要不同的处理方法。
切中要点 - 让我们将您的问题分解为以下因素:
- 可用性
- 传入流量
- 定价
可用性
大多数情况下,您的着陆页应该通过 CDN
提供,以便获得全球覆盖,而应用本身 可能 使用 cdn
。需要考虑的一些技术要点:
- 如果该页面也是使用现代堆栈构建的,它也可以通过
cloud-based storage
托管
- 您可以 select 来自托管云提供商的 CDN(例如
aws
、azure
、gcp
等)或使用完全外部的服务 (例如 max cdn
)。主要看你网站的技术栈
传入流量
由于登录页面对一般 public 开放并使用 anonymous access
(例如 - 无需登录),它们处于 ddos
和其他恶意攻击的高风险级别。这就是为什么这些网站大多托管在 waf
、gateway
或任何其他有助于这些网站保护自己免遭劫持的层级之后。此外,在大多数用例中,这些网站应该处理非常高的负载(远远超过受登录保护的应用程序本身)。一些关键点:
- 着陆页网站负载可能会在没有任何警告的情况下发生巨大变化..因此应以
elastic high availability
方式部署它们,这意味着 - 当出现高负载时 - 请使用更多资源来处理这些负载(并且请当负载 return 到正常水平时自动减少它们)
- 就日志而言 - 处理
identify users
和处理 anonymous access
时的传入流量不同 - cyber security
和 data analysis
- 需要登录的应用程序大多需要使用可靠的
gateway
和某种 identity management
解决方案。这些部分在功能和资源使用方面对着陆页没有任何好处
定价
是的,我们希望获得尽可能多的灵活性,但我们也希望支付尽可能低的价格。耦合这 2 个不同的应用程序可能会导致仅使用昂贵的资源来处理登录页面加载。另一方面 - 将它们解耦将使我们能够跟踪每个资源组并仅为我们使用的资源付费。所以是的 - 它甚至在定价方面也有意义
简而言之(有点)- 2 个不同的应用程序应该有 2 种不同的部署方式 - 每种都有自己的技术堆栈和配置。那会给我们
- 灵活性 - 改变一种环境不会损害另一种环境
- 部署 - 2 个不同的管道 - 每个管道仅专用于一个解决方案
- 定价 - 无需浪费资源(例如:过度使用消耗大部分时间未使用的资源的图书馆)因此 - 支付更少
- DevOps - 在某些用例中 - 2 名不同的 DevOps 人员可以处理每个管道,这可能是一个优势
希望此信息对您有所帮助
Web 部署架构很难。您最不需要的是两个版本。从这两种风格中选择一种并坚持下去:
- 网站
- 单页应用程序
这些架构中的任何一个都可以混合使用经过身份验证和未经身份验证的视图。
因素
- 搜索引擎优化
- 浏览器安全
- 全球表现
- 用户和开发者体验
网站
这些页面在上面的前两个方面表现良好,pre-rendered 页面在正确完成时对 SEO 有好处。
SPA
这些可以在所有四个方面表现良好,包括使用 CDN 作为 ymz 点 out.There 是改进 SPA 的 SEO 的技术,例如 return a pre-rendered page based on bot user agents.
安全
在设计您的 Web 架构时,这可能是最重要的考虑因素,然后您才能意识到其他好处。例如,如果您想在浏览器中使用安全 cookie 并同时使用 CDN,您将需要实施一个棘手的 API 驱动的身份验证流程 - 请参阅 my blog post 了解一些相关内容。
我有应用架构问题。
我想用 nextjs 之类的东西制作登陆页面,因为它需要 SEO。
我将制作不需要 SEO 且需要登录的 React 应用程序。
我的想法是用户可以从登陆页面重定向到应用程序登录页面。
但是这应该如何托管,甚至是这个好主意吗?
两者都应该托管在不同的域上吗?
在我们开始之前,我同意你的看法,这两个不同的网站具有完全不同的行为,因此需要不同的处理方法。
切中要点 - 让我们将您的问题分解为以下因素:
- 可用性
- 传入流量
- 定价
可用性
大多数情况下,您的着陆页应该通过 CDN
提供,以便获得全球覆盖,而应用本身 可能 使用 cdn
。需要考虑的一些技术要点:
- 如果该页面也是使用现代堆栈构建的,它也可以通过
cloud-based storage
托管
- 您可以 select 来自托管云提供商的 CDN(例如
aws
、azure
、gcp
等)或使用完全外部的服务 (例如max cdn
)。主要看你网站的技术栈
传入流量
由于登录页面对一般 public 开放并使用 anonymous access
(例如 - 无需登录),它们处于 ddos
和其他恶意攻击的高风险级别。这就是为什么这些网站大多托管在 waf
、gateway
或任何其他有助于这些网站保护自己免遭劫持的层级之后。此外,在大多数用例中,这些网站应该处理非常高的负载(远远超过受登录保护的应用程序本身)。一些关键点:
- 着陆页网站负载可能会在没有任何警告的情况下发生巨大变化..因此应以
elastic high availability
方式部署它们,这意味着 - 当出现高负载时 - 请使用更多资源来处理这些负载(并且请当负载 return 到正常水平时自动减少它们) - 就日志而言 - 处理
identify users
和处理anonymous access
时的传入流量不同 -cyber security
和data analysis
- 需要登录的应用程序大多需要使用可靠的
gateway
和某种identity management
解决方案。这些部分在功能和资源使用方面对着陆页没有任何好处
定价 是的,我们希望获得尽可能多的灵活性,但我们也希望支付尽可能低的价格。耦合这 2 个不同的应用程序可能会导致仅使用昂贵的资源来处理登录页面加载。另一方面 - 将它们解耦将使我们能够跟踪每个资源组并仅为我们使用的资源付费。所以是的 - 它甚至在定价方面也有意义
简而言之(有点)- 2 个不同的应用程序应该有 2 种不同的部署方式 - 每种都有自己的技术堆栈和配置。那会给我们
- 灵活性 - 改变一种环境不会损害另一种环境
- 部署 - 2 个不同的管道 - 每个管道仅专用于一个解决方案
- 定价 - 无需浪费资源(例如:过度使用消耗大部分时间未使用的资源的图书馆)因此 - 支付更少
- DevOps - 在某些用例中 - 2 名不同的 DevOps 人员可以处理每个管道,这可能是一个优势
希望此信息对您有所帮助
Web 部署架构很难。您最不需要的是两个版本。从这两种风格中选择一种并坚持下去:
- 网站
- 单页应用程序
这些架构中的任何一个都可以混合使用经过身份验证和未经身份验证的视图。
因素
- 搜索引擎优化
- 浏览器安全
- 全球表现
- 用户和开发者体验
网站
这些页面在上面的前两个方面表现良好,pre-rendered 页面在正确完成时对 SEO 有好处。
SPA
这些可以在所有四个方面表现良好,包括使用 CDN 作为 ymz 点 out.There 是改进 SPA 的 SEO 的技术,例如 return a pre-rendered page based on bot user agents.
安全
在设计您的 Web 架构时,这可能是最重要的考虑因素,然后您才能意识到其他好处。例如,如果您想在浏览器中使用安全 cookie 并同时使用 CDN,您将需要实施一个棘手的 API 驱动的身份验证流程 - 请参阅 my blog post 了解一些相关内容。