ASP.NET 본질적으로 ASP.NET 애플리케이션에 정보를 캐시하는 프로그래밍 기능을 제공합니다. 기능은 애플리케이션 객체와 유사하지만, 애플리케이션의 수명 동안 캐시된 정보를 동적으로 유지할 수 있는 기능을 ASP.NET 합니다. 애플리케이션 내 데이터를 캐싱하면 데이터가 서버에 위치해 있어 빠르게 복구할 수 있어 성능을 크게 향상시킬 수 있습니다. 원래 데이터 소스를 다시 조회할 필요 없이. 특히 현재 시스템에서 가장 큰 병목 현상은 데이터베이스이며, 캐시의 합리적인 사용은 불필요한 데이터베이스 접근을 줄여 시스템 성능을 최적화할 수 있습니다.
캐시 객체는 관리 애플리케이션의 다른 사용자나 ASP.NET 자체가 캐시 내 캐시 항목에 대해 행동할 수 있도록 관련성 기반 만료 및 콜백 알림을 구현하는 능력을 향상시킵니다. 캐시 객체를 사용해 어떤 타입(값 타입 또는 애플리케이션 타입)이든 저장한 후 업데이트하거나 삭제하세요. 캐시는 애플리케이션 객체보다 더 유연한 객체입니다. 지원은 다음과 같습니다:
1. 관련성 기반 만료 및 삭제 - 캐시 객체는 자동 만료 및 삭제를 파일 이벤트, 특정 또는 상대적인 날짜/시간, 또는 다른 캐시 키에 바인딩할 수 있는 기능을 제공합니다.
2. 자동 잠금 관리 - 캐시 객체에는 내부 잠금 관리가 포함되어 있어, 원자 업데이트(계산 연산에 삽입할 수 있는 업데이트)를 동기화합니다.
3. 콜백 메커니즘 - 캐시 객체는 캐시 항목을 삭제할 때 콜백 함수를 호출하도록 설정할 수 있는 기능을 제공합니다.
캐시 추가 메서드에는 Add() 또는 Insert(가 포함되며, Insert 메서드는 기본 매개변수 두 가지를 모두 사용하여 선택적 매개변수를 사용하여 캐시를 추가할 수 있습니다:
Cache.Add(키이름, 키값, 의존성, 절대 만료, 슬라이딩 만료, 우선순위, 캐시 아이템 제거콜백);
매개변수는 캐시 이름, 캐시된 객체, 의존성, 절대 만료 시간, 상대적 만료 시간, 우선순위, 그리고 캐시 만료로 인한 이벤트입니다.
캐시 의존성: 파일 의존성, 기타 캐시 의존성, 데이터베이스 의존성, 만료 시 메서드가 설정되며, 의존성이 변경되면 캐시는 무효가 되어 특정 이벤트를 발생시킬 수 있습니다.
1. 파일 의존성: xml 파일에 대한 캐시 의존성:
- <p>DataSet dsProducts = new DataSet();</p><p>//...dsProducts数y据Y</p><p>CacheDependency fileDepends = new CacheDependency(Server.MapPath("Northwind.xml"));</p><p>Cache.Insert("dsProducts", dsProducts, fileDepends);</p>
코드 복사
2. 기타 캐시 항목 의존성:
- <p>object cacheData;</p><p>string[] fileDependsArray = { Server.MapPath("Northwind.xml") };</p><p>string[] cacheDependsArray = { "Depend0", "Depend1", "Depend2" };</p><p>CacheDependency cacheDepends = new CacheDependency(fileDependsArray, cacheDependsArray);</p><p>Cache.Insert("cacheName", cacheData, cacheDepends);</p>
코드 복사
3. 만료 시간 설정:
AbsoluteExpiration은 캐시의 절대 만료 시간을 설정할 수 있으며, 예를 들어 30분 후에 만료되도록 설정할 수 있습니다:
- Cache.Insert("cacheName ", "cacheValue", null, DateTime.Now.AddMinutes(30), Cache.NoSlidingExpiration);
코드 복사 NoSlidingExpiration은 상대적인 만료 시간을 설정할 수 있는데, NoSlidingExpiration이 설정한 시간 내에 캐시에 접근하지 않으면 캐시가 만료되지 않습니다. 30분 이내에 캐시에 접근하면 만료되지 않습니다:
- Cache.Insert("cacheName", "cacheValue", null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(30));
코드 복사
|