Cache and Sliding Expiration

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Guadala Harry

    Cache and Sliding Expiration

    AFAIK, when placing an object into the Cache with no special instructions
    (no dependencies, sliding expirations, hard expirations, etc), it will just
    sit there in the Cache until the system decides it needs to remove the
    object to free up memory. (If my understanding so far is wrong, please
    clarify)

    What I'd like to know is that if I place an object into the Cache with a
    sliding expiration - is it possible/likely that the system will remove the
    object prior to the expiration time being reached? Put another way, does a
    sliding expiration *only* instruct the system to remove the object at a
    certain time (at the end of the sliding window when eventually reached) -
    but otherwise allows the object to be removed from the Cache to free up
    resources if necessary prior to the end of the sliding window being reached?

    My code doesn't make any assumptions either way about an object being in the
    Cache at any given point in time - sliding window or not... I just want to
    understand the whole sliding window thing better.

    -GH


  • jongalloway

    #2
    Re: Cache and Sliding Expiration

    The main thing about the sliding window is that it's reset every time
    the cache is accessed. So if you add something to the cache with a
    sliding timescale of 60 minutes and someone browses to the page every
    55 minutes, the cache will never be expired. Sliding expiration doesn't
    instruct the system to remove the object at a certain time - to do
    that, use an Absolute Expiration set in the future:
    Cache.Insert ("bigDataset ", ds, null, DateTime.Now.Ad dMinutes (10),
    Cache.NoSliding Expiration);

    As for whether or not the object will be removed from the Cache,
    there's no way of knowing. Memory intensive objects are likely to be
    removed when memory is tight on the server, which means that another
    application's memory use could cause your application's cache to be
    cleaned more aggressively.

    You can also set the CacheItemPriori ty (CacheItemPrior ity.AboveNormal ,
    for instance) to give further hints on how you'd like your cache
    managed.

    As you indicated, you always have to assume your cache may have been
    cleared every time you access it.
    - Jon


    Comment

    Working...