【问题标题】:What are the downsides of using long directory paths/names and URL's on a LAMP site? [duplicate]在 LAMP 网站上使用长目录路径/名称和 URL 有什么缺点? [复制]
【发布时间】:2011-10-16 08:06:17
【问题描述】:

可能重复:
What are the downsides of longer directory paths/names and URL's on a LAMP site?

LAMP 网站上较长的目录路径/名称和 URL 有什么缺点?

我正在尝试尽可能高效地组织我网站上的图像,并且我热衷于使用许多嵌套目录,这样子目录的子目录不会超过 1,000 个,并且目录易于维护很多用户。

在最坏的情况下,图像会像这样存储:

./images/76/543/7654321/640/1.jpg

拥有如此多的子目录与像这样更简单的东西相比有什么严重的缺点吗:

./i/a7/c3/5e.jpg

我想服务器要挖掘的子目录越多,时间就越长,目录结构越长,URL就越长,所以HREF占用的空间就越大HTML 文档。但这会有多大的不同呢?假设我们扩展到数百万用户,这是我需要考虑的事情(短目录结构与长目录结构)还是可以使用更长的目录结构?

谢谢!

【问题讨论】:

    标签: php linux image directory lamp


    【解决方案1】:

    您可以使用随您的需求和经验“增长”的存储空间。

    假设您根据图像本身创建图像的文件名,例如通过对其内容使用 SHA1,例如b494ad9057e09277fd02e811bb8e86b322a5166b.jpg 可能是名字。

    然后图像存储在“images”目录内的文件系统中。

    您用来访问文件的 URI 始终是 images/b494ad9057e09277fd02e811bb8e86b322a5166b.jpg

    现在,魔法发生在您的 Apache 的 mod_rewrite 中。请求的资源可以按照您想要的任何方式拆分,例如拆分为 images/b494ad9057e09277fd02/e811bb8e86b322a5166b.jpg(注意哈希第 20 个字符后的斜线),然后从那里加载。

    从文件系统专家那里得到答复后,您可以更改 URI 的拆分方式并将所有文件移动到新的预期位置,因为始终可以通过遍历目录层次结构来构建“原始”文件名.

    此外,一个好的散列应该在散列中创建“均匀分布的字符”,因此您的目录应该或多或少以平衡的方式填充。

    【讨论】:

    • 如果您在移动内容之前在该单个图像目录中获得大量文件,则需要小心最大化您的 inode 表。
    • 索引节点是每个分区(文件系统),而不是每个目录。因此,只要整个目录层次结构位于一个分区上,就 inode 计数而言,没有其他结构目录比拥有结构目录更好。
    猜你喜欢
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 2021-05-23
    • 2011-11-30
    • 1970-01-01
    • 2011-06-25
    相关资源
    最近更新 更多