Microsoft ASP.NET 출력 캐시 지정된 기간 동안 ASP.NET 페이지 또는 사용자 컨트롤의 렌더링된 콘텐츠를 캐시하는 기능을 제공합니다. 이렇게 하면 ASP.NET 응용 프로그램이 페이지를 다시 렌더링하고 다시 실행하는 대신 캐시에서 모든 후속 요청을 처리할 수 있습니다.
당신은 <% @OutputCache %> ASP.NET 출력 캐시를 사용하는 페이지의 지시문.
|
1 2 |
<%@Page … %> <%@OutputCacheDuration="duration"VaryByParam="paramList"%> |
주요 요점
InProc의 한계를 극복합니다: 기본 인프로세스 캐싱을 대체하여 개별 Azure 웹 역할의 메모리 제약 조건을 우회합니다.
높은 가용성을 보장합니다: 내장된 복제 기능을 갖춘 분산 저장소를 사용하여 Azure 유지 관리 재활용 중 데이터 손실을 방지합니다.
상태 비저장 확장을 지원합니다. 로드 밸런싱된 인스턴스 전반에 걸쳐 중복되는 캐시 복사본을 제거하여 웹 역할이 완전히 상태 비저장 상태로 유지될 수 있도록 합니다.
데이터베이스 병목 현상을 제거합니다: 빈번하고 용량이 큰 페이지 요청을 고성능 캐싱 계층에서 직접 처리함으로써 백엔드 부하를 크게 줄입니다.
ASP.NET 출력 캐싱은 특히 페이지 접근 빈도가 페이지 변경 빈도보다 높은 경우, 캐시에서 페이지를 제공하는 상황에서 매우 유용한 기능입니다. 페이지 재실행을 방지하고, 특히 많은 데이터베이스 작업이 포함된 페이지의 경우 비용이 많이 드는 데이터베이스 접근 횟수를 줄여 애플리케이션 성능을 향상시킵니다. 이는 애플리케이션 서버의 메모리 부담을 전용 캐싱 계층으로 분산시켜 상태 비저장 아키텍처를 구현하는 데 도움이 되며, Azure에서 수평 확장을 위한 필수 조건입니다. 이러한 응답을 캐싱함으로써, 많은 I/O 작업이 포함된 수백만 건의 페이지 요청을 처리할 때 일반적으로 발생하는 데이터베이스 확장성 병목 현상을 해결할 수 있습니다.
Azure 웹 역할에서 프로세스 내(InProc) 출력 캐싱의 문제점
Microsoft Azure에서 출력 캐시를 사용하면 기본적으로 페이지 출력이 Microsoft Azure 웹 역할 내에서 InProc로 저장됩니다. 이것의 첫 번째 문제는 웹 역할 인스턴스에서 사용할 수 있는 메모리로 제한되어 많은 양의 페이지 출력 데이터를 캐시할 때 메모리 부족 문제가 발생할 수 있다는 것입니다. 또 다른 문제는 애플리케이션이 부하 분산된 여러 Microsoft Azure 웹 역할 인스턴스에서 실행된다는 것입니다. 다음 요청은 이 인스턴스에서 ASP.NET 출력 캐시 데이터의 새 복사본도 만드는 다른 웹 역할 인스턴스로 이동할 수 있습니다. 각 웹 역할 인스턴스에서 페이지 출력의 이러한 중복 복사본은 많은 추가 메모리를 소비합니다.
Microsoft Azure 웹 역할 인스턴스는 유지 관리 및 패치 적용을 위해 매우 자주 재활용됩니다. 이 경우 모든 페이지 출력이 손실되고 페이지 출력 캐시를 다시 채우기 위해 모든 페이지를 다시 실행해야 합니다. 이는 Azure 애플리케이션의 성능에 부정적인 영향을 미칩니다.
Microsoft Azure에서 출력 캐싱 문제를 해결하는 방법은 무엇입니까?
Microsoft Azure에서 이러한 모든 문제를 해결할 수 있는 한 가지 방법은 out-of-process로 실행되고 모든 Microsoft Azure 웹 역할 인스턴스에 대한 공통 저장소인 분산 캐시를 사용하는 것입니다. ASP.NET 4.0에는 개발자가 원하는 모든 분산 캐시를 ASP.NET 출력 캐시 저장소로 사용하는 데 도움이 되는 확장성 지점이 도입되었습니다.
| 강제 | 진행 중(기본값) | NCache (분산) |
|---|---|---|
| 스토리지 용량 | 웹 역할 RAM으로 제한됨 | 확장 가능한 클러스터 메모리 |
| 인스턴스 종속성 | 웹 역할별 중복 복사본 | 통합 공유 스토어 |
| 재활용 영향 | 역할 유지 관리 중 데이터 손실 | 복제를 통한 영구 저장 |
| 아키텍처 | 결과적으로 "고착된" 인스턴스가 발생합니다. | 상태 비저장 웹 역할을 활성화합니다. |
분산 캐시는 페이지 출력을 위해 모든 Microsoft Azure 웹 역할에서 공유되므로 개별 웹 역할 인스턴스 내에서 중복 복사본이 생성되지 않습니다. Microsoft Azure 웹 역할은 완전히 상태 비저장이 되므로 웹 역할이 재활용될 때 데이터가 손실되지 않습니다. 모든 캐시 서버의 메모리 리소스를 함께 풀링하여 분산 캐시에 방대한 양의 데이터를 캐시할 수 있습니다. 또한 분산 캐시는 각 Microsoft Azure 웹 역할 인스턴스에서 개별적으로 데이터베이스 호출과 관련된 페이지 실행을 수행할 필요가 없기 때문에 데이터베이스의 로드를 줄입니다.
NCache Azure의 경우 .NET용 메모리 내 분산 캐시 Microsoft Azure 클라우드에 배포된 애플리케이션. NCache for Azure는 ASP.NET 페이지 출력을 저장하고 위에서 언급한 모든 문제를 해결하는 데 사용할 수 있는 ASP.NET 출력 캐시 공급자를 구현했습니다. 또한 배포 NCache 등 Azure 캐싱 서비스 복제를 통해 데이터 안정성을 제공할 뿐만 아니라 애플리케이션 확장성을 향상시킵니다.
이용 방법 NCache Azure ASP.NET 출력 캐시 공급자용
당신이 사용할 수 NCache Microsoft Azure 애플리케이션에 대한 코드 변경 없이 다음과 같이 ASP.NET의 출력 캐싱을 위한 Azure용입니다.
1 단계 : 참조 추가 NCache Azure Output Cache 공급자 어셈블리용.
파일: web.config
|
1 2 3 4 5 6 |
<compilation debug="true " targetframework="4.0"> <assemblies> <add assembly="Alachisoft.NCache.OutputCache,Version=x.x.x.x,Culture=neutral"> </add></assemblies> </compilation> |
2 단계 : 회원가입 NCache Azure 출력 캐시 공급자의 경우구성> 섹션 및 캐시 설정을 제공합니다.
파일: web.config
|
1 2 3 4 5 6 7 8 |
<caching> <outputcache defaultprovider="NOutputCacheProvider"> <providers> <add name="NOutputCacheProvider" type="NCOutputCache.NOutputCacheProvider" exceptionsenabled="true" enablelogs="false" cachename="mypartitionofReplicaCache"> </add></providers> </outputcache> </caching> |
3 단계 : 캐시하려는 페이지에 ASP.NET 출력 캐시 지시문을 추가합니다.
|
1 |
<%@OutputCacheVaryByParam="ProductCategory"Duration="300"%> |
선적 서류 비치: ASP.NET 출력 캐싱 사용 NCache
NCache Azure ASP.NET 출력 캐시 기능용
NCache for Azure는 Microsoft Azure의 출력 캐싱을 캐싱하고 관리하기 위한 다양한 기능을 제공합니다. 다음은 그 목록입니다.
- 페이지 출력 기간 지정: NCache for Azure를 사용하면 ASP.NET 페이지 출력을 캐시할 기간을 지정할 수 있습니다.
- 페이지의 다른 버전 캐시: NCache for Azure를 사용하면 VaryByParam, VaryByCustom, VaryByControl과 같은 다양한 ASP.NET 출력 캐시 지시문에 따라 다양한 버전의 페이지를 캐시할 수 있습니다. 페이지 요청에 대해 다른 매개변수가 수신되면 페이지 출력의 다른 버전이 분산 캐시에 저장됩니다.
- 페이지의 다른 부분을 캐시합니다. 전체 페이지를 캐싱하는 대신 페이지의 일부만 지정할 수도 있습니다. 이것은 페이지의 정적 부분만 캐시하고 런타임에 렌더링되는 동적 부분은 남겨두는 상황을 위한 것입니다.
- ASP.NET 출력 캐시에 대한 사용자 지정 후크 구현: NCache Azure용을 사용하면 페이지 출력에 대한 사용자 지정 후크(인터페이스)를 구현하고 등록할 수 있습니다. 이는 다음과 같은 일부 확장 속성을 페이지 출력에 첨부하기 위한 것입니다. NCache Azure 데이터베이스 종속성, 태그, 그룹 등
맺음말
이미 보았듯이 분산 캐시를 사용하면 ASP.NET 페이지 출력을 캐시할 수 있으므로 부하가 분산된 여러 Azure 웹 역할과 관련된 애플리케이션 문제를 해결할 수 있습니다. NCache Azure ASP.NET 출력 캐시 공급자는 ASP.NET 애플리케이션의 성능, 확장성 및 안정성을 향상시키는 데 도움을 줍니다. NCacheAzure에 배포된 애플리케이션은 초당 수백만 건의 요청을 처리하면서도 밀리초 미만의 지연 시간을 유지할 수 있으므로 대용량 콘텐츠 전송에서 데이터베이스를 단일 장애 지점으로 만드는 문제를 효과적으로 해결할 수 있습니다.
자주 묻는 질문 (FAQ)
질문: 로드 밸런싱된 Azure 환경에서 기본 ASP.NET 출력 캐싱이 비효율적인 이유는 무엇입니까?
A: 기본적으로 출력 캐시는 프로세스 내(InProcess)에 저장됩니다. 로드 밸런싱 환경에서는 각 웹 역할 인스턴스가 자체적으로 격리된 캐시를 유지하므로 메모리 사용량이 중복되고 서버 인스턴스 간에 데이터 일관성이 떨어질 수 있습니다.
Q : 어떻게합니까? NCache Azure 웹 역할 유지 관리 중 캐시 손실을 방지하려면 어떻게 해야 할까요?
A: 이후로 NCache 웹 역할 프로세스와는 별개의 분산 서비스로 실행되므로, 패치를 위해 Azure 인스턴스가 재활용될 때 영향을 받지 않습니다. 내장된 데이터 복제 기능을 통해 클러스터 전체에서 페이지 출력의 가용성을 높게 유지할 수 있습니다.
Q: 사용할 수 있습니까? NCache ASP.NET 애플리케이션을 다시 작성하지 않고 출력 캐싱을 구현하는 방법은 무엇인가요?
A : 네. NCache ASP.NET 4.0 확장성 공급자 모델을 활용합니다. 통합은 웹 구성(web.config) 설정에서 등록을 통해 완전히 처리됩니다. NCache 페이지 로직이나 C# 코드를 전혀 변경할 필요 없이 출력 캐시를 제공할 수 있습니다.
Q : 않습니다 NCache 페이지 전체 출력 대신 특정 부분만 캐싱하는 것을 지원하시겠습니까?
A : 그렇습니다. NCache 프래그먼트 캐싱을 지원합니다. 이를 통해 페이지의 정적 부분을 선택적으로 캐시하고 동적 섹션은 런타임에 렌더링할 수 있으므로 다양한 콘텐츠 유형이 혼합된 페이지의 성능을 최적화할 수 있습니다.






