许多在线服务将其网络配置为使用CDN(内容交付网络),通过允许从地理位置相近的位置提供内容来提高性能。我已经注意到,CDN通常是从与实际服务不同的域名中提供的。
例如,访问www.amazon.com将涉及从媒体-Amazon.com中提取内容。
www.facebook.com从fbcdn.com获取内容,等等。
我的问题是,为什么这些服务不使用子域,而不是为其CDN使用完全不同的域名?
为什么不使用cdn.facebook.com而不是fbcdn.com呢?我很少看到这件事的发生。它几乎总是一个不同的域名,通常是一个基本的域名,加上了一些东西,或者是一个缩写。
我唯一能想到的是,拥有不同的域名允许使用不同的DNS提供程序来传播DNS负载,但情况并不总是如此。
这种做法是否有具体的技术原因?如果是这样,那又是什么呢?
澄清:我不关心域名注册的费用。我想任何一家广泛使用CDN的公司都能负担得起一些额外的域名。我的问题是,为什么从技术角度来看,使用子域不如使用单独的域。这种做法如此普遍的事实表明,这是有充分理由的。
发布于 2019-12-22 02:54:38
虽然每个提供者都是不同的,并且可能有不同的理由做出相同的选择,但这样做的一个共同原因是因为Cookies。
如果您的网站使用cookies,并且您的cookie可能需要用于多个子域,那么您最终将发送cookie以及每个CDN请求。这导致了两个问题:
另一个常见的原因是用户生成的内容。这方面的好例子是托管在GitHub存储库中的Gmail附件和代码。如果用户生成的内容托管在子域中,它可能会保留来自Cookies、LocalStorage等的用户信息,并将其发送给第三方。在不同的域上托管可以减轻这种形式的攻击。
发布于 2019-12-21 20:12:25
答案只能是猜测。很有可能-
处理CDN和应用程序的不同团队/构建系统(S)。通过将域分离而不是使用子域,它简化了管理和自动化,并降低了崩溃的可能性。如果一个域名在总体上是微不足道的话,那么它的成本就会很低。
https://serverfault.com/questions/996404
复制相似问题