我有一个类正在为本地文件系统上的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(虽然没有从性能角度讨论,也许完全出于其他原因)列出了如何将物理文件添加到缓存中.
最佳答案 我不认为缓存文件会有用,因为它与页面位于同一服务器上,尽管它可能会被IIS自动缓存.相反,你应该缓存的是StreamReader的输出.在读完xml之后存储它,然后您将节省读取它所需的时间以及为使其成为可用格式所做的任何处理.
然后,您可以手动将其添加到HttpRuntime.Cache,甚至可以在原始文件上设置文件依赖关系,以使缓存的输出到期.