在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
还有另一种方法可以做到这一点,以使页面加载速度不会受到影响吗?
答案 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