programing

외부 캐시 공급자가 있는 ASP.NET MVC 출력 캐시 속성

yellowcard 2023. 6. 9. 21:55
반응형

외부 캐시 공급자가 있는 ASP.NET MVC 출력 캐시 속성

ASP.NET MVC 5 애플리케이션을 Azure Redis로 전환한 후(Microsoft.Web.RedisOutputCacheProvider너겟 패키지)나는 그것을 보고 놀랐습니다.OutputCacheAttribute둘 중 하나를 사용하도록 설정된 경우OutputCacheLocation.Any또는OutputCacheLocation.ServerAndClient

[Route("Views/Orders")]
[OutputCache(Duration = 600, Location = OutputCacheLocation.Any)]
public ActionResult Orders()
{
}

무작위로 다음 오류를 생성합니다.

'RedisOutputCache'와 같은 사용자 지정 출력 캐시 공급자를 사용하는 경우 파일 종속성, 절대 만료, 정적 유효성 검사 콜백 및 정적 대체 콜백과 같은 만료 정책 및 캐시 기능만 지원됩니다.

위의 선언이 명확하게 다음과 같은 고급 사항 없이 절대 만료를 정의하기 때문에 이상합니다.varybyparam검색을 좀 해보니 이 문제에 대한 해결책이 없는 것 같아 매우 실망스럽습니다.ASP.NET 캐싱 메커니즘과 호환되는 외부 캐시 공급자가 있습니까?그렇지 않은 경우 MVC/WebApi 앱의 클러스터 시나리오에서 서버 측 HTTP 출력 캐싱을 어떻게 구현합니까?

문제는 엔드포인트가 인증된 경우 정의에 따라 출력이 사용자에 따라 다르다는 것입니다.따라서 기본적으로 모든 외부 출력 캐시 공급자는 더 이상 선택사항이 아닙니다.

옵션은 다음 중 하나입니다.

  1. 엔드포인트가 안전하게 익명을 허용할 수 있는 경우 엔드포인트 보호 해제
  2. 사용자에 따라 다를 수 있는 로컬 캐싱 사용
  3. 하위 작업 및/또는 AJAX가 보호된 데이터를 호출하도록 엔드포인트를 분할합니다.이를 통해 대부분의 항목을 공개할 수 있지만 실제 데이터는 캐슁되지 않고 보호됩니다.
  4. 출력과 다른 계층에서 캐시합니다.애플리케이션 서버 요청/응답 및 뷰 렌더링이 실제로 귀사의 확장 문제입니까?아니면 DB 및 서비스 계층 계산 가능성이 더 높습니까?이러한 계층의 캐슁은 쉽고 사용자에 따라 필요에 따라 쉽게 달라질 수 있습니다.

언급URL : https://stackoverflow.com/questions/40609788/asp-net-mvc-outputcacheattribute-with-external-cache-providers

반응형