我们正在建立一个包含大量图像和数据的网站。我们做了很多优化,以使网站速度更快。然后,我们决定也使用AWS CloudFront使其在全球所有地区都更快。集成CloudFront后,该应用程序的运行速度更快。
但是后来我们发现,只有在网站要求时,数据才会加载到CloudFront缓存中。因此,我们担心初始加载所花费的时间与没有CDN所花费的时间相同,因为它首先从S3加载到CDN,然后再加载到用户。
此外,我们使用了默认的TTL值(即24小时)。在我们的情况下,用户可以每周登录一次或两次。因此,在这种情况下,缓存的优势在这里也无法发挥作用,因为缓存会在24小时后失效。将TTL(最大TTL)时间增加到更大的值是否可以解决问题?它会花更多的钱吗?而且我还读到,增加到更长的TTL不是一个好主意,因为它对于更新s3中的数据也有一些缺点。
答案 0 :(得分:1)
只有在第一个用户请求响应后,Cloudfront才会缓存响应。因此,对于第一个用户,它会很慢,但是对于第一个用户之后的所有其他用户,它会显着更快。因此,使用Cloudfront确实有意义。
使用默认的TTL值是可以的。由于大多数用户会看到相同的内容,并且网站也包含很多静态组件。除第一个用户外,每个用户都将看到您网站的快速响应。您甚至可以将其减少到10-12小时,具体取决于您希望数据更改的频率。
增加TTL不会产生任何额外费用。但是,无效请求将收费。因此,如果您要删除缓存,则会有一定的成本。因此,我希望将短TTL保持在期望数据更改的时间,因此不必在数据更改时使现有缓存无效。同时,最大数量的用户可以从您的CDN中受益。
更新:如果您只有1个用户长时间(1个星期左右)使用该网站,那么完全不使用CloudFront可能不会带来太多好处。仅当有多个用户请求相同资源时,CloudFront和所有缓存服务才有效。
但是,使用CloudFront可能仍会带来一点好处,因为请求将通过AWS的骨干网从边缘位置路由到S3,这比Internet快得多。但是,这对您而言是否具有成本效益,取决于使用该网站的用户数量和运行速度。
除了使用CloudFront外,您还可以尝试使用S3跨区域复制来提高整体速度。 Cross Region Replication可以在将存储桶添加到一个区域时将其复制到其他区域。这可以帮助最小化来自其他区域的用户的延迟。