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