【问题标题】:How to use CloudFront efficiently for less popular website?对于不太受欢迎的网站,如何有效地使用 CloudFront?
【发布时间】:2019-03-12 19:51:16
【问题描述】:

我们正在构建一个包含大量图像和数据的网站。我们进行了很多优化,以使网站更快。然后我们决定使用 AWS CloudFront 来加快全球所有区域的运行速度。集成 CloudFront 后,应用程序运行速度更快。

但后来我们发现数据只有在网站请求时才会加载到 CloudFront 缓存中。所以我们担心初始加载会与没有 CDN 时所用的时间相同,因为它首先从 S3 加载到 CDN,然后再到用户。

此外,我们使用了默认的 TTL 值(即 24 小时)。在我们的例子中,用户可以每周登录一次或两次到这个网站。因此,在这种情况下,缓存的优势也不会在这里发挥作用,因为缓存会在 24 小时后过期。将TTL(最大TTL)的时间提高到更大的值会解决问题吗?是不是要花更多的钱?而且我还读到,增加更长的 TTL 不是一个好主意,因为它对于更新 s3 中的数据也有一些缺点。

【问题讨论】:

  • 所有用户会看到相同的内容还是每个用户会在网站上看到不同的内容?
  • 另外,网站上有很多静态内容吗?比如可以提供给多个用户的页眉或页脚图像或其他媒体内容?
  • 大部分用户会看到相同的内容。并且该网站包含大量静态内容。

标签: amazon-web-services amazon-cloudfront cdn


【解决方案1】:

Cloudfront 将仅在第一个用户请求后缓存响应。所以对于第一个用户来说它会很慢,但是对于第一个用户之后的每个其他用户来说它会明显更快。所以使用 Cloudfront 确实有意义。

使用默认的 TTL 值是可以的。由于大多数用户会看到相同的内容,并且网站也有很多静态组件。除了第一个用户之外,每个用户都会看到您网站的快速响应。您甚至可以将其缩短到 10-12 小时,具体取决于您希望数据更改的频率。

增加 TTL 无需额外费用。但是,无效请求是收费的。因此,如果要删除缓存,则会增加成本。所以我宁愿保持一个短的 TTL,因为你的数据预计会发生变化,所以当你的数据发生变化时,你不必使现有的缓存失效。同时,最大数量的用户可以从您的 CDN 中受益。

No additional charge for the first 1,000 paths requested for invalidation each month. Thereafter, $0.005 per path requested for invalidation.

更新:如果您只有 1 个用户长时间(1 周左右)使用该网站,则使用 CloudFront 可能根本没有多大好处。 CloudFront 和所有缓存服务仅在有多个用户请求相同资源时才有效。

但是,使用 CloudFront 可能仍会获得边际收益,因为请求将通过 AWS 的骨干网络从边缘站点路由到 S3,这比互联网快得多。但这对您来说是否具有成本效益取决于有多少用户在使用该网站以及它的速度有多慢。

除了使用 CloudFront,您还可以尝试 S3 跨区域复制来提高整体速度。 Cross Region Replication 可以在将存储桶添加到一个区域时将它们复制到不同的区域。这有助于最大限度地减少来自其他地区的用户的延迟。

【讨论】:

  • 如果一个特定地区每周只有一个用户使用我的网站一次。在那种情况下,网站对他来说总是很慢,对吧?如果所有其他地区都是这种情况,我该如何解决这种情况?这就是问题。
  • 根据输入更新了我的答案。不确定它是否有帮助:)
  • 如果我将最大 TTL 更新为 1 年并使用失效或版本标识符进行文件更新怎么办?这是一种好方法还是更坏的方法?
  • 如果您愿意支付失效费用,并且您的数据不会经常更改。在我看来,这将是一个很好的方法。通过将 TTL 增加到 1 年,您可以确保 CloudFront 能够有效地加快大多数用户(当然第一个用户除外)的速度。当您的数据发生变化时,您可以使缓存失效。
  • 但如果预计流量会非常少,我可能会寻找其他方法来优化网站并加快响应速度,而不是使用 CloudFront。但是,您最了解自己的网站和要求 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-01
  • 2021-02-20
  • 2017-05-30
  • 1970-01-01
  • 1970-01-01
  • 2020-08-12
  • 2010-09-07
相关资源
最近更新 更多