[英]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.