我是一个网站所有者,计划使用亚马逊的 cloudfront S3。我已经阅读了所有关于 CDN 功能的内容,但我仍然有一个未解答的问题。
即使我的主服务器宕机,CDN 是否仍能工作?这是我对它感兴趣的主要原因。因为我的服务器在马里经常因断电而中断。
答案1
这取决于谁托管您的 CDN。如果您将网站托管在一台服务器上,而将 CDN 托管在第三方,那么当您的网站关闭时,您的 CDN 很可能会保持活动状态。但情况可能并非如此,因为某些 CDN 仅分发他们可以验证是否在您的网站上的内容。
附注:CDN 并非用于托管整个网站。因此,如果您认为可以使用 CDN 来替代网站托管或将其用作某种故障转移计划,那么您就大错特错了。
TL;DR - 您必须询问您的 CDN 提供商。
答案2
CDN 的设计目标是可扩展性和性能,而不是高可用性。在任何时候,它们都可能需要访问原始文件。
大多数人使用它们来存储静态文件,例如图像、css 和 javascript 文件。有些可以配置为缓存 HTML,但前提是你有一个完全静态的网站。如果是这种情况,你可以在 S3 上托管整个网站,根本不需要服务器。
答案3
一般来说是的,最长为 TTL。
使用 CDN 时,您通常会为内容配置 TTL(生存时间)。这是缓存在决定必须使用最新内容刷新缓存之前可以保留的最大时间。例如,假设您将所有 *.jpg URL 的 TTL 设置为 5 分钟。
这样,如果您的服务器宕机了,您就有额外的 5 分钟时间在用户注意到之前将其恢复。嗯,至少对于 .jpg 来说是这样。嗯,至少对于碰巧事先缓存的 .jpg 来说是这样。
此外,一些 CDN 使用 Akamai NetStorage 等功能,您可以将内容直接上传到 CDN——CDN 会获得一些内容并被告知直接提供这些内容。由于这里从一开始就没有“按需”的“拉”式缓存,因此当您的服务器停机时,这当然应该可以工作。
但正如其他发帖者所指出的,这并不是 CDN 的设计目的,它们无法保证这种行为会起作用。它只是碰巧通常起作用(当你看到它发生时,你会觉得很棒!)。当然,对于具体的技术细节,你必须联系你的提供商。
答案4
大多数 CDN 都会在一段时间内 (TTL) 从源(在本例中是您的服务器)缓存 (动态) 内容。在 Amazon 的 Cloudfront 管理控制台中,解释了 S3 存储桶的缓存控制。
Amazon S3 的默认行为是缓存对象 24 小时。
您可以通过在原始服务器上提供/写入 Cache-Control 标头或 Expires 标头来影响默认行为。
当您使用 Cache-Control max-age 标头时,最小值为 0。此时,Amazon 将每次向您的原始服务器发送内容,以检查对象是否已发生变化。
当您对对象使用 Expires 标头时,Amazon 将不会在该日期之前联系您的原始服务器。
我希望这可以澄清亚马逊的行为。