2014-02-26 139 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类(及其所有成员)保持静态。

相关问题