0
我正在實現一個緩存,用於將文本文件的內容存儲在Web服務器中。當傳入的請求到來時,文件的內容將從緩存流式傳輸。存儲流式傳輸文本數據的最佳方式
在緩存節點中存儲文件內容的好方法是什麼?我應該使用字符串還是字節數組?請討論每個選項的優缺點。還有其他更好的選擇嗎?
我正在實現一個緩存,用於將文本文件的內容存儲在Web服務器中。當傳入的請求到來時,文件的內容將從緩存流式傳輸。存儲流式傳輸文本數據的最佳方式
在緩存節點中存儲文件內容的好方法是什麼?我應該使用字符串還是字節數組?請討論每個選項的優缺點。還有其他更好的選擇嗎?
他們是文本文件,所以它是有意義的內容存儲在文本格式。
因此,我建議將文件內容存儲爲字符串,其中每個可以通過調用File.ReadAllText()
來填充。
這樣,訪問緩存將得到與文件作爲文本加載相同的結果。
緩存本身最明智的收集可能類似ConcurrentDictionary<string,string>
,您可以鍵入文件名(或您正在加載的文件的其他唯一標識符)。
典型的文件緩存實現可能是這樣的:
public class FileCache
{
private readonly ConcurrentDictionary<string,string> fileContentsCache
= new ConcurrentDictionary<string, string>();
public string ReadAllText(string filePath)
{
return fileContentsCache.GetOrAdd(filePath, File.ReadAllText);
}
}
用法是:
var cache = new FileCache();
var fileText = FileCache.ReadAllText(requestedFilePath);
緩存會拉文本輸出(如果它已經在緩存),或負載該文件並返回字符串(如果不是)。
請注意,如果您希望整個應用程序使用1個全局文件緩存,則可以使FileCache類(及其所有成員)保持靜態。