KR101265805B1 - 캐쉬 엔트리 유효성 판정 방법, 무효의 캐쉬 엔트리 퍼지 방법, 및 하나 이상의 컴퓨터 판독가능 저장 매체 - Google Patents

캐쉬 엔트리 유효성 판정 방법, 무효의 캐쉬 엔트리 퍼지 방법, 및 하나 이상의 컴퓨터 판독가능 저장 매체 Download PDF

Info

Publication number
KR101265805B1
KR101265805B1 KR1020040047214 KR101265805B1 KR 101265805 B1 KR101265805 B1 KR 101265805B1 KR 1020040047214 KR1020040047214 KR 1020040047214 KR 101265805 B1 KR101265805 B1 KR 101265805B1
Authority
KR
South Korea
Prior art keywords
cache
dependency
customized
computer system
entry
Prior art date
Application number
KR1020040047214
Other languages
English (en)
Inventor
아담웨이드 스미스
로버트마이클 하워드
패트릭 유-관 엔그
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Application granted granted Critical
Publication of KR101265805B1 publication Critical patent/KR101265805B1/ko

Links

Images

Abstract

커스텀 캐쉬 의존성을 도출하기 위한 시스템, 방법, 및 컴퓨터 제조물이 설명된다. 임의의 커스텀 조건에서 캐쉬 엔트리들을 무효화하기 위한 커스텀 캐쉬 의존성 클래스들을 도출하는데 사용될 수 있는 확장형 캐쉬 의존성 베이스 클래스를 포함하는 프레임워크가 개시된다. 일부 실시예에서는, 웹(Web) 페이지 서버는 캐쉬, 및 확장형 캐쉬 의존성 베이스를 포함하는 프레임워크를 포함한다. 캐쉬 엔트리가 커스텀화된 캐쉬 의존성에 대해 의존적이게 하고, 커스텀화된 캐쉬 의존성에 기초하여 캐쉬 엔트리들을 무효화하기 위한 방법들이 개시된다. 예를 들면, 캐쉬 엔트리들은 데이타베이스 테이블들 및 웹 서비스들에 의존하고, 이들에 대한 의존성에 기초하여 퍼지될 수 있다.
확장형 캐쉬 의존성, 커스텀화된 캐쉬 의존성 클래스, 웹 페이지, 콘텐트, 프레임워크, 서버 컴퓨터 시스템, 클라이언트 컴퓨터 시스템

Description

