php – AWS S3,速度和服务器负载

我希望这个问题是正确的选择(如果不是,那么有人可能会指点我到我能得到答案的地方).

我想成为一名前瞻思想家并在问题出现之前解决问题.

脚本

我有一个小型邮件列表网站,每周我都会发布与我喜欢的网络相关的链接并发现有用.

有一个最新的文章页面显示了我在那个月添加到数据库中的所有内容.目前共有6个部分;介绍,新闻,设计,开发,推特,Q& A.该网站显示如下:

Section

  • Check database for all entries that match {Month} && {Section}

  • Foreach {Section} return {Title} {Desc} {Link}

我通常每节有3个链接.这也意味着每页视图有6个db请求.

关注

>当/如果该网站越来越受欢迎,让我们说我得到一个5,000访客峰值,这30,000分贝的请求,我认为我的服务器主机不会喜欢也不会看到另一种方式,可能最终我被收取了很多费用我的网站崩溃了.

您认为这些解决方案中的哪一个在速度和降低服务器资源方面最明智:

> 1)使用PHP生成一个db请求获取所有条目,将它们添加到一个数组中然后通过该数组生成以生成这些部分
> 2)使用cron生成所有月份条目,将它们转换为JSON文件并在页面加载时解析该JSON,在我的服务器上托管
> 3)使用cron生成所有月份条目,将它们转换为JSON文件并在页面加载时解析该JSON,在AWS S3上托管它们
> 4)使用cron生成所有条目作为单独的文本文件,例如2016年2月 – intro-one.txt并保存在S3上,然后在最新的文章页面上获取每个文本文件并解析它们

讨论

>如果您有任何其他想法,我会很高兴听到他们:)

感谢您耐心阅读本文,期待您的回复.

最佳答案

CloudFront is a web service that speeds up distribution of your static and dynamic web content, for example, .html, .css, .php, and image files, to end users.

我的建议是坚持使用cron作业并将JSON文件保存到S3,但也使用CloudFront来托管S3存储桶中的文件.虽然从您的服务器托管我似乎最快,因为它只位于一个地方或区域,速度将根据人们从哪里访问它而变化.如果用户从远处查看您的网站,那么他们的加载时间将比距离较近的用户慢.

借助CloudFront,您的文件将在亚马逊全球50个边缘位置进行分发和缓存,为您提供最快,最可靠的交付时间.

此外,将来如果您希望用户在更新后立即查看新内容,请查看Lambda.它运行代码以响应来自其他AWS服务的事件.因此,无论何时更新数据库(如果是DynamoDB或RDS),您都可以自动生成新的JSON文件并将其保存到S3.一旦建立了连接,它仍将继续由CloudFront分发.

有关CloudFront here的更多信息

有关Lambda here的更多信息

点赞