我使用CNAMEs和S3/CloudFront一起提供一些静态文件,如js、css、图像等。
我这样做是为了使存储桶的URL更漂亮,因为我认为最好将所有内容都指向我的站点,以防将来我想要移动这些文件,更改应该是透明的。
今天在看博客时,我看到一些人认为CNAME在速度上是邪恶的。
那么,该怎么想呢?
发布于 2009-04-14 17:29:05
CNAMES使用DNS查找添加了另一级别的间接性,因此会招致一些惩罚。但是,一旦通过DNS查找了IP,它就应该保持缓存状态,并且不应该再对该客户端进行惩罚。
确保在您的DNS条目中正确设置过期时间,您应该不会看到任何可见的延迟。
发布于 2009-04-14 18:10:16
根据其他答案,使用CNAME应该只会导致非常小的额外DNS解析延迟,而且只有当结果还没有在递归DNS服务器的缓存中时才会这样。
请注意,DNS客户端通常不会显式请求CNAME记录。通常,他们会询问他们实际想要的任何记录类型-对于可能是A或AAAA记录的web浏览器。
上游服务器的工作是识别查询的域名中有一个CNAME条目,然后查找并返回目标结果。在这种情况下,CNAME记录和所需的结果都会在DNS响应的Answer部分中返回(而不是在Additional部分中作为其他人应答)。
为了获得最佳性能,最好将CNAME的目标托管在与包含CNAME的域名相同的权威DNS服务器上,以便无需进一步的DNS请求即可完成CNAME解析。
发布于 2009-04-14 17:44:16
在大多数情况下,使用CNAME的影响很小。DNS响应格式允许服务器在消息中添加一些附加数据,在许多情况下,当您查找CNAME记录时,服务器会在附加数据部分添加相应的A记录,因此不需要再进行查找。
https://stackoverflow.com/questions/748584
复制相似问题