使用这个关于 Heroku Cedar 的参考资料,
https://devcenter.heroku.com/articles/rack-cache-memcached-rails31#rackcache-storage
他们建议使用 rack:cache (作为实体存储)和 memcache (作为元存储)的组合。我相信实际文件存储在实体存储中。
在上面的指南中,他们将其设置为“file:tmp/cache/rack/body”..
假设我想将静态 html 文件存储在缓存中并让它们在 7 天内过期。我是使用上面的 rack:cache + memcached 组合更好,还是将我所有的 html 文件存储在 Amazon S3 + 中会更好Cloudfront CDN,然后运行 cron 作业以从我的 S3 存储桶中删除所有 html 文件,以确保每 7 天刷新一次 html 页面。
逻辑如下:
如果用户从 S3 请求一个特定的 html 文件并且它不存在.. 我的应用程序在 S3 中生成一个新的 html 文件,我们等待通过 cron 进行下一个 S3 批量删除操作。
仅当用户“请求它们”时才会生成文件......我有大约 500 万个静态文件,最多需要一周的时间......我不希望我的 S3 存储桶装满 500 万个 HTML 文件,除非我的访问者每周请求所有 500 万个 html 文件……我估计他们每周只会请求大约 10k 个唯一文件。
所以我的问题是..哪个更高效,更快?将我所有的 html 文件存储在 rack:cache entitystore.... 中,memcache 充当元存储....... 或者使用 Amazon S3 + Cloudfront 运行?
我在这里寻找2个角度:
- 哪个更有助于减少到达用户的总时间?
- 哪个更适合减少我的网络服务器上的负载?
该解决方案可能会解决这两个问题。