内容管理系统(CMS)和内容交付网络(CDN)之间的区别?

时间:2019-12-08 09:20:54

标签: content-management-system aem amazon-cloudfront cdn

我试图弄清楚如何将CMS(如Adobe Experience Manager(AEM))与CDN服务(如AWS CloudFront)进行比较?我在比较苹果和桔子吗?预先感谢。

1 个答案:

答案 0 :(得分:2)

是的,您正在将苹果与橙子进行比较...但是可能有一个合理的解释-它们经常一起使用。

内容管理系统(CMS)是使用WordPress(软件,而非服务,用于创建,修改,管理,组织和发布内容的高级系统)是一个常见的例子。

博客托管网站是托管CMS的示例。 WordPress(公司)是托管(SaaS)CMS服务的一个示例。

内容交付网络(CDN)是低级别的基础设施提供商,通常使用分布在全球的存储,基础设施和连接性来促进电子内容的全球高性能交付。例如Amazon CloudFrontFastlyCloudFlare

CDN通常不权威地存储或呈现内容,它们仅缓存内容,并且缓存是全局分布的,内容的副本保存在经常访问的地理区域中。 CDN的行为通常类似于HTTP反向代理,从权威的原始服务器(通常是同一服务器的集群)中提取内容,尽管某些情况下CDN可以为允许原点位于单个地理位置。

CMS通常部署在CDN的后面 – CMS服务器(群集)是原始服务器。即使规模很小,是否执行此操作通常也是一个容易的决定。查看器连接到CDN并发出请求,CDN将在可能的情况下从缓存中提供该请求,否则将转发给源。如果可能,生成的响应将返回到原始请求者,并存储在CDN的缓存中。与CDN部署相比,这种安排通常可以使原始资源的缩放比没有CDN时更小,因为CDN缓存意味着原始资源的工作量较小。

不过,请注意,CDN往往超出了优化全局静态内容交付的简单定义,甚至超出了对“ CDN”的任何适当定义。

CDN越来越多地集成无服务器计算服务,例如CloudFront的Lambda@EdgeCloudFlare Workers,允许您部署无服务器功能,这些功能可以操纵HTTP标头,做出请求路由决策,甚至生成呈现的响应。这超出了CDN的传统范围,但是可以想象,可以将整个CMS嵌入CDN基础结构中,但这确实并没有模糊CMS(软件)和CDN(基础结构)之间的区别。

CloudFront还可以使用request collapsing来检测来自同一地理区域中多个浏览器的请求,以获取完全相同的资源。如果对不在边缘缓存中的内容的请求已经在发送到原始服务器,并且有更多对同一资源的请求到达,则CloudFront实际上将保留那些未决的请求,等待服务器将单个响应返回给单个请求,并将该响应克隆到所有正在等待它的浏览器。 Fastly supports this, too,并且似乎比CloudFront可以提供更精细的控制,后者可以自动实现该功能。

某些CDN还可将请求/响应从Web浏览器传递到原始服务器,而这些请求/响应不是正确的“内容”请求(例如HTML表单发布请求),具有多种优势,包括更简单的集成(所有站点)流量可以通过单个域,避免跨域复杂性),优化的传输和TCP堆栈,更快的TLS协商(由于减少了浏览器和它所连接的Web服务器在CDN上的往返时间),并将HTTP / 2(面向浏览器)转换为HTTP / 1.1(面向服务器)。

CDN本身还为原始服务器提供了一层DDoS保护,因为流量从正面到达CDN,并且只有CDN的背面正在与原始服务器联系。请求必须是有效的,不能从缓存中获取,并且在原始服务器甚至没有看到它们之前,都不能被CDN上存在的缓解系统(并由CDN管理)阻止。

但是重要的是要注意,所有这些功能都不是“ CDN”定义的适当组成部分。它们是这些服务提供的among others功能,这些功能被捆绑到以CDN概念进行营销和设计的产品中……因此,我建议即使在某些地方使用这些CDN服务中的一个也是一个好主意。不需要实际的CDN功能。