amazon-web-services - 如何降低亚马逊Cloudfront成本?

标签 amazon-web-services amazon-s3 wordpress

我的网站在过去几天流量激增。我使用带有 W3 Total Cache 插件的 Wordpress 和 Amazon Cloudfront 从网站传送图像和文件。

问题是 Cloudfront 的成本相当巨大,仅过去一周就接近 500 美元。有没有办法降低成本?也许使用其他 CDN 服务?

我是 CDN 新手,所以我可能无法很好地实现这一点。我创建了一个 cloudfront 发行版并在 W3 Total Cache Plugin 上配置了它。但是,我没有使用 S3,也不知道是否应该或如何使用。说实话,我不太清楚 Cloudfront 和 S3 之间有什么区别。

有人可以给我一些提示吗?

最佳答案

I'm not quite sure what's the difference between Cloudfront and S3.

这很容易。 S3 是一个数据存储。它存储文件,并且具有 super 可扩展性(可以轻松扩展到同时为 1000 人提供服务。)问题在于它是集中式的(即从世界上的一个地方提供服务。)

CloudFront 是一个 CDN。它会在世界各地缓存您的文件,以便更快地提供服务。如果您仔细观察,看起来他们正在“存储”您的文件,但缓存可能随时丢失(或者如果他们启动新节点),因此您仍然需要原始位置的文件。

如果每个文件的点击量太少,CF 实际上可能会伤害您。例如,在东京,CF可能有20个节点。在所有 20 个 CF 节点都缓存您的文件之前,可能需要对一个文件发出 100 个请求(请求是随机分布的)。在这 100 个请求中,其中 20 个将命中空缓存,并在获取文件时出现额外 200 毫秒的延迟。他们通常会缓存您的文件很长时间。

I'm not using S3 and don't know if I should

可能不是。如果您希望您的网站在媒体方面大幅增长,请考虑使用 S3。 (即大量使用照片上传。)

Is there a way to reduce the costs? Maybe using another CDN service?

这完全取决于您的网站。一些想法:

1) 确保您正在服务 appropriate headers 。并确保您的过期时间不会太短(理想情况下应该是几天、几周或几个月)。

“最佳实践”是永不过期的页面,除非您的索引页应该每 X 分钟、几小时或几天过期(取决于您希望更新的速度)。确保每个页面/图像都说明了它的时长可以缓存。

2) 如上所述,CF 仅在每次缓存时间请求每个页面 > 100 次时才有用。如果您有数百万个页面,每个页面都请求几次,CF 可能没有用。

3) 来自亚洲的请求比来自美国的请求贵得多。如果您在那里更受欢迎,请考虑在东京启动您的服务器。

4) 查看您的网络服务器日志,了解 CF 请求您的每个 Assets 的频率。如果比您预期的频率更高,则说明您的缓存 header 设置错误。如果您设置“将此缓存数月”,则每天应该只会看到少量请求(当它们启动新服务器等时),而当您发布新文件时会看到几百个请求(即每个 CF 边缘节点一个请求) .

根据您的设置,其他 CDN 可能会更便宜。根据您的服务器,其他设置可能会更便宜。 (即,如果您提供大量小文件,您最好在 EC2 上进行自己的缓存。)

关于amazon-web-services - 如何降低亚马逊Cloudfront成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22752280/

相关文章:

amazon-web-services - AWS CDK Typescript 导入 DynamoDB 表未在模板中生成

amazon-web-services - AWS::事件::规则失败调用调试信息?

amazon-web-services - 为webapp用户增加弹性beantalk EC2实例上的打开文件限制

mysql - 将 mysql 查询导出到亚马逊 s3 存储桶

amazon-web-services - AWS 预签名 url acl 公共(public)读取无效签名

wordpress - 如何: Getting SSL to work on Wordpress without 404 error

amazon-web-services - AWS CloudFormation - 将参数( key 对)从 Azure DevOps 添加到 json

node.js - 使用 Cloudfront 签名 URL 时如何更改下载的文件名?

php - 如何使用$wpdb在wordpress上显示mysql表数据?

php - 仅在每日时间范围内启用 Woocommerce 商店购买