我正在考虑 Cloudflare 的CNAME 扁平化,它允许在顶级域上大致等效 CNAME。
我对那篇文章的印象是,任何查询他们的人都将其视为 A 记录(从 Heroku 传递了 5 分钟的 TTL),但在幕后,他们会查找给定主机名的 IP 并将其返回。
但是因为他们将其公开为 A 记录,那 5 分钟的 TTL 不是意味着其他人可能会将返回的 IP 缓存至少 5 分钟吗?如果 ISP 等碰巧将其缓存更长时间,则更多。
据我了解,常规 CNAME 只会foo.herokuapp.com.
通过 DNS 系统缓存主机名(如 ),我猜主机名到 IP 的查找发生的时间越晚,因此不会被缓存很长时间.
那么,这是否意味着如果 Heroku 的 IP 发生变化,常规 CNAME 会很快处理新 IP,但 Cloudflare 的 CNAME 扁平化可能需要几分钟或更长时间?
如果 Heroku IP 可以像您每次部署或重新启动 dynos 时一样频繁地更改(我说得对吗?),这似乎会导致很多问题。然而,我还没有找到有关此类问题的报告。那么这是否意味着我在上面有一些不正确的假设?
如果扁平化的 CNAME 设置为“仅 DNS”(UI 中的灰色云),但“主机名的流量将通过 Cloudflare”(UI 中的橙色云),那么上述情况是否适用?将解析为 Cloudflare 的代理服务器 IP,并且主机名到 IP 的查找发生在他们的代理服务器中,因此不会被缓存?
实际上可以在 Cloudflare 中输入自定义 DNS TTL(添加 DNS 记录时);然而,可以说会有一些 DNS Recursor 不幸的是不会尊重低 TTL。
有一个解决方案,当子域是橙色云(即通过 Cloudflare)时;公共 IP 地址无需更新即可更改记录值。该记录仍将指向 Cloudflare,但 Cloudflare 会告诉该域转到其他地方。
请注意,如果您对使用 DNS 进行负载平衡、快速故障转移或地理定位感兴趣;那么最好使用 Cloudflare 的专用产品——流量管理器。