我一直在查看亚马逊 S3和亚马逊 CloudFront以及其他提供商提供的类似服务。有一件事我不明白为什么Amazon CloudFront 定价与我见过的其他 CDN 不同,它似乎没有存储成本。
我明白,我的文件确实存储在 S3 上。S3 有存储成本。但是,当我激活 CloudFront 时,据我所知,我的文件将被复制到许多地理分布的数据中心。通过只收取传输费(加上请求费)而不收取存储费,在我看来,如果客户需要大量存储但传输量低,亚马逊会受到损害。
由于这似乎不对,我想问:我是否正确地理解了 Amazon CloudFront 不收取存储费用(高于 S3 存储成本)?如果我没有误解,那么 Amazon 是否对其 CloudFront 服务设置了存储限制,以防止因客户需要大量存储但使用很少的带宽而蒙受损失?
答案1
确实,Cloudfront 不收取存储费用,但您误解了这一点:
我的文件将被复制到许多地理分布的数据中心。
不正确。
Cloudfront 在全球拥有数十个边缘站点,但您的内容并不会准确地复制到这些站点。
相反,当浏览器尝试获取您的某个文件/对象时,请求会到达其中一个位置,然后 Cloudfront 会检查该位置是否已具有合适新鲜度的文件副本,或者是否需要从原始服务器(某些情况下为 S3)获取。
如果 Cloudfront 边缘位置中存在可用的本地副本,则将其返回给请求者。如果不存在,则从源服务器获取文件,返回给请求者,然后将其保存在该 Cloudfront 边缘位置,以供下次需要时使用。
无法保证对象的副本会一直保留在该边缘直至过期,但通常情况下,到达同一云端边缘位置的同一对象的后续请求将提供本地缓存的副本。
因此,对于拥有大量数据和很少流量的客户来说,亚马逊的 Cloudfront 存储内部成本可以忽略不计……因为从未请求的任何内容都不会被存储,而需求非常低的任何内容都可以从缓存中逐出。
答案2
是的,你说得对。你不需要为存储付费。你只需要为请求和传输付费。如果有人使用 CloudFront,他们很可能会获得一些相当不错的点击量。另外,永远不要忘记存储很便宜。
此外,Amazon 还使用一种算法来决定是否缓存某些内容。如果没有命中某些内容,我猜测(因为 Amazon 不会透露该算法),请求将返回原点,而不是缓存在 CloudFront 上。