NET Caching Library Help
File Provider
Examples > File Provider

The file cache provider allows you to save long running results to the file system.  The object is first binary serialized and then saved to a file.  Objects do not need to be marked as Serializable to be saved but they do need to have a default empty constructor.  A separate CacheInfo file is saved which contains the key, region, and expiration information. The filename is based on a hash of the key.  By default, expired items are removed from the cache every minute.  If the cache is over the MaxMegabytes or MaxCacheItems items will be removed oldest first until the cache is 75% of the MaxMegabytes and MaxCacheItems.

Example output files: 

CacheInfo8619998834579835952.bin

Value8619998834579835952.bin  

Defaults for the file cache provider

Recommended options for optimal performance

Example

   

    public class FileCacheExample

    {

       

        public void FileCacheExampleUsage()

        {

            //Build parameters for the report

            Dictionary<string, object> parms = new Dictionary<string, object>();

            parms.Add("Month", DateTime.Now.Month);

            parms.Add("Year", DateTime.Now.Year);

 

            //Get the cache key based on the report parameters

            string cacheKey = Cache.Instance.BuildCacheKey("MonthlySalesReport", parms);

 

            //Get the report from the cache, if it does not exist, call the ReportLogic.MonthlySalesReport, save it to the cache and return it

            List<ReportDetail> result = Cache.Instance.Get<List<ReportDetail>>(cacheKey, NetCachingLibraryTest.ReportLogic.MonthlySalesReport, parms);

        }

    }

    public static class Cache

    {

        private static SmartCache _smartCache;

        public static FileCacheProvider SecondaryCache { get; set; }

        private static void Setup()

        {

            string cacheDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),

                "KellermanSoftware",

                "NetCachingLibrary",

                "FileCacheExample");

            SecondaryCache = new FileCacheProvider(cacheDirectory);

            SecondaryCache.MaxCacheItems = 400;

           

            SmartConfig config = new SmartConfig(new MemoryCacheProvider(), SecondaryCache);

 

            //Specify UserName and LicenseKey for Licensed Mode

            //config.UserName = "my user name";

            //config.LicenseKey = "my license key";

 

            _smartCache = new SmartCache(config);

        }

        public static SmartCache Instance

        {

            get

            {

                if (_smartCache == null)

                    Setup();

                return _smartCache;

            }

        }

    }

    public static class ReportLogic

    {

        //Example long running report

        public static List<ReportDetail> MonthlySalesReport(Dictionary<string, object> parms)

        {

            System.Threading.Thread.Sleep(1000);

            List<ReportDetail> list = new List<ReportDetail>();

            list.Add(new ReportDetail("Midwest", 233457.47m));

            list.Add(new ReportDetail("Southern", 234789.88m));

            return list;

        }

    }