如何知道文件是否“存储在文件系统缓存中”

时间:2011-09-07 14:48:50

标签: cocoa caching

NSDataReadingOptions州的文档:

  

NSDataReadingUncached

     

指示文件不应存储在文件系统缓存中的提示。对于一次读取和丢弃的数据,此选项可以提高性能。

这一切都有道理。我很好奇是否有办法知道文件是否已经存在于file-sysem缓存中。

例如,如果我需要执行大量的文件读取,那么优先读取已经驻留在缓存中的文件可能是有意义的。

1 个答案:

答案 0 :(得分:4)

我担心这里我们只能转发一些假设,因为没有关于此的官方文件。

  • iOS的文件系统应该是与OS-X相同的分层文件系统(HFS)(参见iOS filesystem HFS?
  • HFS使用统一缓冲区缓存(UBC)
  • UBC在中缓存文件数据而不是整个文件 - 这是第一点,即使文件的一部分被缓存,也无法知道整个文件已缓存
  • 没有任何API或内核命令来控制UBC的内容(所以这样就回答了你的问题)。

一些有趣的链接:

确保可以快速访问文件的选项是将文件映射到虚拟内存的页面,如Apple的同一文档中所述。