即使我的服务器停机,CDN是否还能工作?

我是一个计划使用亚马逊的云端S3的网站所有者。 我一直在阅读有关CDN可以做的所有事情,但是我仍然有一个没有答案的问题。

即使在我的主服务器closures的情况下,CDN是否仍能正常工作? 这是我感兴趣的主要原因。 因为我的服务器在马里因为停电而经常中断。

这取决于谁在托pipe您的CDN。 如果您在一台服务器上托pipe您的网站,并且在第三方托pipe您的网站,那么当您的网站closures时,您的CDN可能仍会保持活动状态。 但是,情况可能并非如此,因为有些CDN只分发可以在您的网站上进行validation的内容。

一个侧面说明,CDN不是托pipe您的整个网站。 所以,如果你认为你可以用一个来代替你的虚拟主机,或者用它来作为某种故障转移计划,那么你就会吼出错误的树。

TL; DR – 您必须向您的CDN提供商咨询。

CDN旨在提供可扩展性和性能,但不能提供高可用性。 在任何时候,他们可能需要访问原始文件。

大多数人使用它们来存储静态文件,如图像,CSS和JavaScript文件。 有些可以configuration为cachingHTML,但只有当你有一个完全静态的网站。 如果是这样的话,你可以在S3上托pipe所有东西,根本不需要服务器。

一般来说,是的,直到TTL。

使用CDN时,通常为您的内容configurationTTL(生存时间)。 在决定绝对必须用最新的内容刷新caching之前,这是caching可以获得的最大数量。 例如,假设您将所有* .jpgurlconfiguration为5分钟的TTL。

那么如果你的服务器出现故障,你还有5分钟时间才能使用户注意到。 那么,至less对于.jpgs。 那么,至less对于事先已经被caching的.jpgs来说呢。

此外,一些CDN使用Akamai NetStorage等function,您可以将内容直接上传到CDN – CDN被给予一些内容,并被告知直接提供服务。 由于从来没有一个“按需”的“拉式”caching开始,这当然应该在服务器closures时起作用。

正如其他海报所指出的那样,这不是CDNdevise的目的,它们不能保证这种行为将起作用。 它恰好正常工作(当你看到它发生的时候真棒!)。 当然,对于具体的技术细节,您必须联系您的提供商。

是的:CDN服务器即使在您的网站停机的情况下仍然可以运行,这对于处理重大中断是一个很好的select。 您对所发生的事情有相当程度的控制,因此您可以根据自己的资源和优先级调整经验。 这些选项一般属于这​​些类别:

  1. 已经被configuration为caching的对象(通常通过设置Cache-Control报头)应该可用,直到它们到期。 一些CDN提供了CDN边缘服务器从其他CDN服务器检索内容的能力,这可以在停机期间提供帮助,并且当原始服务器相对于CDN服务器的相对较高的延迟时,通常可以提高性能。

  2. 某些CDN提供了在后端服务器不可用时提供过期内容的能力(例如,使用Fastly可以启用Varnish的恩典或圣徒模式)。 显然,这对于从未被caching的内容没有帮助,但在许多情况下,它至less可以让您的核心主页,联系信息等在线工作,让您的服务器重新联机。

  3. 大多数CDN提供了尝试多个后端服务器的function,因此您可以使用单独的故障转移站点提供对您的站点有意义的体验:故障转移到其他服务器或function减less的站点,静态HTML页面等。这对于灾难性托pipe失败,因为您可以select托pipe一家完全不同的公司,或者像Akamai NetStorage一样直接与CDN提供商合作,以便他们能够支持整个协议栈。

除了第三种select,您无法控制CDN服务器上caching的内容,所以stream程最重要的部分是决定如果各种function不可用,您的站点可能会如何降级:例如,如果您有合理的HTML内容,甚至当JavaScript完全失败时,大部分信息驱动的网站可能只能运行基本的页面内容,即使更高级的function在后台悄然失败。

大多数CDN都是从原始位置caching(dynamic)内容一段时间(TTL),在这种情况下是您的服务器。 在Amazon的Cloudfrontpipe理控制台中,解释了S3存储桶的高速caching控制。

  1. Amazon S3的默认行为是caching一个对象24小时。

  2. 您可以通过在源服务器上提供/写入Cache-Control标头或Expires标头来影响默认行为。

    • 当您使用Cache-Control max-age标头时,最小值为0.此时,Amazon将为您的原始服务器提供内容,以检查对象是否每次都更改。

    • 在对象中使用Expires标头时,Amazon将不会与该服务器联系,直到该date。

我希望这能够澄清亚马逊的行为。

我在CDN工作了一年多的支持工程师,我会说这里的所有答案都很好,但是IMO @ Chris-Adams有最好的答案(如果我可以对它投票的话)。

我们的客户做的一件事就是将www指向CDN,将301指向www。 如果一个对象的TTL过期,那么如果边缘在caching中可用,边缘将会提供过期的内容。

这样说,如果正常运行时间(和新鲜的内容)对你很重要,那么我会考虑把你的起源(我知道的屁股疼痛)移到一个不经常停电的主机。