Represents LEADTOOLS support for a file cache.
FileCache implements ObjectCache and is the LEADTOOLS implementation of a file cache. It is used by default by the LEADTOOLS Documents classes when caching is required to store the document data.
Refer to Document Toolkit and Caching for more information on how the cache is used with the LEADTOOLS Documents library and how to set up optional custom cache provider.
To use a FileCache, set the CacheDirectory property to a valid directory in your system or in a network share. then use the various methods and properties to add and retrieve cache items with optional expiration policies. The cache will store the items and their policies into disk using serialization and retrieve them using de-serialization.
Since the cache uses the global file system, it can be re-used after the application is terminated. FileCache does not store any state data and all the items are stored in disk. For instance, the LEADTOOLS Documents Web Service creates an instance of FileCache with every method call. All instances point to the same CacheDirectory and can therefore use the same items added in previous calls. The cache is thread and process safe.
FileCache provide support for regions which is used to group cache items belonging to the same logical object. These regions are created as sub-directories in the cache directory on disk. LEADTOOLS Documents classes uses the unique document identifier as the region name and hence can delete all the items belonging to a single document by deleting the region.
Items are purged from the cache if they have an absolute or sliding expiration policy. This is done when the item is accessed (it will be deleted if expired) or by the user by using CheckPolicy or CheckPolicies.
Since cache items that are not used will stay on disk, it is preferable to create a process for purging expired policies manually. This can be done by calling CheckPolicies which will check the whole cache and delete any items that are expired.
GetItemExternalResource returns the physical path of any item currently stored in the cache. This gives the user the ability to read the data of the item directly or pass the file to another part of the system that may require a physical file on disk.
GetItemVirtualDirectoryUrl returns a URI to any item currently stored in the cache. CacheVirtualDirectory must be setup to use this method. Obtaining a URI to a cache item can be useful in a Web application if the client code is JavaScript for example.
This cache implementation also supports data items with values set to null. Thus it is always preferable to use Contains or GetCacheItem<T> instead of relying to Get and checking for null.
The CacheItemExpiring and CacheItemExpired events occur when an item is expired and is about to be removed from the cache.
Use GetStatistics to get the number of regions, items and expired items currently in the cache.
For an example, refer to DocumentFactory.