使用 Ruby gem 将每个存储桶或纯类型的图像保存到 S3
Saving images to S3 per bucket or pure Type with Ruby gem
我刚开始将几张图像写入 S3。每个用户每个案例我将有 4 到 10 张图像。
User > Case > images
我的计划是为每个案例创建一个存储桶,但想知道我是否应该改为在密钥中保存带有前缀的所有图像,并将所有案例的所有图像放在一个存储桶中?
MyBucket > 2sk67o3/waiver/image1-big.jpg
MyBucket > 2sk67o3/waiver/image1-small.jpg
MyBucket > 2sk67o3/merchandise/image1-big.jpg
MyBucket > 2sk67o3/merchandise/image1-small.jpg
或
MyBucket_2sk67o3 > waiver/image1-big.jpg
MyBucket_2sk67o3 > waiver/image1-small.jpg
MyBucket_2sk67o3 > merchandise/image1-big.jpg
MyBucket_2sk67o3 > merchandise/image1-small.jpg
我认为最后一个版本是正确的,因为我可以使用 Ruby gem 提供的“with_prefix
”来查找更容易删除或替换的图像?比如删除"waiver"当然是要删除大图和小图
bucket.objects.with_prefix('waiver').collect(&:key)
我想我可以按照上面的第一种方式搜索前缀“2sk67o3/merchandise”。所以问题仍然更好,更简单,标准是每个案例一个桶还是一个巨大的桶?
您应该使用使用可预测键的单个存储桶,以便轻松找到它们。像
"MyBucket/waivers/#{WaverModelInstanceOrWhatever.id}/large/image_1.jpg"
"MyBucket/waivers/#{WaverModelInstanceOrWhatever.id}/small/image_1.jpg"
"MyBucket/merchandise/#{MerchandiseModelInstanceOrWhatever.id}/large/image_1.jpg"
"MyBucket/merchandise/#{MerchandiseModelInstanceOrWhatever.id}/small/image_1.jpg"
我刚开始将几张图像写入 S3。每个用户每个案例我将有 4 到 10 张图像。
User > Case > images
我的计划是为每个案例创建一个存储桶,但想知道我是否应该改为在密钥中保存带有前缀的所有图像,并将所有案例的所有图像放在一个存储桶中?
MyBucket > 2sk67o3/waiver/image1-big.jpg
MyBucket > 2sk67o3/waiver/image1-small.jpg
MyBucket > 2sk67o3/merchandise/image1-big.jpg
MyBucket > 2sk67o3/merchandise/image1-small.jpg
或
MyBucket_2sk67o3 > waiver/image1-big.jpg
MyBucket_2sk67o3 > waiver/image1-small.jpg
MyBucket_2sk67o3 > merchandise/image1-big.jpg
MyBucket_2sk67o3 > merchandise/image1-small.jpg
我认为最后一个版本是正确的,因为我可以使用 Ruby gem 提供的“with_prefix
”来查找更容易删除或替换的图像?比如删除"waiver"当然是要删除大图和小图
bucket.objects.with_prefix('waiver').collect(&:key)
我想我可以按照上面的第一种方式搜索前缀“2sk67o3/merchandise”。所以问题仍然更好,更简单,标准是每个案例一个桶还是一个巨大的桶?
您应该使用使用可预测键的单个存储桶,以便轻松找到它们。像
"MyBucket/waivers/#{WaverModelInstanceOrWhatever.id}/large/image_1.jpg"
"MyBucket/waivers/#{WaverModelInstanceOrWhatever.id}/small/image_1.jpg"
"MyBucket/merchandise/#{MerchandiseModelInstanceOrWhatever.id}/large/image_1.jpg"
"MyBucket/merchandise/#{MerchandiseModelInstanceOrWhatever.id}/small/image_1.jpg"