تحديث HttpRuntime.Cache على أزور

هل هناك طريقة يمكنني تحديث HttpRuntime.Cache على أزور دون الحاجة إلى إعادة تشغيل المثيل؟

شكر

0

2 إجابة

public void Clear()
{
   var itemsToRemove = new List();

   var enumerator = HttpContext.Current.Cache.GetEnumerator();
   while (enumerator.MoveNext())
   {
      itemsToRemove.Add(enumerator.Key.ToString());
   }

   foreach (string itemToRemove in itemsToRemove)
   {
      HttpContext.Current.Cache.Remove(itemToRemove);
   }
}
0
وأضاف

عند إضافة عناصر إلى ذاكرة التخزين المؤقت ، يجب إضافتها باستخدام CacheDependency مع مفتاح عمومي. يسمح لك ذلك بانتهاء صلاحية العناصر الخاصة بك بعد فترة معينة ، ولكن أيضًا لمسح جميع العناصر المرتبطة بهذا المفتاح.

في ما يلي مثال لتنفيذ طريقة لمسح كل العناصر ( CacheProvider.cs ):

/// 
/// Caching provider ///
 
public static class CacheProvider
{
    const string CacheDependencyKey = "1FADE275-2C84-4a9b-B3E1-68ABB15E53C8";
    static readonly object SyncRoot = new object();

    /// 
/// Gets an item from cache. If the item does not exist, one will be /// created and added to the cache. ///
 
    /// 
Caching key
    /// 
Function to create the item of it does not exist in the cache.
    /// 
Time after the item wille be removed from cache.
    public static TValue GetOrAdd(string key, Func valueFactory, TimeSpan expiresAfter)
    {
        object itemFromCache = HttpRuntime.Cache.Get(key);
        if (itemFromCache == null)
        {
            lock (SyncRoot)
            {
                itemFromCache = HttpRuntime.Cache.Get(key);
                if (itemFromCache == null)
                {
                    TValue value = valueFactory();
                    if (value != null)
                    {
                        if (HttpRuntime.Cache[CacheDependencyKey] == null)
                            HttpRuntime.Cache[CacheDependencyKey] = string.Empty;

                        HttpRuntime.Cache.Add(key, value, new CacheDependency(null, new string[] { CacheDependencyKey }), DateTime.Now.Add(expiresAfter), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
                    }
                    return value;
                }
            }
        }
        return (TValue)itemFromCache;
    }

    /// 
/// Invalidate all the items from the cache. ///
 
    public static void InvalidateCache()
    {
        HttpRuntime.Cache.Remove(CacheDependencyKey);
    }
}
0
وأضاف
حل CacheDependency ذلك بالنسبة لي ، وذلك باستخدام Cache.Insert في حالتي
وأضاف المؤلف Joan-Diego Rodriguez, مصدر