캐쉬 엔트리 유효성 판정 방법, 무효의 캐쉬 엔트리 퍼지 방법, 및 하나 이상의 컴퓨터 판독가능 저장 매체{GENERAL DEPENDENCY MODEL FOR INVALIDATING CACHE ENTRIES}
도 1은 서버 측 스크립팅 및 커스텀 캐쉬 의존성을 구현하는 웹 페이지 서버의 예를 도시한 도면.
도 2는 캐쉬 엔트리가 커스텀 의존성에 의존적이게 만드는 방법의 일 실시예를 도시하는 예시의 흐름도.
도 3은 커스텀 캐쉬 의존성에 기초하여 캐쉬 엔트리들을 퍼지하는 방법의 일 실시예를 도시하는 예시의 흐름도.
도 4는 본 발명의 양상들이 실시될 수 있는 하나의 적당한 환경의 개략적 개념도.
<도면의 주요부분에 관한 부호의 설명>
100: 서버
102: 클라이언트
104: 네트워크
106: 확장형 CacheDependency 클래스
108: 데이타베이스 인터페이스 모듈
110: 캐쉬
112: 데이타베이스
114: 커스텀 캐쉬 의존성
116, 117: 데이타베이스 테이블
118: 플래그 엔트리
<발명의 분야>
본 발명은 일반적으로 캐쉬된 콘텐트의 관리에 관한 것이다. 특히, 본 발명은 개발자들이 커스텀 캐쉬 의존성들(custom cache dependencies)을 생성할 수 있도록 캐쉬 의존성 클래스들을 확장하는 것에 관한 것이다.
<배경 및 관련 기술>
현대의 컴퓨터 시스템 및 네트워크 시스템에 있어서, 데이타 캐슁(data caching)은 데이타를 요청한 사람들에게 데이타의 전달을 가속화하기 위한 효과적인 툴이다. 일반적으로, 데이타 캐슁은, 데이타를 재빠르게 검색할 수 있는 위치에 빈번하게 요청된 데이타를 저장하는 것을 수반한다. 일 예에 있어서, 컴퓨터 시스템의 물리적 메모리에 저장된 데이타는 컴퓨터 시스템의 하드 드라이브에 저장된 데이타보다 더 빠르게 검색될 수 있다. 이것은 통상적으로 물리적 메모리에 비해 더욱 큰 데이타 검색 레이턴시를 갖는 하드 드라이브에 부분적으로는 기인한다. 마찬가지로, 하드 드라이브 또는 서버 컴퓨터 시스템 상의 메모리에 저장된 데이타 는 원격 데이타베이스에 저장된 데이타보다 더욱 효과적으로 액세스될 수 있다. 또한, 캐쉬된 데이타의 사용은 요구한 클라이언트 컴퓨터 시스템으로 전달하기 위한 콘텐트를 생성하기 위해 필요한 계산의 수를 감소시킬 수 있다.
현대의 네트워크들은 다양한 위치들로 및 다양한 위치들로부터 디지탈 정보를 광범위하게 전송하는 능력을 촉진시켜 왔다. 전송에 이용가능한 데이타를 만들기 위한 한가지 방법은, 서버로부터 그것을 볼 수 있는 클라이언트 컴퓨터 시스템으로 다운로드될 수 있는 HTML 파일과 같은 스태틱 파일(static file)을 생성하는 것이다. 스태틱 파일들은 서버 컴퓨터 시스템, 지역적 데이타베이스, 또는 심지어 국부적으로는 클라이언트 컴퓨터 시스템을 포함하는 다양한 위치들에서 캐쉬될 수 있다. 컴퓨터 시스템 스태틱 파일들이 클라이언트 컴퓨터 시스템에 저장되는 경우, 클라이언트 컴퓨터 시스템에 의한 검색 및 디스플레이는 모든 실용적인 목적에 대해서 동시적이다. 스태틱 파일들이 클라이언트 컴퓨터 시스템(통상적으로 출력 캐슁으로 알려져 있음)과 연결된 서버 컴퓨터 시스템 상에 직접적으로 저장되는 경우에서도, 캐쉬된 콘텐트의 검색은 비교적 빠르게 발생할 수 있다. 또한, 그들의 정적인 특성 때문에, 스태틱 파일은 긴 시간동안, 본질적으로는 무한하게 캐쉬될 수 있다.
불행하게도, 스태틱 파일들은 실시간 또는 커스텀 콘텐트를 포함하지 못한다. 종종, 주기적 베이시스로 변화하거나, 또는 다른 콘텐트의 계산 또는 조작으로부터 형성된 콘텐트를 제공하는 것이 바람직하다. 그러한 콘텐트가 여전히 캐쉬되는 동안, 콘텐트의 캐쉬 값들은 오직 한정된 기간동안에만 유효하다. 그 결과, 캐쉬는 그 데이타가 유효함을 보증하기 위하여 리프레시(refresh)되어야만 한다.
웹 개발자들이 웹 페이지 및 웹 사이트들을 생성하는 것을 보조하였던 하나의 기술은, 예를 들어 인터넷 정보 서버(Internet Information Server) 같은 웹 페이지 서버 상에서 실행하는 컴퓨터 실행가능한 코드의 스크립트(scripts) 또는 모듈 단편들을 사용하는 것이다. 스크립트는 다른 HTML 태그 중에 내장되어 동적이고 커스터마이징가능한(customizable) 웹 페이지들을 생성할 수 있다. Visual Basic, JavaScript, 및 C#로 기입된 프로그램에서 오브젝트들이 불러질 수 있는 것처럼, 이 랭귀지들 및 그 외의 랭귀지들에 기반을 둔 스크립트에서 동일한 오브젝트들을 부를 수 있다.
클래스는 ASP.NET 프레임워크 등의 프로그래밍 프레임워크 내의 오브젝트이다. ASP.NET 프레임워크는 웹 페이지 개발자들이 웹 페이지를 개발하기 위해 사용할 수 있는 수천개의 클래스들을 포함한다. 디렉토리 경로를 통해 파일을 액세스하는 것과 유사한 방식으로, 클래스들은 특정 이름 공간(name space)을 참조하여 액세스될 수 있다. 예를 들면, 이름 공간 System.WinForms.Form 에 대한 참조는 특정 클래스의 위치의 표시를 제공한다. 클래스들은 속성, 이벤트 및 방법과 연관될 수 있다. 속성은 일부 가변하는 할당 또는 대응하는 클래스(예를 들어, x=5)에서의 설정으로서 고려될 수 있다. 이벤트는 이벤트의 발생에 따라 일어나는 플래그이다. 이벤트는 다른 클래스들 또는 다른 어플리케이션들에 의해 판독되어 일부 액션들이 취해지게 할 수 있다. 방법은 액션을 수행하기 위해 대응하는 클래스의 기능을 불러내는 방법을 제공한다(예를 들어, 디스플레이 장치로의 출력 데이타). 방법은 외부 컴포넌트들에게 기능이 제공되는 방법을 정의한다.
콘텐트를 캐슁하는 것을 용이하게 하여, 이에 따라 웹 페이지 서버의 성능을 개선시키기 위하여, 프로그래밍 프레임워크는 예를 들어, 파일, 데이타베이스 및 웹 서비스와 같은 다양한 위치들로부터 데이타를 검색하기 위한 클래스들, 및 다양한 동작들을 통해 데이타를 조작하기 위한 클래스들을 포함할 수 있다. 일부 환경에서는, 이들 클래스들에 대한 액세스를 갖는 웹 페이지 서버 컴퓨터 시스템(예를 들어, ASP 서버)은 실시간 콘텐트에 기초하여 HTML 코드를 생성하고 저장할 수 있으며, 이 HTML 코드는 출력 캐슁 시나리오에서 클라이언트 컴퓨터 시스템으로 전송된다. 다른 환경에서, 웹 페이지 서버 컴퓨터 시스템은 예를 들어 XML 파일 같이 콘텐트를 웹 페이지 서버 컴퓨터 시스템에서 국부적으로 캐쉬할 수 있어서, 콘텐트를 포함하는 웹 페이지가 요청될 때마다 콘텐트가 재검색되거나 또는 재계산될 필요가 없다.
일부 프로그래밍 프레임워크들은 웹 개발자들로 하여금, 실행될 때 콘텐트가 캐쉬에 저장되게 하는 명령어들을 생성할 수 있게 한다. 예를 들면, 엔트리를 캐쉬에 삽입하기 위하여, 이하의 명령어가 실행될 수 있다: Cache.Insert([key],[value],[dependency]), 이때 키(key)는 캐쉬 엔트리에 대한 기준 식별자이고, 값(value)은 캐쉬 엔트리에 배치되는 값(또는 콘텐트)이며, 의존성(dependency)은 키에 대한 값이 캐쉬로부터 퍼지되어야만 할 때를 정의하는 선택적 인수(argument)이다. 의존성은 클래스의 인스턴스(instance)이고, 예를 들어 캐쉬값이 특정 이벤트의 발생에 의존적이게 만드는데 사용될 수 있는 CacheDependency 클래스이다.
일부 프로그래밍 프레임워크들은, 캐쉬된 값들이 시간, 파일, 또는 키 중의 어느 하나에 의존적이게 하는 캐쉬 의존성을 지원한다. 시간 캐쉬 의존성은 특정 의존성과 연관된 엔트리가 특정 기간의 만료 후에 퍼지되게 한다. 예를 들면, Cache.Insert 명령어는 다음과 같이 구현되어 데이타가 시간에 대해 의존적이게 한다:
Figure 112004027241149-pat00001
더욱 특히, DateTime.Now.AddMinutes(60) 명령어는 캐쉬 내의 엔트리가 60분 후에 캐쉬로부터 퍼지되게 한다. 매우 짧게 설정된 시간 캐쉬 의존성을 사용함으로써 매우 빈번한 캐쉬의 퍼징 및 데이타베이스로부터 데이타를 종종 페치하는데 드는 추가의 비용 또는 캐쉬에 저장될 데이타를 계산하는 비용을 발생시킬 수 있다. 시간 값이 너무 길게 설정되면, 캐쉬에 저장된 데이타가, 요구하는 클라이언트 컴퓨터 시스템으로 전달될 때에 무효가 될 위험성이 있다.
Cache.Insert 명령어는 또한 특정 파일에 변경이 있으면 캐쉬 엔트리가 퍼지되게 하는 파일 캐쉬 의존성을 구현하는데 사용될 수 있다. 또한, Cache.Insert 명령어는 메모리에 저장된 일부 다른 캐쉬 값이 변경될 때 하나 이상의 캐쉬 엔트리가 퍼지되게 하는 키 의존성을 구현하는데 이용될 수 있다. 키 의존성을 이용하면, 하나의 캐쉬 값의 변화는 다수의 의존적인 캐쉬 값들이 캐쉬로부터 퍼지되게 할 수 있다.
상술한 3개의 캐쉬 의존성들인, 시간, 파일 및 키가 캐쉬에 저장된 값을 신규의 것으로 유지하기 위해 유용한 것인 한편, 이들 의존성들을 구현하는 클래스들은 통상적으로 밀봉(seal)된다. 그러므로, 웹 개발자들은 통상적으로 캐쉬 엔트리가 다른 타입의 이벤트들에 의존적이게 하는 방법이 없다. 이것은 캐쉬의 관리를 더욱 효과적이게 할 수 있는 다양한 타입의 캐쉬 의존성들이 사용되는 것을 방해한다. 따라서, 유익한 것은 캐쉬 엔트리들을 무효화하기 위해 사용될 수 있는 의존성의 타입들을 확장하기 위한 메카니즘이다.
종래 기술의 상술한 문제점들은 본 발명의 원리에 의해 극복되며, 본 발명의 원리들은 개발자들이 커스텀 캐쉬 의존성들을 생성할 수 있도록 캐쉬 의존성 클래스들을 확장하기 위한 방법, 시스템, 및 컴퓨터 프로그램 제조물에 대한 것이다. 서버 컴퓨터 시스템(예를 들어, 웹 페이지 서버를 포함함)은 확장형 캐쉬 의존성 베이스 클래스를 액세스하고, 이 확장형 캐쉬 의존성 베이스 클래스로부터 커스텀화된 캐쉬 의존성을 도출한다. 커스텀화된 캐쉬 의존성은 예를 들어 캐쉬 엔트리가 데이타베이스 테이블(예를 들어, SQL 테이블) 또는 웹 서비스 상의 변화에 의존적이게 만들 수 있다.
커스텀화된 캐쉬 의존성은, 캐쉬 엔트리가 다수의 이벤트들에 의존하도록 하는 집합 의존성(aggregate dependency)을 포함한다. 일부 실시예들에 있어서, 커스텀화된 캐쉬 의존성의 기능은 확장형 캐쉬 의존성 베이스 클래스의 기능에 우선한다. 확장형 캐쉬 의존성 베이스 클래스는, 이벤트(예를 들어, 데이타베이스 테이블에서의 변경)에 대해 모니터하고 서버 컴퓨터 시스템에게 이벤트가 발생하는 시기를 통지하는 통지 의존성 변경 메소드(notify dependency changed method)를 포함할 수 있다. 또한 확장형 캐쉬 의존성 베이스 클래스는 캐쉬 엔트리가 캐쉬로부터 제거될 때 자원들을 릴리즈하는 의존성 배치 방법을 포함할 수 있다.
서버 컴퓨터 시스템은 예를 들어 데이타베이스 또는 웹 서비스로부터 클라이언트 컴퓨터 시스템으로 전달되는 콘텐트를 액세스한다. 서버 컴퓨터 시스템은 커스텀화된 캐쉬 의존성을 액세스된 콘텐트와 연관시키는 캐쉬 엔트리를 생성한다. 서버 컴퓨터 시스템은 캐쉬 엔트리를 캐쉬에 삽입하여 캐쉬 엔트리의 유효성(및 한예로서 또한 액세스된 콘텐트의 내용도) 커스텀화된 의존성에 의존적이되도록 한다. 서버 컴퓨터 시스템은 커스텀화된 캐쉬 의존성의 인스턴스인 의존성을 특정하는 Cache.Insert 방법을 사용하여 캐쉬 엔트리를 캐쉬에 삽입할 수 있다
커스텀화된 캐쉬 의존성에 기초하여 캐쉬 엔트리가 무효화될 수 있다. 서버 컴퓨터 시스템(예를 들어, 웹 페이지 서버를 포함함)은 모니터된 이벤트가 발생했다는 통지를 수신한다. 통지는, 커스텀화된 캐쉬 의존성의 결과로서 실행되고 이 커스텀화된 캐쉬 의존성과 연관된 이벤트의 발생을 모니터하는 의존성 변경 메소드로부터 발생할 수 있다. 통지에 응답하여, 서버 컴퓨터 시스템은 캐쉬 엔트리를 무효화한다(그리고 제거한다). 서버 커퓨터 시스템은 의존성 배치 방법을 호출하여 캐쉬 엔트리가 사용한 임의의 자원들을 릴리즈한다.
본 발명의 추가의 특징들 및 이점들은 후속하는 설명에서 기술될 것이며, 부분적으로는 설명으로부터 명백하거나 또는 발명의 실시에 의해 학습될 수 있을 것 이다. 본 발명의 특징들 및 이점들은 첨부되는 특허청구범위에서 특히 지적되는 도구들 및 조합에 의해 실현되고 획득될 수 있다.
본 발명의 상술한 것과 그외의 이점 및 특징들은 얻을 수 있는 방법을 기술하기 위하여, 간략하게 상술된 본 발명의 더욱 특별한 기재는 첨부되는 도면에 도시된 특정 실시예들을 참고하여 묘사될 것이다. 이 도면들이 본 발명의 단지 일반적인 실시예들을 묘사하는 것이며 따라서 발명의 범주를 제한하는 것으로 고려되지 않아야 한다는 것을 이해해야 하며, 본 발명은 첨부하는 도면을 사용하여 추가의 전문성 및 상세성을 갖고 서술되고 설명될 것이다.
본 발명은 개발자들에 의해 커스텀 캐쉬 의존성이 생성될 수 있도록 캐쉬 의존성 클래스들을 확장하는 시스템, 방법 및 컴퓨터 프로그램 제조물로 확장된다. 본 발명의 실시예들은 캐쉬 의존성을 확장가능한 형태로 확장하여 개발자들이 그들 자신의 커스텀 캐쉬 의존성들을 개발할 수 있도록 한다. 서버 컴퓨터 시스템(예를 들어, 웹 페이지 서버를 포함함)은 확장형 CacheDependency 베이스 클래스를 액세스하며, 이 확장형 CacheDependency 베이스 클래스로부터 다른 커스텀화된 CacheDependency 클래스들을 도출할 수 있다. 커스텀화된 CacheDependency 클래스는 그중에서도 특히 확장형 CacheDependency 베이스 클래스의 캐쉬 관리 특징들을 사용할 수 있다. 확장형 CacheDependency 베이스 클래스로부터 도출하는 커스텀화된 CacheDependency 클래스를 생성함으로써, 개발자는 확장형 CacheDependency 베이스 클래스의 유용한 특징들을 사용하기 위해 확장형 CacheDependency 베이스 클 래스가 구현되는 방법에 대한 지식을, 만약 있다면, 조금 필요로 한다. 확장형 CacheDependency 베이스 클래스는 개발자로부터 상세한 구현내용들을 추출한다.
또한, 개발자들은 캐쉬 동기화 및 캐쉬 자원 관리를 처리할 수 있는 확장형 CacheDependency 베이스 클래스의 방법들을 액세스할 수 있다. 추가적으로, 확장형 CacheDependency 베이스 클래스는 역으로 호환가능하여 기존의 API들이 확장형 CacheDependency 베이스 클래스 및 이로부터 도출하는 임의의 클래스들과 이용될 수 있게 된다. 그러한 API의 예는 Cache.Insert, Cache.Add 및 BasePartialCachingControl.Dependency를 포함한다. 또한, 확장형 CacheDependency 베이스 클래스로부터 도출된 커스텀 캐쉬 의존성들의 구현은 개발자들에게, 캐쉬의 모니터링을 시작해야만 하는 때를 신호하는 StartTime 속성을 지정해야만 하는 부담으로부터 덜어준다. 개발자들이 이 속성을 구현하는 것에 자유롭기 때문에, 그것은 요구되지 않는다.
확장형 CacheDependency 베이스 클래스는, 공개적으로 이용가능한 2개의 추가 방법들을 포함하여, 커스텀화된 CacheDependency 클래스들의 개발자들이 확장형 CacheDependency 베이스 클래스의 퍼징 성능을 불러낼 수 있도록 할 수 있다. 첫번째 방법은 NotifyDependencyChanged 방법이다. 이 방법은 확장형 CacheDependency 베이스 클래스로부터 도출된 클래스들에 의해 호출되어 확장형 CacheDependency 클래스에게, 의존하는 항목이 변경되었음을 말해준다. 두번째 새로운 방법은 DependencyDispose 방법이다. 이 방법은 도출된 클래스에 로케이션 클린업 특성을 제공하는 가상의 방법이다. 더욱 특히, 이 방법은, 커스텀화된 CacheDependency가 아니었다면, 일반적으로는 확장형 CacheDependency 베이스 클래스의 배치 방법에 놓여지는 명령어들에 대한 로케이션을 제공한다. 그 결과, 커스텀화된 CacheDependency에 의해 사용된 자원들은 그 자원들에 대한 액세스의 필요성을 갖는 다른 모듈들에 의해 사용되기 위해 릴리즈된다.
NotifyDependencyChanged 방법은 확장형 CacheDependency 베이스 클래스로부터 도출한 커스텀화된 CacheDependency에 의해 호출된다. 따라서 커스텀화된 CacheDependency 클래스는 캐쉬 엔트리가 데이타베이스의 변경, 웹 서비스의 데이타, 또는 임의의 그외의 이유들에 의존적이게 만들 수 있다. 이 방법으로, 캐쉬는 무효의 캐쉬 엔트리 키를 인식하여 캐쉬로부터 그 키(및 대응하는 콘텐트)를 제거할 수 있다.
하나의 예시적 예에서, 개발자는 SQL 데이타베이스를 폴링하기 위해 확장형 CacheDependency 베이스 클래스로부터 도출한 커스텀 클래스 "SqlCacheDependency"를 생성하여, 데이타베이스에 변경들이 행해졌는지의 여부를 결정한다. SqlCacheDependency는, 프로그래밍 프레임워크 내에 존재하는 확장형 CacheDependency 베이스 클래스로부터 도출된다. 그러므로, 클래스 SqlCacheDependency는 서버 컴퓨터 시스템이 의존하는 캐쉬 엔트리를 퍼지하도록 하기 위해 NotifyDependencyChanged 방법을 호출할 수 있다.
본 발명의 일 실시예를 사용하여, 커스텀화된 CacheDependency의 인스턴스는 이하의 명령어들을 사용하여 구현될 수 있다:
Figure 112004027241149-pat00002
상기 코드의 라인(10)은 엔트리 "Product"가 이미 캐쉬에 존재하는지의 여부를 알아보기 위해 체크한다. 엔트리가 캐쉬에 있지 않으면, "if" 문의 기능들이 수행된다. 라인(20)은 검색되어질 콘텐트가 있는 데이타베이스와의 접속을 수립한다. 라인(30)은 방법 "Product_GetProducts"를 사용하여 데이타베이스로부터 데이타를 검색하고, 그 데이타를 변수 "ds"에 저장한다. 라인(40)에서 변수 "ds"는 "NorthWind" 데이타베이스의 "Products" 테이블 상의 의존성으로서 할당된다. 이러한 의존성은 확장형 CacheDependency 베이스 클래스로부터 도출한 커스텀화된 CacheDependency이다. 그 다음에 라인(50)은 변수 "ds"의 데이타가 키 "Product"에 의해 참조된 캐쉬 엔트리 내로 삽입되게 하여 캐쉬 엔트리가 "dep"에 의존적이게 한다.
이 예에서, SqlCacheDependency는 확장형 CacheDependency 베이스 클래스로부터 도출된 커스텀화된 캐쉬 의존성이다. 확장형 CacheDependency 베이스 클래스로부터 도출하는 클래스가 의존성으로서 이용될 때, 서버 컴퓨터 시스템은 이 클래 스가 확장형 CacheDependency의 인스턴스인 것처럼 이 클래스를 처리한다. 따라서, 서버 컴퓨터 시스템은 확장형 CacheDependency 베이스 클래스에 의해 나타내어진 유사한 동작들에 응답할 수 있으며, 내부적으로는 도출된 클래스는, 데이타베이스 쿼리가 변경될 때 통지받는 것 같은 그 자신의 고유의 기능을 구현할 수 있다. 커스텀화된 CacheDependency, 이 경우에는 SqlCacheDependency는 소망하는 기능을 달성하기 위해 필요한 확장형 CacheDependency 베이스 클래스의 임의의 방법들에 우선한다. 이 예에서, SqlCacheDependency가 데이타베이스 쿼리 변경을 통지받는 경우, 그것은 서버 컴퓨터 시스템이 키 "Product"에 의해 참조된 캐쉬 엔트리를 제거하게 만드는 기본적인 Notify.DependencyChanged 방법을 호출할 것이다.
이 예가 데이타베이스 변경 의존성에 대해 서술되었지만, 확장형 CacheDependency 베이스 클래스의 확장성은 웹 개발자에 의해 고안될 수 있는 가상적인 임의의 캐쉬 의존성을 생성할 수 있게 한다는 점을 기억하는 것이 중요하다. 확장가능한 모델을 이용하여, 웹 개발자는 2개 이상의 의존성들에 기초하는 집합 의존성들을 포함하는 임의의 종류의 커스텀 의존성을 구축할 수 있다. 예를 들면, 캐쉬 엔트리는 파일 및 SQL 테이블 양측에 의존적일 수 있다. 이하의 명령어들은 집합 의존성의 구현을 보여준다.
Figure 112004027241149-pat00003
이 코드는 라인(120)을 제외하면 위에서 분류된 라인들(10-50)의 코드와 유사하다. 집합 캐쉬 의존성은 AggregateCacheDependency라고 명명된 CacheDependency의 도출된 클래스에 의해 구현된다. 이것은 캐쉬 내의 엔트리들을 파일(sales.xml), 및 확장형 CacheDependency 베이스 클래스로부터 도출한 커스텀화된 SqlCacheDependency 양측 모두에 의존적이게 만드는데 이용될 수 있다. 확장형 CacheDependency 베이스 클래스로부터 도출된 클래스들은 또한 추가의 커스텀화된 기능을 제공할 수 있다. 즉, 도출된 클래스는 커스텀화된 기능을 구현하기 위해 이용된 임의의 이벤트들, 방법들 및 속성들을 처리하기 위해 개발될 수 있다. 예를 들면, 도출된 클래스는 시작-시간(예를 들어, CacheDependency가 변경에 대한 모니터링을 시작해야만 하는 시간을 지정함), 의존성의 집합을 지원하는 능력, 콜백 메카니즘(callback mechanisms)에 대한 지원 등으로 개발될 수 있다. 따라서, 개발자는 확장형 CacheDependency 베이스 클래스에 고유한 이벤트들, 방법들 및 속성들에 한정되지 않는다.
이제 도 1을 참조하면, 본 발명의 양상들이 구현될 수 있는 적절한 환경이 도시되어 있다. 도 1은 대응하는 링크들(121 및 122) 각각에 의해 네트워크에 접속된 서버(100) 및 클라이언트(102)를 도시한다. 서버(100) 및 클라이언트(102)는 HTTP를 포함하는 다양한 프로토콜을 사용하여 네트워크(104)를 통해 통신할 수 있다. 서버(100)는 ASP.NET 서버이어서, 그 서버가 동적인 콘텐트를 동적인 웹 페이지의 형태로 클라이언트(102)에게 전달할 수 있다. 서버는 확장형 CacheDependency 클래스(106) 및 커스텀화된 CacheDependency(114)를 포함하는 다양한 클래스들 및 모듈들을 포함한다. 서버(100)는 또한 서버(100)의 물리적 메모리 또는 임의의 다른 편리한 위치에 놓여질 수 있는 캐쉬(110)를 포함한다.
서버(100)는 링크(123)에 의해 데이타베이스(112)에 연결된다. 데이타베이스(112)는 예를들어 SQL 데이타베이스 또는 오라클(Oracle) 데이타베이스 같은 임의의 적절한 데이타베이스일 수 있다. 본 발명의 다른 실시예들에서는, 데이타베이스(112)는 XML 서비스 또는 데이타의 임의의 다른 소스를 나타낼 수 있다.
예시적으로, 클라이언트(102)는 서버(100)로부터 일정한 콘텐트를 요청한다. 예를 들면, 클라이언트(102)는 서버(100)로부터 웹 페이지를 요청하는 URL을 액세스할 수 있다. 서버(100)는 캐쉬(110)를 체크하여 요청된 콘텐트(예를 들어, 웹 페이지 내의 데이타)가 캐쉬(110) 내에 있는지의 여부를 결정한다. 콘텐트가 캐쉬(110)에 있지 않으면, 데이타베이스 인터페이스 모듈(108)은 데이타베이스(112)로부터 콘텐트를 요청할 수 있다. 적당한 때에, 예를 들어 콘텐트(132)와 같은 콘텐트가 검색되어 데이타베이스 인터페이스 모듈(108)로 되돌아간 다.
대안으로, 요청된 콘텐트는 어떤 계산된 값, 또는 데이타베이스(112)와 같은 어떤 데이타베이스로부터 검색된 콘텐트의 어떤 조작일 수 있다. 데이타베이스 인터페이스 모듈(108)은 적절한 때에 콘텐트를 계산하거나 또는 조작할 수 있다. 콘텐트는 그 다음에 클라이언트(102)에게, 예를 들어 하나 이상의 HTTP 메시지로 전송된다. 또한 콘텐트는 Cache.Insert 방법을 사용하여 캐쉬(110)에 추가될 수 있다. Cache.Insert 방법은, 확장형 CacheDependency 베이스 클래스(106)로부터 도출한 커스텀화된 CacheDependency 클래스(114)에 의해 정의된 커스텀 의존성을 지정한다.
콘텐트가 캐쉬(110) 내에 남아 있는 동안에, 그것은 콘텐트를 요청하는 임의의 클라이언트에게 더욱 효과적으로 전달될 수 있다. 커스텀화된 CacheDependency 클래스(114)에 의해 NotifyDependencyChanged 방법등의 방법이 불러질 때까지, 콘텐트는 캐쉬(110)에 남아 있는다. 콘텐트는 NotifyDependencyChanged 방법의 호출에 따라 캐쉬로부터 퍼지된다. 클라이언트에 의한 콘텐트에 대한 뒤따르는 요청들은 그 콘텐트가 데이타베이스(112)로부터 재페치(re-fetch)되거나 및/또는 데이타베이스 인터페이스 모듈(108)에 의해 재계산되는 것을 요구한다.
커스텀화된 CacheDependency 클래스(114)는 데이타베이스(112)에 변경이 있는 경우 캐쉬가 퍼지되게 한다. 이 예에서, 데이타베이스(112)로부터 데이타를 페치하는 것은 자원 집약적일 수 있으며, 다른 한편으로 변경에 대해 데이타베이스(112)를 폴링하는 것은 자원을 덜 사용한다. 데이타베이스(112)는 데 이타베이스(112)에 정보를 저장하는, 데이타베이스 테이블(116) 등의 데이타베이스 테이블을 포함할 수 있다. 다른 데이타베이스 테이블(117)은 데이타베이스 테이블(116) 내의 정보에 변경이 행해졌는지를 나타내는 플래그 엔트리(118)를 더 포함할 수 있다. 데이타베이스 테이블(117)은 커스텀 의존성들을 갖는 데이타베이스의 다른 테이블들에 대한 플래그들을 포함할 수 있다. 일 실시예에 있어서, 플래그 엔트리(118)는 증가적이어서 데이타베이스 테이블(116)의 각각의 변경은 플래그 엔트리(118)가 그 값을 점진적으로 증가시키도록 할 수 있다. 커스텀화된 CacheDependency(114)는, 플래그 엔트리(118)의 증가가 검출될 때 캐쉬 엔트리들을 제거하도록 설계될 수 있다.
이제 도 2를 참조하면, 의존성 엔트리를 삽입하는 방법을 예시하는 흐름도가 도시되어 있다. 도 2의 방법은 확장형 CacheDependency 베이스 클래스를 액세스하는 단계(act)(단계 202)를 포함한다. 단계 202는 확장형 CacheDependency 베이스 클래스를 액세스하는 서버 컴퓨터 시스템을 포함할 수 있다. 예를 들면, 서버(100)는 확장형 CacheDependency 클래스(106)를 액세스할 수 있다. 서버(100)는 웹 페이지 개발자들, 또는 다른 소프트웨어 개발자에 의해서, 또는 일부 프로그램 모듈의 부분으로써 개발된 명령어들을 실행시킨 결과로서 CacheDependency 클래스(106)를 액세스할 수 있다.
도 2의 방법은 확장형 CacheDependency 베이스 클래스로부터 커스텀화된 CacheDependency 클래스를 도출하는 것(단계 204)을 포함한다. 단계 204는 확장형 CacheDependency 베이스 클래스로부터 커스텀화된 CacheDependency 클래스를 도출 하는 서버 컴퓨터 시스템을 포함할 수 있다. 예를 들면, 서버(100)는 확장형 CacheDependency 클래스(106)로부터 커스텀화된 CacheDependency(114)를 도출할 수 있다. 서버(100)는 웹 페이지 개발자 또는 소프트웨어 개발자에 의해, 또는 일부 프로그램 모듈의 부분으로서 개발된 명령어들을 실행한 결과로써 커스텀화된 캐쉬 의존성(114)을 도출하여 커스텀화된 CacheDependency를 생성할 수 있다. 서버(100)는 또한 다수의 소스들로부터 커스텀화된 캐쉬 의존성(114)을 도출할 수 있으며, 이 다수의 소스들은, 조건들이 변할 때마다 이벤트를 트리거하는, 온도계 같이 컴퓨터에 접속된 외부 센서; 게임의 스코어가 변할때마다 변경을 트리거하는 스포츠 스코어보드 프로그램; 네트워크 구성이 변할 때마다(예를 들어 네트워크에 추가되거나 또는 네트워크로부터 제거되는 컴퓨터) 이벤트를 트리거하는 네트워크 관리 프로그램; 및 디렉토리가 변할 때마다(예를 들어 추가되거나 제거되는 개인) 이벤트를 트리거하는 디렉토리 프로그램을 포함하며 이에 제한되는 것은 아니다.
도 2의 방법은 콘텐트를 액세스하는 것을 포함한다(단계 206). 단계 206은 클라이언트 컴퓨터 시스템으로 전달하기 위해 웹 페이지에 포함되는 콘텐트를 액세스하는 서버 컴퓨터 시스템을 포함할 수 있다. 예를 들면, 서버(100)는 클라이언트(102)에게 전달하기 위해 웹 페이지에 포함되는 콘텐트를 액세스할 수 있다. 콘텐트를 액세스하는 것은 콘텐트를 생성하거나 조작하는 것을 포함할 수 있다. 콘텐트는 다양한 상이한 위치들, 예를 들어 데이타베이스 및 웹 서비스들로부터 액세스될 수 있다. 예를 들면, 서버는 데이타베이스(112)에 저장된 데이타를 액세스할 수 있다. 데이타베이스 인터페이스 모듈(108) 또는 그외의 적절한 모듈들이 웹 페 이지에 포함하기 위한 데이타를 적절하게 포맷할 수 있다.
도 2의 방법은 커스텀화된 CacheDependency와 연관된 캐쉬된 엔트리를 생성하는 단계를 포함한다(단계 208). 단계 208은 커스텀화된 CacheDependency와 연관된 캐쉬 엔트리를 생성하는 서버 컴퓨터 시스템을 포함할 수 있다. 예를 들면, 서버(100)는 커스텀화된 캐쉬 의존성(114)과 연관된 캐쉬 엔트리를 생성할 수 있다. 캐쉬 엔트리는 서버(100)에 의해 만들어진 가변하는 정의문에 의해 일 실시예에 생성된다(예를 들어, 상술된 명령어들 중 라인(50)과 유사함).
도 2의 방법은 캐쉬 엔트리를 캐쉬에 삽입하는 단계를 포함한다(단계 210). 단계 210은 서버 컴퓨터 시스템에서 캐쉬된 엔트리를 캐쉬 로케이션으로 삽입하는 서버 컴퓨터 시스템을 포함할 수 있다. 예를 들면, 서버(100)는 캐쉬 엔트리를 캐쉬(110)로 삽입할 수 있다. 캐쉬된 엔트리를 캐쉬에 삽입하여, 캐쉬된 엔트리(및 한예로서 또한 캐쉬된 콘텐트도)의 유효성이 커스텀화된 의존성에 의존하도록 할 수 있다. 예를 들면, 서버(100)는 커스텀화된 캐쉬 의존성(114)으로부터 발생된 의존성에 의존하는 캐쉬(110)로 캐쉬 엔트리를 삽입할 수 있다
이제 도 3을 참조하면, 커스텀화된 CacheDependency를 이용하는 캐쉬 엔트리를 무효화하는 방법이 도시된다. 도 3의 방법은 커스텀화된 캐쉬 의존성의 인스턴스에 의해 설정된 커스텀 의존성 조건들을 모니터하는 단계(단계 302)를 포함한다. 단계 302는 서버 컴퓨터 시스템에서 구현된 커스텀화된 CacheDependency 클래스의 인스턴스에 의해 설정된 커스텀 의존성 조건들을 모니터하는 서버 컴퓨터 시스템을 포함할 수 있다. 예를 들면, 서버(100)는 커스텀화된 CacheDependency 클래스(114)의 인스턴스에 의해 설정된 커스텀 의존성 조건들을 모니터할 수 있다. 커스텀화된 의존성 조건은 예를 들어, 데이타베이스의 콘텐트의 변경 또는 웹 서비스에 의해 제공된 콘텐트의 변경과 같은 이벤트의 발생일 수 있다. 예를 들면, 서버(100)는 데이타베이스 테이블(116)의 콘텐트의 변경에 대한 플래그 엔트리(118)를 모니터할 수 있다. 커스텀화된 CacheDependency 클래스(114)가 집합 의존성과 연관되는 경우, 복수의 커스텀 의존성 조건들이 모니터될 수 있다.
도 3의 방법은 커스텀 의존성 조건이 만족되었는지의 여부를 결정하는 단계(단계 304)를 포함한다. 단계 304는 커스텀화된 캐쉬 의존성과 연관된 커스텀 의존성 조건이 만족되었는지의 여부를 결정하는 서버 컴퓨터 시스템을 포함할 수 있다. 예를 들면, 서버(100)는 커스텀화된 CacheDependency 클래스(114)와 연관된 커스텀 의존성 조건이 만족되었는지의 여부를 결정할 수 있다. 커스텀화된 CacheDependency 클래스(114)가 집합 의존성과 연관된 경우에는, 서버(100)는 복수의 커스텀 의존성 조건들 중의 각각의 커스텀 의존성 조건이 만족되었는지의 여부를 결정할 수 있다.
일부 실시예들에 있어서, 서버(100)는 저장된 플래그 엔트리를 현재의 플래그 엔트리와 비교함으로써 커스텀 의존성 조건이 만족되었는지의 여부를 결정한다. 예를 들면, 서버(100)는 플래그 엔트리(118)에 대해 이전에 검색되어 저장된 값을 플래그 엔트리(118)에 대한 현재의 값과 비교할 수 있다. 플래그 엔트리(118)가 증분되는 경우, 커스텀화된 CacheDependency 클래스(114)는 데이타베이스 테이블(117)의 현재의 플래그 엔트리(118)를 얼마간 이전 시간에 데이타베이스 테 이블(117)에 존재했던 플래그 엔트리와 비교할 수 있다. 테이블에 현재 있는 플래그 엔트리(118)가 얼마간 이전 시간에 데이타베이스 테이블(117)에 존재했던 플래그 엔트리보다 크다면, 커스텀 의존성 조건(데이타베이스 테이블(116)의 콘텐트의 변화)이 만족된다.
커스텀 의존성 조건이 만족되지 않으면(단계 304에서 아니오(NO)이면), 서버(100)는 커스텀 의존성 조건들을 다시 모니터할 수 있다. 커스텀 의존성 조건 또는 조건들이 만족될 때까지, 예를 들어 모니터된 이벤트가 발생할 때까지(단계 304에서 예(YES)), 커스텀 의존성 조건을 모니터하는 것은 특정 간격에서 반복될 수 있다(예를 들러, 매 5초).
도 3의 방법은 커스텀 의존성 조건들이 만족되었는지를 나타내는 단계를 포함한다(단계 306). 단계 306은 서버 컴퓨터 시스템에게 커스텀 의존성 조건들을 만족했음을 나타내는 NotifyDependencyChanged 방법을 포함할 수 있다. 예를 들면, 커스텀화된 CacheDependency 클래스(114)에 대한 NotifyDependencyChanged 방법은 서버(100)에게 데이타베이스 테이블(116)의 콘텐트가 변경된 때를 통지할 수 있다. 커스텀 의존성 조건을 만족했다는 통지는 서버(100)에게 캐쉬 엔트리가 퍼지되었음을 나타낼 수 있다.
도 3의 방법은 캐쉬를 퍼지하는 것을 포함한다(단계 308). 단계 308은 서버 컴퓨터 시스템에서 캐쉬 엔트리를 퍼지하는 서버 컴퓨터 시스템을 포함할 수 있다. 예를 들면, 서버(100)는 캐쉬(110)로부터 캐쉬 엔트리를 퍼지할 수 잇다. 캐쉬된 엔트리는, 커스텀화된 캐쉬 의존성과 연관된 커스텀 의존성 조건들을 만족했다는 통지를 수신하는 것에 응답하여 퍼지될 수 있다. 예를 들면, 서버(100)는 플래그 엔트리(118)가 증분되었다는 통지의 수신에 응답하여 데이타 테이블(116)에 의존하는 캐쉬된 엔트리를 퍼지할 수 있다. 캐쉬된 엔트리가 퍼지된 경우, 컴퓨터 시스템(100)은 캐쉬 엔트리를 유지하기 위해 소비되고 있는 임의의 자원들(예를 들어, 시스템 메모리)을 릴리즈할 수 있다. 예를 들면, 서버 컴퓨터 시스템(100)은 커스텀화된 CacheDependency 클래스(114)와 연관된 DependencyDispose 방법을 불러내어 데이타베이스 테이블(117)로부터 콘텐트를 저장했던 캐쉬 엔트리에 대한 자원들을 릴리즈할 수 있다.
본 발명의 실시예들은 이하에서 더욱 상세하게 설명되어질 다양한 컴퓨터 하드웨어를 포함하는 특수 목적 또는 범용 컴퓨터를 포함할 수 있다. 본 발명의 범주 내의 실시예들은 또한 컴퓨터 실행가능한 명령어들 또는 데이타 구조들을 운반하거나 이들이 저장되어 있는 컴퓨터 판독가능한 매체를 포함한다. 그러한 컴퓨터 판독가능한 매체는 범용 또는 특수 목적의 컴퓨터에 의해 액세스될 수 이는 임의의 이용가능한 매체일 수 있다. 제한이 아닌 예시로서, 그러한 컴퓨터 판독가능한 매체는 RAM, ROM, EEPROM, CD-ROM 또는 그외의 광 디스크 스토리지, 자기 디스크 스토리지 또는 그외의 자기 스토리지 장치들, 또는 소망하는 프로그램 코드 수단을 컴퓨터 실행가능한 명령어들 또는 데이타 구조들의 형태로 수송 또는 저장하는데 이용될 수 있으며 범용 또는 특수 목적의 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체들을 포함할 수 있다. 네트워크 또는 다른 통신 커넥션(배선연결, 무선, 또는 배선연결되거나 또는 무선의 조합)을 통하여 정보가 컴퓨터로 전송되거나 또 는 제공될 때, 컴퓨터는 커넥션을 컴퓨터 판독가능한 매체로서 적절히 본다, 따라서, 이러한 임의의 커넥션은 컴퓨터 판독가능한 매체로 적절하게 칭해진다. 이들의 조합은 또한 컴퓨터 판독가능한 매체의 범주 내에 포함되어야 한다. 컴퓨터 실행가능한 명령어들은, 예를 들면 범용의 컴퓨터, 특수 목적의 컴퓨터, 또는 특수 목적의 프로세싱 장치가 임의의 기능 또는 기능들의 그룹을 수행하게 하는 명령어들 및 데이타를 포함한다.
도 4 및 이하의 설명은 본 발명이 구현될 수 있는 적절한 컴퓨팅 환경의 간략하고, 일반적인 설명을 제공하는 것을 의도한다. 비록 요구되지는 않지만, 본 발명은, 네트워크 환경의 컴퓨터에 의해 실행되고 있는 예를 들어 프로그램 모듈과 같은 컴퓨터 실행가능한 명령어들의 일반적인 맥락에서 서술될 것이다. 일반적으로, 프로그램 모듈은 루틴, 프로그램, 오브젝트, 컴포넌트, 데이타 구조 등을 포함하며 특정 태스크를 수행하거나 특정한 추상적 데이타 타입을 구현한다. 데이타 구조 및 프로그램 모듈과 연관된 컴퓨터 실행가능한 명령어들은 여기에 개시된 방법들의 단계들을 실행하기 위한 프로그램 코드 수단의 예를 나타낸다. 그러한 실행가능한 명령어들 또는 연관된 데이타 구조들의 특정 시퀀스는, 이들 단계들에서 서술된 기능들을 구현하기 위한 대응하는 단계들(acts)의 예를 나타낸다.
당업자들은, 퍼스널 컴퓨터, 핸드 헬드(hand-held) 디바이스, 멀티-프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능한 소비재 전자기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다수의 유형의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경들에서 실시될 수 있음을 이해할 것이다. 또한 본 발명은 통신 네트워크를 통해 링크된(배선연결된 링크, 무선 링크 중의 하나에 의해, 또는 배선연결되거나 또는 무선링크들의 결합에 의해) 로컬 또는 원격 프로세싱 장치들에 의해 태스크들이 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에 있어서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 장치들 모두에 배치될 수 있다.
도 4를 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은, 종래의 컴퓨터(420)의 형태인 범용의 컴퓨팅 디바이스를 포함하며, 이것은 프로세싱 유닛(421), 시스템 메모리(422), 및 시스템 메모리(422)를 포함하는 다양한 시스템 컴포넌트들을 프로세싱 유닛(421)에 결합시키는 시스템 버스(423)를 포함한다. 시스템 버스(423)는 메모리 버스 또는 메모리 제어기, 주변장치 버스, 및 다양한 버스 아키텍처들 중의 임의의 것을 사용하는 로컬 버스를 포함하는 버스 구조의 임의의 버스 타입일 수 있다. 시스템 메모리(424)는 ROM(read only memory)(424) 및 RAM(random access memory)(425)을 포함한다. 예를 들어 기동 중에 컴퓨터(420) 내의 소자들 사이에서 정보를 전송하는 것을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템(BIOS)(426)이 ROM(424)에 저장되어 있을 수 있다.
컴퓨터(420)는 또한 자기 하드 디스크(439)로부터 판독하고 자기 하드 디스크(439)에 기입하는 자기 하드 디스크 드라이브(427), 분리가능한 자기 디스크(429)로부터 판독하거나 분리가능한 자기 디스크(429)에 기입하는 자기 디스크 드라이브(428), 및 CD-ROM 또는 기타 광학 매체 등의 분리형의 광 디스크(431)로부터 판독하거나 그 광 디스크에 기록하는 광 디스크 드라이브(430)가 도시되어 있다. 자기 하드 디스크 드라이브(427), 자기 디스크 드라이브(428), 및 광 디스크 드라이브(430)는 각각 하드 디스크 드라이브 인터페이스(432), 자기 디스크 드라이브 인터페이스(433), 및 광 디스크 드라이브 인터페이스(434)에 의해 시스템 버스(423)에 접속된다. 드라이브들 및 그들의 관련된 컴퓨터 판독가능한 매체는 컴퓨터 실행가능한 명령어들, 데이타 구조들, 프로그램 모듈들 및 그외의 컴퓨터(420)용 데이타들의 불휘발성 스토리지를 제공한다. 비록 여기에 기술된 예시의 환경이 자기 하드 디스크(439), 분리가능한 자기 디스크(429), 및 분리가능한 광 디스크(431)를 이용하고 있지만, 데이타를 저장하기 위한 다른 유형의 컴퓨터 판독가능한 매체들이 사용될 수도 있으며, 이들은 자기 카세트, 플래시 메모리 카드, DVD(digital versatile disks), 베르노울리 카트리지(Bernoulli cartridges), RAM, ROM 등을 포함한다.
하나 이상의 프로그램 모듈들을 포함하는 프로그램 코드 수단은 하드 디스크(439), 자기 디스크(429), 및 광 디스크(431), ROM(424) 또는 RAM(425)에 저장될 수 있으며, 오퍼레이팅 시스템(435), 하나 이상의 어플리케이션 프로그램(436), 다른 프로그램 모듈(437), 및 프로그램 데이타(438)를 포함한다. 사용자는 키보드(440), 포인팅 장치(442), 또는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등과 같은 그외의 입력 장치들(도시되지 않음)을 통해 커맨드 및 정보를 입력할 수 있다. 이들 및 그외의 입력 장치들은 종종 시스템 버스(423)에 결합된 시리얼 포트 인터페이스(446) 를 통해 프로세싱 유닛(421)에 접속된다. 대안으로, 입력 장치는 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB) 와 같은 그외의 인터페이스들에 의해 접속될 수 있다. 모니터(447) 또는 다른 유형의 디스플레이 장치는 또한 비디오 어댑터(448) 등의 인터페이스를 통해 시스템 버스(423)에 접속된다. 모니터외에도, 퍼스널 컴퓨터는 통상적으로 스피커 및 프린터 등의 기타 주변 출력 장치(도시되지 않음)를 포함한다.
컴퓨터 시스템(420)은 예를 들어 사무실 광역 또는 기업 광역의 컴퓨터 네트워크, 인트라넷, 및/또는 인터넷과 같은 네트워크들에 접속가능하다. 컴퓨터 시스템(420)은 예를 들어, 원격 컴퓨터 시스템들, 원격 어플리케이션들, 및/또는 이러한 네트워크를 통한 원격 데이타베이스와 같은 외부 소스들과 데이타를 교환할 수 있다.
컴퓨터 시스템(420)은, 네트워크 인터페이스(453)를 포함하며, 이 네트워크 인터페이스(453)를 통해 컴퓨터 시스템(420)은 외부 소스로부터 데이타를 수신하고 및/또는 외부 소스로 데이타를 전송한다. 도 4에 도시된 바와 같이, 네트워크 인터페이스(453)는 링크(451)를 통해 원격 컴퓨터 시스템(483)과의 데이타의 교환을 용이하게 한다. 링크(451)는 네트워크의 일부를 나타내고, 원격 컴퓨터 시스템(483)은 네트워크의 노드를 나타낸다. 예를 들면, 원격 컴퓨터 시스템(483)은 컴퓨터 시스템(420)에서 구축되는 웹 페이지를 위한 콘텐트를 제공하는 데이타베이스를 유지할 수 있다. 한편, 컴퓨터 시스템(483)은 컴퓨터 시스템(420)에서 보유되었던 데이타베이스로부터 콘텐트를 요청했던 서버 컴퓨터일 수 있다.
마찬가지로, 컴퓨터 시스템(420)은 시리얼 포트 인터페이스(446)를 포함하며, 이 시리얼 포트 인터페이스를 통해 컴퓨터 시스템(420)은 외부 소스로부터 데 이타를 수신하고 및/또는 외부 소스로 데이타를 전송한다. 시리얼 포트 인터페이스(446)는 모뎀(454)에 연결되며, 이것을 통하여 컴퓨터 시스템(420)은 외부 소스들로부터 데이타를 수신하고 외부 소스들로 데이타를 전송한다. 대안으로, 모뎀(454)은 적절한 인터페이스를 통해 컴퓨터 시스템(420)에 접속되는 DOCSIS(Data Over Cable Service Interface Specification) 모뎀 또는 DSL(digital subscriber lines) 모뎀일 수 있다. 그러나, 도 4에 도시된 바와 같이, 시리얼 포트 인터페이스(446) 및 모뎀(454)은 링크(452)를 통해 원격 컴퓨터 시스템(493)과의 데이타의 교환을 용이하게 한다. 링크(452)는 네트워크의 일부를 나타내고, 원격 컴퓨터 시스템(493)은 네트워크의 노드를 나타낸다. 예를 들면, 원격 컴퓨터 시스템(493)은 컴퓨터 시스템(420)으로부터 웹 페이지를 요청하는 클라이언트 컴퓨터 시스템일 수 있다. 한편, 컴퓨터 시스템(493)은 컴퓨터 시스템(420)으로 웹 페이지를 제공하는 서버 컴퓨터 시스템일 수 있다.
본 발명은, 본 발명의 사상 또는 본질적인 특징들로부터 벗어나지 않고 다른 특정 형태로 구현될 수 있다. 서술된 실시예들은 모든 사항들에 있어서 한정적으로서가 아니라 단지 예시로서 고려될 수 있다. 따라서, 본 발명의 범주는 상술한 설명에 의해서라기 보다는 첨부된 특허청구범위에 의해 나타내어진다. 특허청구범위의 의미 및 등가물의 범주 내에 포함되는 모든 변경들은 그들의 범주 내에 포함될 수 있다.
본 발명의 실시예들은 캐쉬 의존성을 확장가능한 형태로 확장하여 개발자들 이 그들 자신의 커스텀 캐쉬 의존성들을 개발할 수 있도록 한다.

