存储流式传输文本数据的最佳方式

时间:2014-02-26 06:28:22

标签: c# streaming

我正在实现一个缓存,它将文本文件的内容存储在Web服务器中。当传入的请求到来时,文件的内容将从缓存中流式传输。

在缓存节点中存储文件内容的好方法是什么 - 我应该使用字符串还是字节数组?请讨论每个选项的优缺点。还有其他更好的选择吗?

1 个答案:

答案 0 :(得分: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类(及其所有成员)保持静态。