ASP.NET 2.0은 프로그램 성능을 향상시키기 위한 몇 가지 새로운 기술 기능을 제공합니다. 캐싱 기술은 쉽게 사용자 정의할 수 있는 매우 우수한 로컬 데이터 캐싱 메커니즘을 제공하므로 데이터 액세스 성능을 효과적으로 향상시킬 수 있습니다.
캐싱에는 극복하기 쉽지 않은 단점이 있는데 바로 데이터 만료 문제입니다. 가장 일반적인 상황은 데이터베이스 테이블의 데이터 콘텐츠가 서버 메모리에 캐시된 경우 데이터베이스 테이블의 레코드가 변경될 때 웹 애플리케이션이 오래되고 부정확한 데이터를 표시할 가능성이 있다는 것입니다. 일부 데이터 유형의 경우 표시된 정보가 최신이 아니더라도 영향이 크지 않습니다. 그러나 주가, 경매 입찰 및 기타 정보와 같이 엄격한 실시간 요구 사항이 있는 데이터의 경우 약간 오래된 데이터를 표시하는 것은 허용되지 않습니다.
ASP.NET 2.0은 다음 유형의 캐시된 페이지 출력 캐시를 지원합니다. 페이지 출력 캐시는 가장 간단한 캐싱 메커니즘입니다. 이 메커니즘은 전체 ASP.NET 페이지 콘텐츠를 서버 메모리에 저장합니다. 사용자가 페이지를 요청하면 시스템은 캐시된 데이터가 만료될 때까지 해당 데이터를 메모리에서 출력합니다. 이 프로세스에서는 페이지 처리 수명 주기를 다시 거치지 않고도 캐시된 콘텐츠가 사용자에게 직접 전송됩니다. 일반적으로 페이지 출력 캐싱은 자주 수정할 필요는 없지만 컴파일을 완료하려면 많은 처리가 필요한 콘텐츠가 포함된 페이지에 특히 유용합니다. 독자는 페이지 출력 캐시가 페이지의 모든 콘텐츠를 메모리에 저장하고 클라이언트 요청을 완료하는 데 사용된다는 점에 유의해야 합니다.
페이지 부분 캐시
부분 페이지 캐싱은 출력이 전체 페이지 콘텐츠를 캐싱하는 대신 페이지의 특정 부분을 캐싱한다는 것을 의미합니다. 부분 페이지 캐싱을 구현하는 메커니즘에는 두 가지가 있습니다. 하나는 캐시해야 하는 페이지 부분을 사용자 컨트롤(.ascx 파일)에 배치하고 사용자 컨트롤(사용자 컨트롤이 포함된 페이지)에 대한 캐싱 기능을 설정하는 것입니다. 캐싱을 설정할 수도 있고 설정하지 않을 수도 있습니다). 이를 일반적으로 "제어 캐싱"이라고 합니다. 컨트롤 캐시 설정의 핵심은 사용자 컨트롤의 캐시를 구성하는 것입니다. 여기에는 주로 다음 세 가지 방법이 포함됩니다. 하나는 @OutputCache 지시문을 사용하여 사용자 정의 컨트롤에 대한 캐시 기능을 선언적으로 설정하는 것이고, 다른 하나는 코드 숨김 파일에서 PartialCachingAttribute 클래스를 사용하여 사용자 정의 컨트롤 캐시를 설정하는 것입니다. ControlCachePolicy 클래스를 사용하여 사용자 제어 캐시 설정을 프로그래밍 방식으로 지정하는 것입니다. 또는 "캐시 후 교체"라는 방법이 있습니다. 이 방법은 컨트롤 캐싱과 반대되는 방식으로, 페이지의 특정 부분을 캐시하지 않도록 설정하므로 페이지 전체를 캐시하더라도 해당 페이지를 다시 요청하면 캐시하도록 설정되지 않은 내용이 캐시됩니다. 재처리.
애플리케이션 데이터 캐시 애플리케이션 데이터 캐시는 키/값 쌍을 사용하여 메모리에 임의의 데이터를 저장하는 프로그래밍 방식을 제공합니다. 애플리케이션 캐시를 사용하는 것은 애플리케이션 상태를 사용하는 것과 유사합니다. 그러나 애플리케이션 상태와 달리 애플리케이션 데이터 캐시의 데이터는 휘발성입니다. 즉, 전체 애플리케이션 수명 동안 데이터가 메모리에 저장되지 않습니다. 응용 프로그램 데이터 캐시의 장점은 항목이 만료되거나 유효하지 않거나 메모리가 부족할 때 캐시에서 항목을 제거하는 캐시를 관리한다는 점입니다. 항목이 제거될 때 응용 프로그램에 알리도록 응용 프로그램 캐시를 구성할 수도 있습니다. .
캐시 의존성
Net 2.0에 도입된 사용자 정의 캐시 종속성, 특히 MS-SQL Server 기반의 SqlCacheDependency 기능을 사용하면 "데이터 만료" 문제를 방지할 수 있으며 해당 데이터의 변경 사항에 따라 만료된 캐시를 제거할 수 있습니다. 데이터
캐싱 기능에도 단점이 있습니다. 예를 들어, 표시되는 콘텐츠는 최신이 아니며 가장 정확하지 않을 수 있으므로 적절한 캐싱 정책을 설정해야 합니다. 또 다른 예로, 캐싱은 시스템의 복잡성을 증가시키고 테스트 및 디버그를 어렵게 만들기 때문에 캐싱 없이 애플리케이션을 개발 및 테스트한 후 성능 최적화 단계에서 캐싱 옵션을 활성화하는 것이 좋습니다.