Claims (30)

  1. 요청하는 클라이언트 컴퓨터 시스템들에게 웹 페이지들(Web pages)을 제공하는 서버 컴퓨터 시스템에서, 상기 웹 페이지들은 상기 서버 컴퓨터 시스템에 대해 외부에 있는 위치들로부터의 콘텐트를 잠재적으로 포함하고, 상기 서버 컴퓨터 시스템은 상기 서버 컴퓨터 시스템의 외부에 있는 위치들로부터 이전에 수신된 캐쉬된 콘텐트의 일부를 저장하는 캐쉬(cache)를 포함하며, 캐쉬 엔트리의 유효성(validity)을 판정하기 위한 방법 - 상기 유효성은 사용자 커스텀화된 의존성(user-customized dependency)에 의존적임 - 으로서,
    커스텀화된 캐쉬 의존성들이 도출될 수 있는 확장형 캐쉬 의존성 베이스 클래스(extensible cache dependency base class)를 액세스하는 단계 - 상기 확장형 캐쉬 의존성 베이스 클래스는, 상기 커스텀화된 캐쉬 의존성들에 대응하는 하나 이상의 캐쉬 엔트리의 상기 유효성을 판정하기 위해 상기 확장형 캐쉬 의존성 베이스 클래스로부터 도출된 커스텀화된 캐쉬 의존성들에 의해 사용가능한 복수의 계승가능한(inheritable) 캐시 관리 메소드를 포함함 - ;
    상기 확장형 캐쉬 의존성 베이스 클래스로부터 커스텀화된 캐쉬 의존성 클래스를 도출하는 단계 - 상기 커스텀화된 캐쉬 의존성 클래스는 상기 확장형 캐쉬 의존성 베이스 클래스로부터 상기 복수의 계승가능한 캐쉬 관리 메소드를 계승하고, 상기 커스텀화된 캐쉬 의존성 베이스 클래스는 또한 상기 확장형 캐쉬 의존성 베이스 클래스에 포함된 상기 복수의 계승가능한 캐쉬 관리 메소드를 확장하는 커스텀화된 의존성의 고유한 기능성을 더 구현하도록 구성되고, 상기 고유한 기능성은 상기 커스텀화된 캐쉬 의존성과 연관된 캐쉬 엔트리들의 상기 유효성을 판정하기 위한 사용자 커스텀화된 베이시스를 제공하는 것을 포함함 - ;
    클라이언트 컴퓨터 시스템에 전달되는 캐쉬된 콘텐트의 일부를 액세스하는 단계;
    상기 커스텀화된 의존성을 상기 캐쉬된 콘텐트의 액세스된 일부와 연관시키는 캐쉬 엔트리를 생성하는 단계 - 상기 커스텀화된 의존성은 캐쉬 엔트리 유효성을 판정하기 위한 상기 사용자 커스텀화된 베이시스를 포함함 - ;
    캐쉬 엔트리 유효성을 판정하기 위한 상기 사용자 커스텀화된 베이시스에 따라 상기 캐쉬 엔트리가 유효하다고 판정하는 단계; 및
    상기 클라이언트 컴퓨터 시스템에 전달하기 위해 판정된 유효한 상기 캐쉬 엔트리를 캐쉬에 삽입하는 단계
    를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  2. 제1항에 있어서,
    상기 확장형 캐쉬 의존성 베이스 클래스를 액세스하는 단계는, 통지 의존성 변경 메소드(notify dependency changed method)를 포함하는 캐쉬 의존성 베이스 클래스를 액세스하여, 상기 통지 의존성 변경 메소드를 호출함으로써 상기 캐쉬 의존성 베이스 클래스로부터 도출된 클래스들이 상기 캐쉬 의존성 베이스 클래스의 기능성을 퍼지(purge)하는 것을 구현할 수 있도록 하는 단계를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  3. 제1항에 있어서,
    상기 확장형 캐쉬 의존성 베이스 클래스를 액세스하는 단계는, 의존성 배치 메소드(dependency dispose method)를 포함하는 캐쉬 의존성 베이스 클래스를 액세스하여, 상기 캐쉬 의존성 베이스 클래스로부터 도출된 클래스들이, 상기 의존성 배치 메소드를 호출함으로써 캐쉬 엔트리에 의해 점유된 자원들을 릴리즈(release)할 수 있도록 하는 단계를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  4. 제1항에 있어서,
    상기 확장형 캐쉬 의존성 베이스 클래스로부터 커스텀화된 캐쉬 의존성 클래스를 도출하는 단계는, 캐쉬 엔트리가 데이타베이스 테이블에 의존하도록 구현될 수 있는 커스텀화된 캐쉬 의존성 클래스를 도출하는 단계를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  5. 제1항에 있어서,
    상기 확장형 캐쉬 의존성 베이스 클래스로부터 커스텀화된 캐쉬 의존성 클래스를 도출하는 단계는, 캐쉬 엔트리가 웹 서비스에 의존하도록 구현될 수 있는 커스텀화된 캐쉬 의존성 클래스를 도출하는 단계를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  6. 제1항에 있어서,
    상기 클라이언트 컴퓨터 시스템에 전달되는 콘텐트의 일부를 액세스하는 단계는, 웹 페이지에 포함될 콘텐트의 일부를 액세스하는 단계를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  7. 제1항에 있어서,
    상기 클라이언트 컴퓨터 시스템에 전달되는 콘텐트의 일부를 액세스하는 단계는, 데이타베이스 테이블로부터의 콘텐트의 일부를 액세스하는 단계를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  8. 제1항에 있어서,
    상기 클라이언트 컴퓨터 시스템에 전달되는 콘텐트의 일부를 액세스하는 단계는, 웹 서비스로부터의 콘텐트의 일부를 액세스하는 단계를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  9. 제1항에 있어서,
    상기 커스텀화된 의존성을 상기 캐쉬된 콘텐트의 액세스된 일부와 연관시키는 캐쉬 엔트리를 생성하는 단계는, 데이타베이스 테이블로부터의 콘텐트가 상기 데이타베이스 테이블에 의존적이게 하는 캐쉬 엔트리를 생성하는 단계를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  10. 제1항에 있어서,
    상기 커스텀화된 의존성을 상기 캐쉬된 콘텐트의 액세스된 일부와 연관시키는 캐쉬 엔트리를 생성하는 단계는, 데이타베이스 테이블로부터의 콘텐트가 집합 의존성(aggregate dependency)에 의존하게 하는 캐쉬 엔트리를 생성하는 단계를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  11. 제1항에 있어서,
    상기 커스텀화된 의존성을 상기 캐쉬된 콘텐트의 액세스된 일부와 연관시키는 캐쉬 엔트리를 생성하는 단계는, 웹 서비스로부터의 콘텐트가 상기 웹 서비스에 의존하게 하는 캐쉬 엔트리를 생성하는 단계를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  12. 제1항에 있어서,
    상기 캐쉬 엔트리의 유효성이 상기 커스텀화된 의존성에 의존하도록 상기 캐쉬 엔트리를 캐쉬에 삽입하는 단계는, 데이타베이스 테이블에 의존적인 캐쉬 엔트리를 삽입하는 단계를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  13. 제1항에 있어서,
    상기 캐쉬 엔트리의 유효성이 상기 커스텀화된 의존성에 의존하도록 상기 캐쉬 엔트리를 캐쉬에 삽입하는 단계는, 집합 의존성(aggregate dependency)에 의존적인 캐쉬 엔트리를 삽입하는 단계를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  14. 요청하는 클라이언트 컴퓨터 시스템들에게 웹 페이지들을 제공하는 서버 컴퓨터 시스템에서, 상기 웹 페이지들은 상기 서버 컴퓨터 시스템의 외부에 있는 위치들로부터의 콘텐트를 잠재적으로 포함하고, 상기 서버 컴퓨터 시스템은 상기 서버 컴퓨터 시스템의 외부에 있는 위치들로부터 이전에 수신된 캐쉬된 콘텐트의 일부를 저장하는 캐쉬를 포함하며, 무효의 캐쉬 엔트리를 퍼지하는 방법으로서,
    캐쉬 엔트리의 유효성을 판정하기 위한 사용자 커스텀화된 베이시스와 관련된 하나 이상의 커스텀 의존성 조건들을 모니터하는 단계 - 캐쉬 엔트리의 유효성을 판정하기 위한 상기 사용자 커스텀화된 베이시스는 고유 기능성을 구현하기 위해 확장형 캐쉬 의존성 베이스 클래스로부터 계승된 복수의 캐쉬 관리 메소드를 확장하는 커스텀화된 캐쉬 의존성의 인스턴스에 포함되고, 상기 커스텀화된 캐쉬 의존성은 상기 확장형 캐쉬 의존성 베이스 클래스로부터 도출된 커스텀화된 캐쉬 의존성 클래스에 대응하고, 상기 커스텀화된 캐쉬 의존성은 상기 캐쉬 엔트리의 유효성을 판정하기 위한 사용자 커스텀화된 베이시스를 포함함 - ;
    상기 하나 이상의 커스텀 의존성 조건들이 만족되었는지의 여부를 판정하는 단계;
    상기 하나 이상의 커스텀 의존성 조건들이 만족되었다는 표시를 수신하는 단계;
    캐쉬 엔트리 유효성을 판정하기 위한 상기 사용자 커스텀화된 베이시스에 따라 상기 커스텀 의존성 조건들과 연관된 상기 캐쉬 엔트리가 무효하다고 판정하는 단계; 및
    상기 캐쉬 엔트리가 무효하다고 판정하는 것에 응답하여 상기 서버 컴퓨터 시스템에서 상기 캐쉬 엔트리를 퍼지하는 단계
    를 포함하는, 무효의 캐쉬 엔트리 퍼지 방법.
  15. 제14항에 있어서,
    상기 커스텀화된 캐쉬 의존성의 인스턴스와 연관된 하나 이상의 커스텀 의존성 조건들을 모니터하는 단계는, 데이타베이스 테이블 의존성을 모니터하는 단계를 포함하는, 무효의 캐쉬 엔트리 퍼지 방법.
  16. 제14항에 있어서,
    상기 커스텀화된 캐쉬 의존성의 인스턴스와 연관된 하나 이상의 커스텀 의존성 조건들을 모니터하는 단계는, 웹 서비스 의존성을 모니터하는 단계를 포함하는, 무효의 캐쉬 엔트리 퍼지 방법.
  17. 제14항에 있어서,
    상기 커스텀화된 캐쉬 의존성의 인스턴스와 연관된 하나 이상의 커스텀 의존성 조건들을 모니터하는 단계는, 집합 의존성을 모니터하는 단계를 포함하는, 무효의 캐쉬 엔트리 퍼지 방법.
  18. 제14항에 있어서,
    상기 하나 이상의 커스텀 의존성 조건들이 만족되었는지의 여부를 판정하는 단계는, 플래그 엔트리(flag entry)가 증분되었는지 여부를 판정하는 단계를 포함하는, 무효의 캐쉬 엔트리 퍼지 방법.
  19. 제14항에 있어서,
    상기 하나 이상의 커스텀 의존성 조건들이 만족되었는지의 여부를 판정하는 단계는, 집합 의존성과 관련된 의존성 조건이 만족되었는지의 여부를 판정하는 단계를 포함하는, 무효의 캐쉬 엔트리 퍼지 방법.
  20. 제14항에 있어서,
    상기 하나 이상의 커스텀 의존성 조건들이 만족되었는지의 여부를 판정하는 단계는, 커스텀화된 캐쉬 의존성 클래스의 인스턴스에 의해 지정된 일부 이벤트의 발생시 통지 의존성 변경 메소드를 호출하는 단계를 포함하는, 무효의 캐쉬 엔트리 퍼지 방법.
  21. 제14항에 있어서,
    상기 하나 이상의 커스텀 의존성 조건들이 만족되었다는 표시를 수신하는 단계는, 통지 의존성 변경 메소드로부터 상기 하나 이상의 커스텀 의존성 조건들이 만족되었다는 표시를 수신하는 단계를 포함하는, 무효의 캐쉬 엔트리 퍼지 방법.
  22. 요청하는 클라이언트 컴퓨터 시스템들에게 웹 페이지들을 제공하는 서버 컴퓨터 시스템에서 사용하기 위한 하나 이상의 컴퓨터 판독가능 저장 매체로서, 상기 웹 페이지들은 상기 서버 컴퓨터 시스템에 대해 외부에 있는 위치들로부터의 콘텐트를 잠재적으로 포함하고, 상기 서버 컴퓨터 시스템은 상기 서버 컴퓨터 시스템의 외부에 있는 위치들로부터 이전에 수신된 캐쉬된 콘텐트의 일부를 저장하는 캐쉬를 포함하며, 상기 하나 이상의 컴퓨터 판독가능 저장 매체는 캐쉬 엔트리의 유효성 - 상기 유효성은 사용자 커스텀화된 의존성(user-customized dependency)에 의존적임 - 을 판정하기 위한 방법을 구현하는 컴퓨터 실행가능한 명령어를 포함하고, 상기 명령어는, 프로세서에 의해 실행될 때에 상기 서버 컴퓨터 시스템으로 하여금,
    커스텀화된 캐쉬 의존성들이 도출될 수 있는 확장형 캐쉬 의존성 베이스 클래스를 액세스하는 단계 - 상기 확장형 캐쉬 의존성 베이스 클래스는, 상기 커스텀화된 캐쉬 의존성들에 대응하는 하나 이상의 캐쉬 엔트리의 상기 유효성을 판정하기 위해 상기 확장형 캐쉬 의존성 베이스 클래스로부터 도출된 커스텀화된 캐쉬 의존성들에 의해 사용가능한 복수의 계승가능한 캐시 관리 메소드를 포함함 - ;
    상기 확장형 캐쉬 의존성 베이스 클래스로부터 커스텀화된 캐쉬 의존성 클래스를 도출하는 단계 - 상기 커스텀화된 캐쉬 의존성 클래스는 상기 확장형 캐쉬 의존성 베이스 클래스로부터 상기 복수의 계승가능한 캐쉬 관리 메소드를 계승하고, 상기 커스텀화된 캐쉬 의존성 베이스 클래스는 또한 상기 확장형 캐쉬 의존성 베이스 클래스에 포함된 상기 복수의 계승가능한 캐쉬 관리 메소드를 확장하는 커스텀화된 의존성의 고유한 기능성을 더 구현하도록 구성되고, 상기 고유한 기능성은 상기 커스텀화된 캐쉬 의존성과 연관된 캐쉬 엔트리들의 상기 유효성을 판정하기 위한 사용자 커스텀화된 베이시스를 제공하는 것을 포함함 - ;
    클라이언트 컴퓨터 시스템에 전달되는 캐쉬된 콘텐트의 일부를 액세스하는 단계;
    상기 커스텀화된 의존성을 상기 캐쉬된 콘텐트의 액세스된 부분과 연관시키는 캐쉬 엔트리를 생성하는 단계 - 상기 커스텀화된 의존성은 캐쉬 엔트리 유효성을 판정하기 위한 상기 사용자 커스텀화된 베이시스를 포함함 - ;
    캐쉬 엔트리 유효성을 판정하기 위한 상기 사용자 커스텀화된 베이시스에 따라 상기 캐쉬 엔트리가 유효하다고 판정하는 단계; 및
    상기 클라이언트 컴퓨터 시스템에 전달하기 위해 판정된 유효한 상기 캐쉬 엔트리를 캐쉬에 삽입하는 단계
    를 수행하게 하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  23. 요청하는 클라이언트 컴퓨터 시스템들에게 웹 페이지들을 제공하는 서버 컴퓨터 시스템에서 사용하기 위한 하나 이상의 컴퓨터 판독가능 저장 매체로서, 상기 웹 페이지들은 상기 서버 컴퓨터 시스템에 대해 외부에 있는 위치들로부터의 콘텐트를 잠재적으로 포함하고, 상기 서버 컴퓨터 시스템은 상기 서버 컴퓨터 시스템의 외부에 있는 위치들로부터 이전에 수신된 캐쉬된 콘텐트의 일부를 저장하는 캐쉬를 포함하며, 상기 하나 이상의 컴퓨터 판독가능 저장 매체는, 무효한 캐쉬 엔트리를 퍼지하는 방법을 구현하는 컴퓨터 실행가능 명령어를 포함하고, 상기 명령어는, 프로세서에 의해 실행될 때 상기 서버 컴퓨터 시스템으로 하여금,
    캐쉬 엔트리의 유효성을 판정하기 위한 사용자 커스텀화된 베이시스와 관련된 하나 이상의 커스텀 의존성 조건들을 모니터하는 단계 - 캐쉬 엔트리의 유효성을 판정하기 위한 상기 사용자 커스텀화된 베이시스는 고유 기능성을 구현하기 위해 확장형 캐쉬 의존성 베이스 클래스로부터 계승된 복수의 캐쉬 관리 메소드를 확장하는 커스텀화된 캐쉬 의존성의 인스턴스에 포함되고, 상기 커스텀화된 캐쉬 의존성은 상기 확장형 캐쉬 의존성 베이스 클래스로부터 도출된 커스텀화된 캐쉬 의존성 클래스에 대응하고, 상기 커스텀화된 캐쉬 의존성은 상기 캐쉬 엔트리의 유효성을 판정하기 위한 사용자 커스텀화된 베이시스를 포함함 - ;
    상기 하나 이상의 커스텀 의존성 조건들이 만족되었는지의 여부를 결정하는 단계;
    상기 하나 이상의 커스텀 의존성 조건들이 만족되었다는 표시를 수신하는 단계;
    캐쉬 엔트리 유효성을 판정하기 위한 상기 사용자 커스텀화된 베이시스에 따라 상기 커스텀 의존성 조건들과 연관된 상기 캐쉬 엔트리가 무효하다고 판정하는 단계; 및
    상기 캐쉬 엔트리가 무효하다고 판정하는 것에 응답하여 상기 서버 컴퓨터 시스템에서 상기 캐쉬 엔트리를 퍼지하는 단계
    를 수행하게 하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  24. 요청하는 클라이언트 컴퓨터 시스템들에게 웹 페이지들을 제공하는 서버 컴퓨터 시스템에서, 상기 웹 페이지들은 상기 서버 컴퓨터 시스템에 대해 외부에 있는 위치들로부터의 콘텐트를 잠재적으로 포함하고, 상기 서버 컴퓨터 시스템은 상기 서버 컴퓨터 시스템의 외부에 있는 위치들로부터 이전에 수신된 캐쉬된 콘텐트의 일부를 저장하는 캐쉬를 포함하며, 캐쉬 엔트리의 유효성을 판정하기 위한 방법 - 상기 유효성은 사용자 커스텀화된 의존성에 의존적임 - 으로서,
    커스텀화된 캐쉬 의존성들이 도출될 수 있는 확장형 캐쉬 의존성 베이스 클래스를 액세스하는 단계 - 상기 확장형 캐쉬 의존성 베이스 클래스는, 상기 커스텀화된 캐쉬 의존성들에 대응하는 하나 이상의 캐쉬 엔트리의 상기 유효성을 판정하기 위해 상기 확장형 캐쉬 의존성 베이스 클래스로부터 도출된 커스텀화된 캐쉬 의존성들에 의해 사용가능한 복수의 계승가능한 캐시 관리 메소드를 포함함 - ;
    상기 확장형 캐쉬 의존성 베이스 클래스로부터 커스텀화된 캐쉬 의존성 클래스를 도출하는 단계 - 상기 커스텀화된 캐쉬 의존성 클래스는 상기 확장형 캐쉬 의존성 베이스 클래스로부터 상기 복수의 계승가능한 캐쉬 관리 메소드를 계승하고, 상기 커스텀화된 캐쉬 의존성 베이스 클래스는 또한 상기 확장형 캐쉬 의존성 베이스 클래스에 포함된 상기 복수의 계승가능한 캐쉬 관리 메소드를 확장하는 커스텀화된 의존성의 고유한 기능성을 더 구현하도록 구성되고, 상기 고유한 기능성은 상기 커스텀화된 캐쉬 의존성과 연관된 캐쉬 엔트리들의 상기 유효성을 판정하기 위한 사용자 커스텀화된 베이시스를 제공하는 것을 포함하고, 상기 사용자 커스텀화된 베이시스는 상기 캐쉬 엔트리의 유효성이 의존할 수 있는 엘리먼트들의 선택적인 집합(a selectable set of elements)을 포함함 - ;
    클라이언트 컴퓨터 시스템에 전달되는 캐쉬된 콘텐트의 일부를 액세스하는 단계;
    상기 커스텀화된 의존성을 상기 캐쉬된 콘텐트의 액세스된 일부와 연관시키는 캐쉬 엔트리를 생성하는 단계 - 상기 커스텀화된 의존성은 캐쉬 엔트리 유효성을 판정하기 위한 상기 사용자 커스텀화된 베이시스를 포함함 - ;
    캐쉬 엔트리 유효성을 판정하기 위한 상기 사용자 커스텀화된 베이시스에 따라 상기 캐쉬 엔트리가 유효하다고 판정하는 단계; 및
    상기 클라이언트 컴퓨터 시스템에 전달하기 위해 판정된 유효한 상기 캐쉬 엔트리를 캐쉬에 삽입하는 단계
    를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  25. 제24항에 있어서, 상기 캐쉬 엔트리의 유효성이 의존할 수 있는 엘리먼트들의 선택적인 집합은,
    웹 서비스 엘리먼트, 데이터베이스 테이블 엘리먼트, 로컬 파일 변경, 상기 확장형 캐쉬 의존성 베이스 클래스로부터 도출된 의존성, 통지 플래그(notification flag), 및 소프트웨어 애플리케이션 중 하나 이상을 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  26. 제1항에 있어서, 상기 커스텀화된 캐쉬 의존성들의 기능성은 상기 확장형 캐쉬 의존성 베이스 클래스의 임의의 기능성에 우선하는, 캐쉬 엔트리 유효성 판정 방법.
  27. 제1항에 있어서, 상기 커스텀화된 캐쉬 의존성의 기능성은 상기 확장형 캐쉬 의존성 베이스 클래스의 기능성 중 하나 이상의 부분에 선택적으로 우선하는, 캐쉬 엔트리 유효성 판정 방법.
  28. 제1항에 있어서, 상기 커스텀화된 캐쉬 의존성은 파일 및 데이터베이스 테이블 둘 다에 의존적인, 캐쉬 엔트리 유효성 판정 방법.
  29. 제1항에 있어서, 상기 고유한 기능성은 데이터베이스 쿼리가 변경될 때에 통지되는 단계를 포함하는, 캐쉬 엔트리 유효성 판정 방법.
  30. 제1항에 있어서, 상기 커스텀화된 캐쉬 의존성은 다른 의존성에 의존적인, 캐쉬 엔트리 유효성 판정 방법.
KR1020040047214 2003-06-23 2004-06-23 캐쉬 엔트리 유효성 판정 방법, 무효의 캐쉬 엔트리 퍼지 방법, 및 하나 이상의 컴퓨터 판독가능 저장 매체 KR101265805B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/602,122 2003-06-23

Publications (1)

Publication Number Publication Date
KR101265805B1 true KR101265805B1 (ko) 2013-05-23

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5897643A (en) 1995-04-20 1999-04-27 Fuji Xerox Co., Ltd. System for maintaining a record of documents including document copies
US6502093B1 (en) 1999-07-21 2002-12-31 Oracle Corporation Approach for publishing data in a relational database system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5897643A (en) 1995-04-20 1999-04-27 Fuji Xerox Co., Ltd. System for maintaining a record of documents including document copies
US6502093B1 (en) 1999-07-21 2002-12-31 Oracle Corporation Approach for publishing data in a relational database system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문(1999.03)*

Similar Documents

Publication Publication Date Title
JP4629371B2 (ja) キャッシュエントリを無効化する汎用依存関係モデル
JP5172714B2 (ja) Rssデータ処理オブジェクト
EP1492027B1 (en) Registering for and retrieving database table change information that can be used to invalidate cache entries
US8788569B2 (en) Server computer system running versions of an application simultaneously
US6925485B1 (en) Proxy cache preloader
US8065673B2 (en) Update checking and synchronization for link and offline data
US7702800B2 (en) Detecting and handling affinity breaks in web applications
US8984534B2 (en) Interfacing between a receiving component of a server application and a remote application
EP1679602B1 (en) Shared memory based monitoring for application servers
US20020116582A1 (en) Batching of invalidations and new values in a web cache with dynamic content
US20040073630A1 (en) Integrated JSP and command cache for web applications with dynamic content
JP3481054B2 (ja) ゲートウェイ装置、クライアント計算機およびそれらを接続した分散ファイルシステム
US20100325363A1 (en) Hierarchical object caching based on object version
JP2006252539A (ja) システムデータインターフェース、関連アーキテクチャ、印刷システムデータインターフェース、および関連印刷システムアーキテクチャ
WO2007113539A1 (en) Interactive development tool and debugger for web services
US6725265B1 (en) Method and system for caching customized information
US20020116583A1 (en) Automatic invalidation dependency capture in a web cache with dynamic content
US20020111992A1 (en) JSP composition in a cache for web applications with dynamic content
US6823360B2 (en) Cofetching in a command cache
US20020112125A1 (en) Command caching to improve network server performance
US7849472B1 (en) System for instrumenting resources utilizing WS-management resource MBean wrappers for JAXB beans
US20090063614A1 (en) Efficiently Distributing Class Files Over A Network Without Global File System Support
CA2707249C (en) Native interface optimization for read-only arrays
JP5209058B2 (ja) ソフトウェア・コンポーネントを作成するための方法
KR101265805B1 (ko) 캐쉬 엔트리 유효성 판정 방법, 무효의 캐쉬 엔트리 퍼지 방법, 및 하나 이상의 컴퓨터 판독가능 저장 매체