我的虚拟主机是 Heroku,它不允许将文件保存到本地文件系统。因此,我使用 Carrierwave 将我的文件存储到 Amazon S3 上。
在控制台中,我注意到当我这样做时:
Photo.last.attachment.url
它返回:
=> "https://foobar.s3.amazonaws.com/uploads/users/1/photos/7/foo.jpg"
正如预期的那样。但是,控制台中的这个过程(返回值)需要 2-3 秒。我的猜测是它试图访问 S3。更糟糕的是,当我加载包含多张照片的网页时,加载需要相当长的时间。
有人提到因为我是通过 S3 远程存储文件,所以我应该缓存“ Photo.last.attachment.url ”的结果。
这意味着,在我的数据库中,我需要有两列:
:attachment 和 :attachment_url
:attachment 将用于 Carrierwave 上传器对象,而 :attachment_url 将是 S3 文件的直接链接。
这是我应该做的吗?有更好的选择吗?