[英]What is the purpose of wierdly named subdirectories for cache directories
查看 Spotify 缓存的“Storage”目录时,我意识到有很多子目录,以 2 位十六进制名称命名。 它们中的每一个都包含一个或多个奇怪命名的文件。
过去我遇到过其他程序创建的类似目录结构,我一直想知道这种命名/存储方案的原因是什么。
那你为什么要做这样的事情? 这个概念有什么好处?
我希望你仍然对答案感兴趣。
通常您会缓存图像或内容等内容。 假设出于性能/稳定性原因,我们将来自不同 url 的图像缓存到我们的服务器。 你怎么命名那个图像? 您可以将其命名为 URL,但名称中不能包含斜杠或其他特殊字符,并且长度也有限制。
因此,您计算该 URL 的所谓 hash 并将其用作文件名。 哈希通常不是十六进制的,所以没有非法字符,它们的长度总是相同的。 如果您现在需要来自 URL 的图像,则计算其 hash 并检查是否在缓存中找到它。
您不将所有缓存文件存储在一个目录中的原因是大小限制。 您通常根据第一个字符将缓存文件分组到子目录中。 请参阅此答案: softwareengineering.stackexchange.com/a/301401 。
例如,假设我们要缓存https://example.com/favicon.ico
。 该 URL 的 MD5 哈希是f54403d0da4a57aa79bdf459897f08bd
。 您现在有三个不同的选择:
/cache/f54403d0da4a57aa79bdf459897f08bd.ico
(出于多种原因,您通常希望保留文件扩展名)。or remove duplicate information by trimming the first character, as it already exists in the directory name like /cache/f/54403d0da4a57aa79bdf459897f08bd.ico
这些只是几个例子,但基本原理保持不变。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.