簡體   English   中英

緩存目錄的奇怪命名子目錄的目的是什么

[英]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 (出於多種原因,您通常希望保留文件擴展名)。
  • 您可以使用四個中等緩存 /cache/f/f54403d0da4a57aa79bdf459897f08bd.ico or remove duplicate information by trimming the first character, as it already exists in the directory name like /cache/f/54403d0da4a57aa79bdf459897f08bd.ico
  • 對於非常大的緩存,您可以細分更多,例如 /cache/f/5/4403d0da4a57aa79bdf459897f08bd.ico`

這些只是幾個例子,但基本原理保持不變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM