EnterpriseLibrary之Caching

        微軟發佈的EnterparseLibrary提供了許多功能,爲我們的應用程序提供了許多方便,有緩存、配置、異常、數據訪問、加密、日誌等組件。項目中需要用到的Cache功能,便採用了EnterpriseLibrary的Cache組件。下面淺談一下Cache的實用範圍、用法及注意事項。

        應用系統爲了提升效率,可以將一些配置信息等不常改變的數據進行緩存以減少對數據源的讀取頻率。通常的做法是在程序中使用靜態變量來存儲,再設置一個Timer,每隔一段時間對數據進行更新等操作。EnterpriseLibrary的Cache提供了非常強大的支持,可以設置絕對時間、間隔時間、自定義格式以及文件過期時間來進行相應的更新操作。

        1. 絕對時間過期的緩存:AbsoluteTime

        2. 相對時間過期的緩存:SlidingTime

        3. 自定義格式過期的緩存:ExtendedFormatTime

           自定義格式爲:<Minute> <Hour> <Day of month> <Month> <Day of week>

           Minute            0-59
           Hour              0-23
           Day of month     1-31
           Month             1-12
           Day of week       0-6 (Sunday is 0)
           如:
           * * * * *    - expires every minute
           5 * * * *    - expire 5th minute of every hour
           * 21 * * *   - expire every minute of the 21st hour of every day
           31 15 * * *  - expire 3:31 PM every day
           7 4 * * 6    - expire Saturday 4:07 AM

        4. 文件的過期緩存:FileDependency

        簡單的程序代碼如下:

        CacheManager cacheManager = CacheFactory.GetCacheManager();

        ExtendedFormatTime expireTime = new ExtendedFormatTime("41 11 * * *");
        cacheManager.Add("key", value, CacheItemPriority.Normal, new ProductCacheRefreshAction(), expireTime);

        上述代碼即將value放入到以key爲鍵值的默認換成塊中,且在每天的11點41分緩存中的值失效,需要重新讀取數據源。

        Cache以配置文件的方式供用戶進行緩存的輪詢過期數據的頻率、緩存中數據項的多少、清除數據項的多少以及緩存備份的位置。

 1.    expirationPollFrequencyInSeconds: 設置控制後臺調度程序多久檢查過期條目的定時器。此屬性必須是正整數,且是必要的。
 2.    maximumElementsInCacheBeforeScavenging: 設置在清除開始前可以在緩存中的條目的最大數量。此屬性必須是正整數,且是必要的。
 3.    numberToRemoveWhenScavenging: 設置在清除開始時移除的條目的數量,此屬性必須是正整數,且是必要的。
 4.    backingStoreName: 緩存備份的位置

        值得一提的是,expirationPollFrequencyInSeconds屬性是控制後臺調度程序多久檢查過期條目的配置,單位爲秒,如果系統經常需要更新數據則可以將此值設置的小一點;ICacheItemExpiration的時間是以UTC的時間來作爲標準時間來比較的,北京時間比UTC早8個小時,比如你需要在每天的十二點半讓緩存過期,則必須這樣設置ExtendedFormatTime("30 4 * * *"), 關於這個問題我本來不知道,以爲是Library的Bug,上網也沒有找到相關的例子,最後在看了原程序才知道Library是用的UTC來進行比較的。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章