我有一个类正在为本地文件系统上的xml文件创建StreamReader
的实例。
有可能每秒多次请求同一个文件。
我想知道是否需要手动将此文件添加到System.Web.Cache
并从那里读取它,或者Windows本身是否足够聪明地缓存项目本身以便它在ASP.NET请求时“知道”这个文件是第二次/第三次等时间,它不需要进行磁盘搜索/读取操作并将其从自己的缓存中拉出来?
这篇文章:http://dotnetperls.com/file-read-benchmarks似乎支持这一点,但是:文章:http://msdn.microsoft.com/en-us/library/18c1wd61%28v=VS.100%29.aspx(尽管不是从性能角度讨论,也可能完全是出于其他原因)列出了如何添加物理文件到缓存。
答案 0 :(得分:2)
我认为缓存文件并不是那么有用,因为它与页面位于同一台服务器上,尽管它可能会被IIS自动缓存。相反,你应该缓存的是 StreamReader 的输出。在读完xml之后存储它,然后您将节省读取它所需的时间以及为使其成为可用格式所做的任何处理。
然后您可以手动将其添加到 HttpRuntime.Cache ,甚至可以在原始文件上设置文件依赖关系,以使缓存的输出失效。