Link1 쉬운 코드 아이디어는 다음과 같이 당신이 GetVaryByCustomString 오버라이드의 출력을 변경할 수 있습니다 당신은 게시 : 기술적으로 인증으로
public override string GetVaryByCustomString(HttpContext context, string arg)
{
if (arg == "IsLoggedIn")
{
if (context.Request.Cookies["anon"] != null)
{
if (context.Request.Cookies["anon"].Value == "false")
{
return "auth";
}
}
return Guid.New().ToString();
}
else
{
return base.GetVaryByCustomString(context, arg);
}
}
이 정말 대답하지 않습니다 사용자의 출력은 여전히 캐시되지만 인증 된 사용자가 결과가 무엇이든간에 즉시 볼 수 있도록하는 요구 사항을 충족시킵니다. 단점은 캐시 지속 시간/TTL을 충분히 작게 유지해야 캐시가 침수되지는 않지만 익명 사용자가 그로부터 충분한 이익을 얻을만큼 충분히 커야한다는 것입니다.
또 다른 대안은 캐싱을 수행하기 위해 사용자 고유의 조치 필터를 작성하고 거기에 익명 전용 캐싱에 대한 지원을 추가하는 것입니다. 이것은 '자신 만의'영역을 훨씬 더 많이 차지합니다. 시작 지점에 대해서는 Klopfenstein's old post 또는 Steve Sanderson's을 참조하십시오. OutputCache의 다른 많은 기능 (예를 들어 전체 경로 데이터를 키)은 부족하지만 사용자가 지정한 사양으로 작동하게 만들 수 있습니다.
는 사용자가 인증되어 있는지 확인하고 사용자 정의 캐시 속성을 만들 수있는 몇 가지 로직 (캐시 또는 캐시하지 출력)를 수행 한 후. –
좋은 소리, 로빈슨. 사람들이 투표 할 수 있도록 대답으로 써야합니다. :) – Kjensen