8

为了支持数以百万计的潜在图像,我们之前遵循了这种目录结构:

/profile/avatars/44/f2/47/48px/44f247d4e3f646c66d4d0337c6d415eb.jpg

文件名是 md5 散列,然后我们提取字符串中的前 6 个字符并从中构建文件夹结构。

所以在上面的例子中,文件名:

44f247d4e3f646c66d4d0337c6d415eb.jpg

产生一个目录结构:

/44/f2/47/

我们总是这样做是为了最大限度地减少任何单个目录中的照片数量,最终提高文件系统的性能。

然而,我们的新应用正在使用 Amazon S3 和 Cloudfront

我的理解是,您在 Amazon S3 上创建的任何文件夹实际上只是引用,而不是文件系统上的目录。

如果这是正确的,是否仍然建议拆分为上述文件夹/目录或类似方法?或者我们可以简单地在我们的应用程序代码中消除这种复杂性并提供如下图像链接:

/profile/avatars/48px/filename.jpg

请记住,这个应用程序旨在为数百万张照片提供服务。

任何指导将不胜感激。

4

2 回答 2

9

尽管 S3 文件夹基本上只是另一种编写密钥名称的方式(正如@EJBrennan 在他的回答中已经说过的那样),但有理由考虑“文件夹”的命名结构。

根据您当前的照片数量和可能的访问模式,考虑一种加快 S3 键名查找速度的方法可能是有意义的,以确保对照片的操作分布在多个分区上。AWS 博客上有一篇很棒的文章解释了所有细节。

于 2013-10-23T14:23:48.843 回答
3

您不需要在 s3 上设置该结构,除非您是为了自己的方便而这样做。您在 s3 上创建的所有文件夹对您来说实际上只是一种错觉,文件存储在一个连续的大容器中,因此如果您没有理由将文件组织在伪文件夹层次结构中,那么不要打扰。

如果您需要根据您的文件夹结构控制对不同人群的访问,这可能是保留该结构的原因,但除此之外可能没有好处/

于 2013-10-23T13:52:55.217 回答