情境
用户可以发布一篇帖子,并在帖子中包含最多5张图片,每张上传的图片都需要重新采样和调整大小 - 共创建4个额外的图像。这意味着如果用户上传了5张图片,则总共要存储25张图片。
假设条件
- 这些图片经过了适当的检查,是有效的图像文件
- 系统必须进行扩展(让我们假设首先有1000条帖子,因此最多5000个图像)
- 每个图像都会被重命名为与数据库帖子条目的auto_increment id相关的名称,并包括相关后缀,例如12345_1_1.jpg 12345_2_1.jpg - 因此没有重复问题
- 这些图像并不涉及敏感内容,因此可以直接访问它们(尽管目录列表将被禁用)
可能的方法
- 由于id是唯一的,因此我们只需将它们放入一个文件夹中即可(在某一点之后效率低下)。
- 可以为每篇帖子创建一个文件夹,并将所有图像放入其中,例如ROOT/images/12345(同样,将最终导致大量的文件夹)
- 可以基于日期进行图像存储,即每天创建一个新文件夹,并将当天的图像存储在其中。
- 可以根据调整大小的类型存储图像,例如所有原始文件可以存储在一个文件夹中images / orig,所有缩略图可以存储在images / thumb中(我认为Gumtree使用了这种方法)。
- 可以允许在创建另一个文件夹之前存储X个文件。
谁有关于可扩展存储图像的最佳实践/方法的经验?
注意:我预先知道有人会提到S3 - 让我们暂时假设我们想保留本地图像。
感谢您的阅读。