2014-02-26 180 views
0

我正在實現一個緩存,用於將文本文件的內容存儲在Web服務器中。當傳入的請求到來時,文件的內容將從緩存流式傳輸。存儲流式傳輸文本數據的最佳方式

在緩存節點中存儲文件內容的好方法是什麼?我應該使用字符串還是字節數組?請討論每個選項的優缺點。還有其他更好的選擇嗎?

回答

0

他們是文本文件,所以它是有意義的內容存儲在文本格式。

因此,我建議將文件內容存儲爲字符串,其中每個可以通過調用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類(及其所有成員)保持靜態。

相關問題