Click or drag to resize

시간 기준 캐시

탭스 업로드 컴포넌트가 메모리에 로딩되면 웹 응용 프로그램(w3wp.exe) 내에서 동작하는 글로벌 캐시 매니저가 생성됩니다. DataCache 오브젝트를 사용해 글로벌 캐시 매니저와 통신할 수 있으며, CacheDependency 오브젝트를 사용해 다양한 메커니즘으로 캐시 데이터 만료를 정의할 수 있습니다.

매 5분 마다 갱신되는 캐시 데이터

가장 일반적으로 사용되는 캐시 방법으로 매 일정 시간 마다 만료되는 캐시 데이터를 정의할 수 있습니다.

DataCache 오브젝트의 Item 프로퍼티를 사용해 캐시에 저장된 값을 조회할 수 있습니다. 캐시가 비어 있거나 캐시된 값이 만료된 경우 Null을 반환하므로 IsNull() 메서드를 사용해 Null인지 여부를 검사합니다.

캐시 데이터 값이 Null인 경우 캐시할 데이터를 구성합니다. 구성이 끝난 경우 Insert 메서드를 호출해 글로벌 캐시 매니저에 등록할 수 있습니다. 등록할 때 다양한 방식으로 캐시 만료 규칙을 정의할 수 있습니다. absoluteExpiration에 0을 지정하고 slidingExpirationSec에 300을 지정할 경우 매 5분 마다 캐시 데이터가 만료되게 됩니다. 만료되면 Null을 반환하고 이를 검사해 새 데이터를 캐시에 추가하는 방식으로 동작합니다.

아래 코드는 위 내용을 매우 간단하게 구현한 예제입니다.

ASP
Dim cache, value
Set cache = Server.CreateObject("TABS.DataCache")
value = cache("cache-key")
If IsNull(value) Then
    value = "new cached value"

    cache.Insert "cache-key", value, Null, 0, 300
End If

캐시에 저장되는 데이터는 object 형식을 제외한 모든 VBScript 데이터 형식이 가능합니다. Object를 지원할 경우 COM 오브젝트를 담을 수 있고 이 경우 COM 스레드 모델 제한으로 인해 ASP에 많은 문제를 일으킬 수 있습니다. 예를 들면 ADO의 RecordSet을 직접 저장할 경우 ASP에서 예기치 않은 문제가 발생할 수 있으므로 RecordSet 대신 RecordSet.GetRows()가 반환하는 배열을 저장해야 합니다.

캐시를 사용하는 가장 큰 이유가 성능을 극대화하기 위한 것이므로 캐시에 저장되는 데이터는 추가적인 프로세싱 없이 바로 사용할 수 있는 형태로 저장하는 것이 바람직합니다. 대부분의 경우 웹 브라우저로 HTML을 즉시 보낼 수 있도록 데이터 소스로부터 생성된 HTML 코드를 저장하는 것이 가장 좋습니다.