كيفية تعيين توجيه ذاكرة التخزين المؤقت للإخراج على عناصر التحكم المخصصة مع عدم وجود رمز في المقدمة
-
09-06-2019 - |
سؤال
لقد كتبت عنصر تحكم يرث من 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);
لا تنتمي إلى StackOverflow