Google 어플 전반에 걸쳐 OutputCache
에 넣을 수있는 많은 콘텐츠가 있지만이 콘텐츠는 언제든지 모든 사용자가 새로 고칠 수 있습니다. 사용자가 새로 고침 작업을 시작할 때 캐시를 완전히 지우려면해야합니다.OutputCache 항목의 이름은 어떻게 알 수 있습니까?
나는 충분히 간단 할 것이라고 생각했는데 HttpResponse
에는 RemoveFromOutputCache
이라는 메서드가 있습니다. 그러나이 메서드는 캐시 된 항목의 이름 인 문자열을 사용합니다. 캐시 된 항목 이름 목록을 얻는 쉬운 방법이없는 것처럼 보입니다.
은 결과적으로 나는 다음 클래스와 OutputCacheAttribute
오버라이드 (override) 한 : 특정 행동이 내 응용 프로그램에 명중 될 때
public class HierarchyOutputCache : OutputCacheAttribute
{
public static readonly ConcurrentBag<string> CachedPages = new ConcurrentBag<string>();
public HierarchyOutputCache(params string[] varyParameters)
{
Location = OutputCacheLocation.Server;
Duration = int.MaxValue;
VaryByParam = string.Join(";", varyParameters);
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
CachedPages.Add(filterContext.HttpContext.Request.RawUrl);
}
}
그런 다음 나는 다음과 같은 작업을 수행 할 수 있습니다
HierarchyOutputCache.CachedPages합니다. ForEach (Response.RemoveOutputCacheItem); 나는 내 속성에 저장하고있는
RawUrl
에 잘못된 문자열을 전달하고 있기 때문에
그러나, Response.RemoveOutputCacheItem
내가 생각하는 작동하지 않는 것은.
어디에서나이 이름이 무엇인지에 관한 정보를 찾을 수 없습니까?