簡體   English   中英

ASP.NET緩存-長時間運行的操作

[英]ASP.NET Cache - long running operation

我將數據存儲在緩存中是為了避免持續訪問數據庫(數據是否過時也沒關系),數據集不是特別大,但是由於查詢的復雜性,操作可能需要一些時間(大量的聯接和子查詢)。 我有一個靜態的幫助程序類,該數據用於在各個頁面上進行綁定。 該頁面的調用方式如下:

public static List<MyList> MyDataListCache
        {
            get
            {
                var myList = HttpContext.Current.Cache["myList"];

                if (myList == null)
                {


                    var result = MyLongRunningOperation();

                        HttpContext.Current.Cache.Add("myList", result, null, DateTime.Now.AddMinutes(3),
                            Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);



                        return result;
                    }
                }
                else
                {
                    return (List<MyList>)myList;
                }
            }
        }

除非很多人在該項目不在緩存中時同時點擊該頁面,否則此方法就很好。 數百個LongRunningOperations被旋轉並導致應用程序崩潰。 如何避免這個問題? 我嘗試使用異步任務來訂閱該任務是否正在運行,但是沒有運氣。

啟動此服務后,應立即調用LongRunningOperation()來預熱緩存。

其次,您始終希望返回某些內容,因此我將考慮執行后台任務以在此緩存過期之前刷新該緩存。

做到這兩點會使您所描述的情況無效。 緩存將由后台工作人員刷新,因此每個人都很高興:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM