예를 들어 웹 사이트에는 Header.ascx 사용자 컨트롤이 있습니다. 각 페이지에서는 이 컨트롤을 "페이지 헤더"라고 부릅니다. 그러나 이제 이 Header.ascx 사용자 컨트롤은 로그인을 표시해야 합니다. 사용자 이름이므로 다음 캐싱 방법을 직접 사용할 수 없습니다:
<% @ OutputCache Duration = " 86400 " VaryByParam = " None " %>
이때 다음과 같은 "커스텀 문자열 기반 페이지 캐싱" 방법을 사용할 수 있습니다.
<%@ OutputCache Duration="86400" VaryByParam="None" VaryByCustom="HeaderPageKey" %>
그런 다음 전역 클래스
공용 재정의 문자열 GetVaryByCustomString(HttpContext context, string custom)
에서 GetVaryByCustomString 메서드를 재정의합니다.
{
if(custom=="HeaderPageKey")
{
//캐시 Header.ascx 컨트롤
if(context.Request.IsAuthenticated)
{
context.User.Identity.Name을 반환합니다.
}
또 다른
{
"NoAuthenticated_User"를 반환합니다.
}
}
return base.GetVaryByCustomString(컨텍스트, 사용자 정의);
}
사용자가 로그인하지 않은 경우 한 버전이 캐시됩니다. 사용자가 이미 로그인한 경우 로그인 이름을 기반으로 다른 버전이 캐시됩니다. 하하, 각 사용자에 대해 한 버전이 캐시됩니다. 해결책.
위의 캐싱 기술에 대해서는 http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconcachingversionsofpagebasedonparameters.asp 를 참조하세요.
또한 이 캐싱 방법도 사용됩니다. MSPetShop3.0에서는 Request.Querystring과 로그인 여부에 따라 다양한 버전이 캐시됩니다. 그러나 이 캐시는 기본적으로 활성화되어 있지 않은 것 같습니다.
출처: kaka.net