Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jakarta-commons Wiki" 
for change notification.

The following page has been changed by MarioIvankovits:
http://wiki.apache.org/jakarta-commons/VfsCacheStrategy

New page:
= VFS - CacheStragey =

One problem with libraries like vfs is that they cache some data to avoid 
successive access to the real file - simply to speed up things.

This cache might get stale - no it GET stale.

Currently VFS provides three strategies to workaround it:

 * manual
 * on resolve (the default)
 * on call

Note: It is not possible to use {{{VFS.getManager}}} to configure the 
cacheStrategy. You have to create your own static class to create it.

== manual cache strategy ==

Setup
{{{
StandardFileSystemManager fs = new StandardFileSystemManager();
fs.setCacheStrategy(CacheStrategy.MANUAL);
fs.init();
}}}

using this setup you have to use {{{fileObject.refresh()}}} to refresh your 
object with the filesystem

== on_resolve ==

Setup
{{{
StandardFileSystemManager fs = new StandardFileSystemManager();
fs.setCacheStrategy(CacheStrategy.ON_RESOLVE);
fs.init();
}}}

every time you call {{{fs.resolveFile()}}} the file data will be refreshed. You 
still can use {{{fileObject.refresh()}}} to refresh the data on demand.

== on_call ==

Setup
{{{
StandardFileSystemManager fs = new StandardFileSystemManager();
fs.setCacheStrategy(CacheStrategy.ON_CALL);
fs.init();
}}}

Every time you call a method on the resolve file object the data will be 
refreshed with the filesystem. This will give you the behaviour you might 
expect from a local file but also might be a hughe performance loss as it will 
greatly increase the network load.

You also can archive this cache strategy if you pack the file object in an 
{{{org.apache.commons.vfs.cache.OnCallRefreshFileObject}}}

{{{
FileObject fo = VFS.getManager().resolveFile("....");
OnCallRefreshFileObject foc = new OnCallRefreshFileObject(fo);
}}}

the difference to the above is, that in the first case you will always get the 
same file object instance and thus you can synchronize against it.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to