Rails + S3:解析存储桶并将图像加载到控制器外部

时间:2018-08-30 13:34:11

标签: ruby-on-rails amazon-s3

在Rails应用程序的控制器中,我具有一个解析S3存储桶并选择图​​像的功能。这导致页面加载速度变慢,但是我希望能够在没有对所有URL进行硬编码的情况下循环访问存储桶。

这是我所拥有的:

@bucket = S3_BUCKET
@images = []

@bucket.objects.each do |file|
  if file.key.include?("inspiration")
    @images << { url: file.public_url, key: file.key, type: 'file'}
  end
end

还有另一种方法可以做到这一点,以使页面加载速度不会受到影响吗?

2 个答案:

答案 0 :(得分:0)

事实证明,文件数量超出预期,循环完成需要很长时间。我将代码更改为:

@images = @bucket.objects({prefix: 'inspiration')

响应速度更快。

答案 1 :(得分:0)

由于您实际上无法调节访问s3存储桶的速度,因此建议您在Amazons Cloudfont上设置CDN(内容交付网络)。请看一下Brandon Hikert撰写的有关实施CDN的文章

 https://brandonhilkert.com/blog/setting-up-a-cloudfront-cdn-for-rails/

旁注-如果您想要免费的CDN选项,我会使用

 https://cloudinary.com/pricing

参考何时在s3上使用CDN

 https://stackoverflow.com/questions/3327425/when-to-use-amazon-cloudfront-or-s3