على سبيل المثال، يحتوي موقع الويب على عنصر تحكم المستخدم Header.ascx. وتستدعي كل صفحة عنصر التحكم هذا باسم "رأس الصفحة". ويمكن تخزين عنصر تحكم المستخدم هذا مباشرةً لإرسال الأداء. ومع ذلك، يحتاج عنصر تحكم المستخدم Header.ascx هذا الآن إلى عرض معلومات تسجيل الدخول اسم المستخدم، لذا لا يمكنك استخدام طريقة التخزين المؤقت التالية مباشرة:
<% @ OutputCache Duration = " 86400 " VaryByParam = " لا شيء " %>
في الوقت الحالي، يمكنك استخدام طريقة "التخزين المؤقت للصفحات بناءً على سلاسل مخصصة"، كما يلي:
<%@ OutputCache Duration="86400" VaryByParam="None" VaryByCustom="HeaderPageKey" %>
ثم قم بتجاوز الأسلوب GetVaryByCustomString في
سلسلة التجاوز العامة للفئة العامة GetVaryByCustomString(HttpContext context, string custom)
{
إذا (مخصص = = "HeaderPageKey")
{
// التحكم في رأس التخزين المؤقت.ascx
إذا (context.Request.IsAuthenticated)
{
إرجاع السياق.User.Identity.Name;
}
آخر
{
إرجاع "NoAuthenticated_User";
}
}
إرجاع base.GetVaryByCustomString (سياق، مخصص)؛
}
إذا لم يتم تسجيل دخول المستخدم، فسيتم تخزين إصدار واحد مؤقتًا. إذا قام المستخدم بتسجيل الدخول بالفعل، فسيتم تخزين إصدار آخر مؤقتًا بناءً على اسم تسجيل الدخول. هاها، يتم تخزين إصدار واحد مؤقتًا لكل مستخدم حل.
للتعرف على تقنية التخزين المؤقت المذكورة أعلاه، يرجى الرجوع إلى http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconcachingversionsofpagebasedonparameters.asp
بالإضافة إلى ذلك، يتم استخدام طريقة التخزين المؤقت هذه أيضًا في MSPetShop3.0، يتم تخزين الإصدارات المختلفة مؤقتًا بناءً على Request.Querystring وما إذا كنت قد قمت بتسجيل الدخول. ومع ذلك، لا يبدو أن ذاكرة التخزين المؤقت هذه ممكّنة بشكل افتراضي.
المصدر: kaka.net