gpt4 book ai didi

java - Commons VFS 缓存是如何工作的?

转载 作者:搜寻专家 更新时间:2023-10-31 20:11:06 26 4
gpt4 key购买 nike

我正在尝试学习如何使用 Apache Commons VFS2。

我已经阅读了我能找到的所有文档,并且我已经有点熟悉 API,但仍有一件事我不是很清楚。

Cache机制是如何工作的?特别是:

  • 我不明白缓存策略和 FilesCache 接口(interface)之间的区别。什么时候用哪个?

  • 这里的文档中说:http://wiki.apache.org/commons/VfsCacheStrategy ... 有 3 种可能的缓存策略,每一种都有详细说明。我得到了“最简单的”on_call 策略,但其他两个我没有。例如 - 如果我们选择 MANUAL 策略,则表示“您必须使用 fileObject.refresh() 来使用文件系统刷新您的对象”。但这到底意味着什么呢?这是否意味着如果我将字节写入此 FileObject 的 FileContents,在我关闭文件对象或调用刷新之前它们实际上不会被写入?如果我有 2 个从同一个 URI 解析的 FileObjects 而我 delete() 第一个怎么办?由于缓存了文件对象,第二个 exists() 方法是否仍会返回 true ?

当我尝试在我的机器上本地使用不同的缓存策略时,我真的没有发现任何行为差异。它们的行为都相同,并且文件始终与 FS 同步(或者至少它们不同步并不明显)。

最佳答案

CacheStrategy 基本上控制 FileObject 中元数据的重新同步在多次通话之间。 FileObject 决定何时刷新其世界观。

它将调用refresh()每次你resolve它,否则它会调用 refresh()在每个 FileObject 之前方法调用(通过 OnCallRefreshFileObject 装饰器)或从不自动调用。

refresh()大多数时间设置 FileObject状态分离,因此在下一个操作检查 attach() 时会重新读取它.

它主要与属性和子元素等元数据有关,我认为没有任何文件系统提供者实际缓存内容。

FilesCache 实际上负责缓存 FileObject 的实例中间resolveFile()电话。所以如果你碰巧解析或导航到同一个文件,你也会得到相同的 java 对象实例(除非你使用 NullFilesCache LRUFilesCache 缓存过期的一些条目)。

关于java - Commons VFS 缓存是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27794234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com