tags:

views:

64

answers:

0

I'm running this code which appends a timestamp to a file everytime the cache expires, but the timestamps don't seem to match up with the absolute expiration tht i've applied

public void ProcessRequest(HttpContext context)
{
    System.IO.File.AppendAllText("c:/test.txt", "new");

    context.Cache.Add("test", DateTime.Now.ToString(), null, DateTime.Now.AddSeconds(25), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Normal, new System.Web.Caching.CacheItemRemovedCallback(callback));
        }

public static void callback(string str, object obj, System.Web.Caching.CacheItemRemovedReason reason)
        {
            System.IO.File.AppendAllText("c:/test.txt", " \n at " + DateTime.Now.ToString() + " this expired: " + obj.ToString());

            HttpRuntime.Cache.Add("test", DateTime.Now.ToString(), null, DateTime.Now.AddSeconds(25), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Normal, new System.Web.Caching.CacheItemRemovedCallback(callback));
        }

code says it should expire every 25 seconds, but the logs are consistently at 40 seconds. I've tried 5 seconds expiration and 10 second expiration and the logs were at 20 second intervals.

new 
 at 8/27/2010 1:16:40 PM this expired: 8/27/2010 1:16:01 PM 
 at 8/27/2010 1:17:20 PM this expired: 8/27/2010 1:16:40 PM 
 at 8/27/2010 1:18:00 PM this expired: 8/27/2010 1:17:20 PM 
 at 8/27/2010 1:18:40 PM this expired: 8/27/2010 1:18:00 PM 
 at 8/27/2010 1:19:20 PM this expired: 8/27/2010 1:18:40 PM 
 at 8/27/2010 1:20:00 PM this expired: 8/27/2010 1:19:20 PM 
 at 8/27/2010 1:20:40 PM this expired: 8/27/2010 1:20:00 PM 
 at 8/27/2010 1:21:20 PM this expired: 8/27/2010 1:20:40 PM 
 at 8/27/2010 1:22:00 PM this expired: 8/27/2010 1:21:20 PM 
 at 8/27/2010 1:22:40 PM this expired: 8/27/2010 1:22:00 PM 
 at 8/27/2010 1:23:20 PM this expired: 8/27/2010 1:22:40 PM