IIS7의 설정에 대한 질문. 각 바인딩에 대해 하나의 캐시를 어떻게 수행 할 수 있습니까? 예를 들어 사이트에 하나의 사이트와 3 개의 바인딩이 있습니다. 세 바인딩 각각에 대해 세 가지 다른 캐시를 만들어야합니다.IIS 7, 세 바인딩, 어떻게 그들을 위해 세 가지 캐시를 수행 할 수 있습니까?
답변
수동으로 캐시에서 읽고 쓰는 경우 usr의 대답은 정확합니다. 그러나 OutputCacheAttribute를 사용하면 캐시 키를 직접 제어 할 수 있습니다.
OutputCacheAttribute
은 여전히 구현시 캐시 키를 사용합니다. ASP.NET에서는 캐시 된 각 항목에 조회 할 키가 할당됩니다.
컨트롤러 동작을 OutputCacheAttribute
으로 호출하면 캐시 키가 요청을 기반으로 생성됩니다. 예를 들어 VaryByParam
지정이있는 경우 캐시 키는 각 사용자마다 다를 수 있습니다. 그런 다음 Action이 반환하는 응답은 해당 키 아래의 캐시에 저장됩니다.
다음 요청이 들어 오면 캐시 키가 생성되고 캐시에서 해당 키 아래에 이미 캐시 된 것이 있는지 확인합니다. 그렇다면, 우리는 단지 그것을 반환합니다. 그렇지 않으면 작업을 계속 진행합니다.
캐시 키에 호스트 이름을 포함시켜 각 바인딩마다 다른 캐시를 가질 수 있습니다. 당신이 OutputCacheAttribute를 사용하는 경우, 당신은 호스트 캐시를 변화 할 수 있도록 재정의 할 수 있습니다
public override string GetVaryByCustomString(HttpContext context, string customVary)
{
if(customVary == "Host")
{
return context.Request.Url.Host;
}
// other behaviors here if necessary
return "";
}
이 캐시 키를 동적으로 사이트에 액세스되는 호스트 이름을 포함하도록 수정 될 수 있습니다. 즉, 세 개의 서로 다른 바인딩이있는 경우 세 가지 다른 캐시 키가 있습니다 (다른 다양한 매개 변수가 없다고 가정).
는 여기에 귀하의 컨트롤러 동작을 수정하는 방법은 다음과 같습니다
[MyOutputCache(VaryByParam = "None", VaryByCustom = "Host", Duration = 7200)]
public ActionResult Index()
{
// ...
return View();
}
공지 한 후 사용되는 키 캐시에 오버라이드 (override) OutputCacheAttribute의 GetVaryByCustomString()
방법으로 볼 수있어 포함되어 VaryByCustom = "Host"
의 포함.
Request.Host
을 캐시 키의 일부로 사용하십시오.
- 1. 어떻게 세 가지 작업을 세 컨트롤러가
- 2. 내가 세 가지 활동이 세 번째 활동
- 3. 내가 AJAX 세 가지 호출을 실행하려고했다 위해
- 4. 어떻게이 세 가지 쿼리를 결합 할 수 있습니까?
- 5. 나는이 세 가지 수업을
- 6. .py와 .exe, 세 가지 질문
- 7. 세 가지 수식의 단순화
- 8. NSXMLParser 세 가지 동일한 요소
- 9. 어떻게 내가 세 가지 형태가 .... 개요
- 10. 나는이 세 가지 선택을했습니다 jQuery를
- 11. 세 가지 값 중에서 선택
- 12. 세 평면의 교차점은 어떻게 찾을 수 있습니까?
- 13. NlogN의 세 가지 값 비교
- 14. 그 기준 세 가지 목록
- 15. 파이썬 - 나는 세 가지 제약이
- 16. 레일 내가 세 가지 모델이
- 17. UINavigationController + UITableView : 디자인 패턴 : 세 가지 동작 수행
- 18. 세 가지 작업 배치 파일
- 19. 세 가지 평가를 매개 변수화해야합니까?
- 20. 세 가지 차원 배열 초기화
- 21. 어떻게 문자열을 세 부분으로 나눕니까?
- 22. 세 가지 방법 중 하나는 내가이 사람과 같은 세 가지 방법이 mockito
- 23. PHP : 나는 세 가지 변수를 hvae 루프
- 24. 이 프로그래밍 방식으로 세 가지 방법
- 25. Java에서 세 가지 상태 변수 사용
- 26. 어떻게 세 가지 모듈로 다른 카테고리 레이아웃을 표시 할 수 있습니까?
- 27. 세 가지 라인의 UILabel의 텍스트를 표시하려고 Mutliline
- 28. OCaml에서 세 가지 fscanf 호출의 차이점은 무엇입니까? .
- 29. JToggleButton을 사용하여 세 가지 상태 간 전환
- 30. 세 가지 최적화 기법에 대해 혼동 스럽습니다
감사합니다 Maxim! 그것은 작동합니다! 그래서 나는 하나 더 [설명] (http://visitmix.com/writings/using-varybycustom-with-outputcache-in-asp-net-mvc-to-support-caching-for-logged-in-users)를 찾았습니다. 당신의 설명 – DmitryBLR
@DmitryBLR 도움이 된 것을 기쁘게 생각합니다! 행운을 빕니다. –