كيفية تعيين توجيه ذاكرة التخزين المؤقت للإخراج على عناصر التحكم المخصصة مع عدم وجود رمز في المقدمة

StackOverflow https://stackoverflow.com/questions/78974

سؤال

لقد كتبت عنصر تحكم يرث من System.Web.UI.WebControls.DropDownList ولذا ليس لدي أي كود أمامي لعنصر التحكم هذا، ولكن ما زلت أرغب في تعيين توجيه OutputCache.هل هناك أي طريقة لتعيين هذا في كود C#، على سبيل المثال باستخدام سمة أو شيء من هذا القبيل؟

وآمل بشكل خاص أن أتمكن من تكرار VaryByParam ملكية

هل كانت مفيدة؟

المحلول

أدرك أن هذا سؤال قديم بشكل لا يصدق ولكنه لا يزال يستحق الإجابة.

ما تتحدث عنه ليس عنصر تحكم المستخدم، بل هو عنصر تحكم مخصص.ما تريد القيام به باستخدام OutputCache يمكن القيام به ببساطة باستخدام ذاكرة التخزين المؤقت للسياق.

في التعليمات البرمجية الخاصة بك حيث تحصل على البيانات وتربط قائمة DropDownList الخاصة بك، افعل شيئًا مثل هذا:

        List<Object> listOfObjects = null;
//assuming a List of Objects... it doesn't matter whatever type of data you use
        if (Context.Cache["MyDataCacheKey"] == null)
        {
            // data not cached, load it from database
            listOfObjects = GetDataFromDB();
//add your data to the context cache with a sliding expiration of 10 minutes.
            Context.Cache.Add("MyDataCacheKey", listOfObjects, null,
                System.Web.Caching.Cache.NoAbsoluteExpiration,
                TimeSpan.FromMinutes(10.0),
                System.Web.Caching.CacheItemPriority.Normal, null);
        }
        else
            listOfObjects = (List<Object>)Context.Cache["MyDataCacheKey"];

        DropDownList1.DataSource = listOfObjects;
        DropDownList1.DataBind();

نصائح أخرى

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Server);
Response.Cache.SetValidUntilExpires(true);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top