【原】緩存之 HttpRuntime.Cache

一、HttpRuntime.Cache緩存

  • HttpRuntime.Cache 至關於就是一個緩存具體實現類,這個類雖然被放在了 System.Web 命名空間下了。可是非 Web 應用也是能夠拿來用的。
  • HttpContext.Cache 是對上述緩存類的封裝,因爲封裝到了 HttpContext ,侷限於只能在知道 HttpContext 下使用,即只能用於 Web 應用。

二、.絕對過時時間和相對過時時間  spa

 /// <summary>
    /// 設置數據緩存,相對過時
    /// --鍵值存在時會替換原數據
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="cacheKey">鍵值</param>
    /// <param name="objObject"></param>
    /// <param name="timeout">相對過時時間,最後一次訪問所插入對象時與該對象到期時之間的時間間隔(單位:秒)</param>
    public static void SetRelativeCache<T>(string cacheKey, T objObject, int timeout = 30)//默認30秒過時,30秒不訪問就會過時
    {
        try
        {
            if (objObject == null) return;
            var objCache = HttpRuntime.Cache;         
            //相對過時時間,最後一次訪問的時間超過了時間間隔後纔會到期
            objCache.Insert(TypeName<T>() + cacheKey, objObject, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(timeout), CacheItemPriority.High, null);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
/// <summary>
    /// 設置數據緩存,絕對過時時間
    /// --鍵值存在時會替換原數據
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="cacheKey"></param>
    /// <param name="objObject"></param>
    /// <param name="timeout">絕對過時時間(單位:秒,默認300秒之後就會過時)</param>
    public static void SetAbsoluteCache<T>(string cacheKey, T objObject, int timeout = 300)//默認300秒
    {
        try
        {
            if (objObject == null) return;
            var objCache = HttpRuntime.Cache;
            //絕對過時時間,  TimeSpan.Zero
            objCache.Insert(TypeName<T>() + cacheKey, objObject, null, DateTime.Now.AddSeconds(timeout), Cache.NoSlidingExpiration, CacheItemPriority.High, null);           
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

 

注意事項:code

absoluteExpiration
類型:System.DateTime
所添加對象將過時並被從緩存中移除的時間。若是使用相對過時,則 absoluteExpiration 參數必須爲 NoAbsoluteExpiration。

slidingExpiration
類型:System.TimeSpan
最後一次訪問所添加對象時與該對象過時時之間的時間間隔。若是該值等效於 20 分鐘,則對象在最後一次被訪問 20 分鐘以後將過時並從緩存中移除。若是使用絕對過時,則 slidingExpiration 參數必須爲 NoSlidingExpiration。對象

相關文章
相關標籤/搜索