KR101565353B1 - 컨텐츠 요청 기록과 요청 순위를 이용한 컨텐츠 캐싱 방법 및 이를 이용한 http 캐시 서버 - Google Patents

컨텐츠 요청 기록과 요청 순위를 이용한 컨텐츠 캐싱 방법 및 이를 이용한 http 캐시 서버 Download PDF

Info

Publication number
KR101565353B1
KR101565353B1 KR1020130118821A KR20130118821A KR101565353B1 KR 101565353 B1 KR101565353 B1 KR 101565353B1 KR 1020130118821 A KR1020130118821 A KR 1020130118821A KR 20130118821 A KR20130118821 A KR 20130118821A KR 101565353 B1 KR101565353 B1 KR 101565353B1
Authority
KR
South Korea
Prior art keywords
content
cache
request
caching
key
Prior art date
Application number
KR1020130118821A
Other languages
English (en)
Other versions
KR20150040172A (ko
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 주식회사 솔박스
Priority to KR1020130118821A priority Critical patent/KR101565353B1/ko
Publication of KR20150040172A publication Critical patent/KR20150040172A/ko
Application granted granted Critical
Publication of KR101565353B1 publication Critical patent/KR101565353B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

웹 서버와 클라이언트 사이에서 캐시 서버가 컨텐츠를 캐싱하며, 클라이언트로부터 컨텐츠를 요구하는 요청으로부터 획득되는 캐시 키를 이용하여, 캐시 키에 대응하는 컨텐츠가 캐싱 대상인지를 판단한다. 이때, 캐시 키 관련 정보-- 상기 정보는 요청이 이루어진 요청 시간, 요청 건수를 포함함--를 토대로 컨텐츠가 캐싱 대상인지를 판단할 수 있다. 캐싱 대상으로 판단된 경우, 캐시 서버는 컨텐츠를 캐싱하고 클라이언트로 제공한다.

Description

컨텐츠 요청 기록과 요청 순위를 이용한 컨텐츠 캐싱 방법 및 이를 이용한 HTTP 캐시 서버{Method for caching contents based on content request record and request priority and HTTP cache server using the method}
본 발명은 HTTP(Hypertext Transfer Protocol) 캐시 서버와, HTTP 캐시 서버가 컨텐츠를 캐싱(caching)하는 방법에 관한 것이다.
통신 기술의 발달로 네트워크를 통하여 다양한 컨텐츠들이 디지털화되면서 인터넷을 통해 컨텐츠 공유가 이루어지고 있으며, HTTP 프록시(이하 프록시) 서버는 인터넷상에 컨텐츠를 제공하는 장치와 컨텐츠를 수신하는 장치 사이에서 캐시 서버가 데이터를 중계하면서 원활한 서비스가 운영될 수 있도록 서비스를 보조하는 역할을 수행한다.
캐시 서버는 컨텐츠를 수신하는 장치 즉, 클라이언트와 컨텐츠를 제공하는 장치 즉, 웹 서버 사이에서 위치되어, 클라이언트로부터 특정 HTTP 주소에 대해서 데이터요청을 요구를 받으면, 해당 인터넷 주소에 대한 데이터가 캐시서버 저장소에 있으면 클라이언트에 직접 제공하고, 캐시서버 저장소에 없으면 요청된 특정 HTTP 주소의 원본 서버로부터 데이터를 가져와서 클라이언트에 제공한다. 그리고 클라이언트에 제공한 데이터와 데이터에 대응하는 특정 HTTP 주소는 저장소에 저장한다.
상기에서 캐시 서버가 캐시 서버 저장소에 클라이언트로부터 요청받은 데이터가 없어서 원본 서버에서 데이터를 받아와서 클라이언트로 전달하고, 다음번 동일 요청에 대해서 원본 서버로의 요청 없이 응답을 하기 위해 클라이언트에게 전달한 데이터를 캐시서버 저장소에 저장하는 기능을 캐싱(caching)이라고 한다.
이러한 캐싱 기능을 수행하는 서버를 캐시 서버라고 하며, 일반적으로 원본 서버는 대용량의 저장소를 사용하여 서비스에 필요한 모든 컨텐츠를 저장하고 있지만, 캐시 서버는 소용량의 저장소를 사용하고 인기 컨텐츠 위주로 로컬 저장소에 캐싱을 한다.
캐시 서버는 원본 서버보다 적은 공간을 사용하는 것이 일반적이기 때문에 한정된 저장소 공간에 저장된 캐싱 데이터를 효율적으로 관리하기 위하여 다양한 알고리즘을 사용하는데, 일반적으로 사용하는 방법이 LRU(least recently used) 알고리즘이다.
한정된 저장공간을 사용하는 캐시 서버는 저장소가 모두 사용 중일 경우 신규 컨텐츠를 캐싱할 수 있는 공간을 확보하기 위해서 기존 캐싱된 컨텐츠 중에서 하나 이상을 삭제해야 한다. 캐시 서버에서는 삭제할 컨텐츠를 고르는 방법에 LRU 알고리즘을 사용하며, LRU 알고리즘에서는 저장소에 저장된 컨텐츠 중에서 마지막 사용 시간이 가장 오래된 컨텐츠가 삭제 대상으로 선택된다.
LRU 알고리즘을 사용하여 저장소를 관리할 경우, 클라이언트로부터의 반복 요청 가능성이 거의 없는 비인기 컨텐츠의 경우에도 처음 요청될 때에 캐시 서버의 저장소에 저장되고, 가장 높은 우선 순위를 부여받는다, 이후 비인기 컨텐츠는 한번도 재사용이 없는 상태로 유지되면 LRU 알고리즘에서 우선순위는 점점 하강을 하게 되고, 최종적으로는 LRU 알고리즘에서 가장 낮은 순위까지 떨어지면 삭제 대상 컨텐츠로 선정될 수 있다.
이렇게 캐싱 된 후 한번 또는 적은 수의 서비스 제공 후에 삭제 대상으로 선택되어 삭제되는 컨텐츠가 많이 발생하게 되면, 캐시 서버가 일반적으로 캐시 저장소로 사용하는 하드디스크의 운영 부하가 증가된다. 캐시 서버의 저장소 운영 부하 증가는 서비스 속도 저하를 야기하며 한정된 저장공간을 효율적으로 사용할 수 없어 캐시 효율 또한 떨어진다.
도 1은 LRU 알고리즘을 이용한 캐시 서버의 저장소 관리 상태를 나타낸 예시도이다.
예를 들어, 첨부한 도 1에서와 같이, 원본 서버로부터 제공되는 컨텐츠를 캐시 서버를 통하여 클라이언트로 제공되고 캐시 서버의 저장소에 저장(캐싱)된다. 여기서, H로 표시된 부분은 인기 컨텐츠(Hot Content), 즉 사용 빈도가 많은 컨텐츠를 나타낸다.
캐시 서버의 저장소에 3개의 컨넨츠만 저장(캐싱)이 가능한 경우, LRU 알고리즘에 따라 우선 순위가 높은 H1, H2는 계속 사용되지만 나머지 비인기 콘텐츠(Cold Content)인 C1~C8은 캐시 서버의 저장소에 저장/삭제되는 과정을 반복적으로 거치게 되면서 캐시 서버의 저장소 운영 부하가 증가하게 된다.
본 발명이 해결하고자 하는 과제는 컨텐츠 제공 서비스에서 컨텐츠를 효율적으로 캐싱할 수 있는 방법 및 이를 이용한 캐시 서버를 제공하기 위한 것이다.
위의 과제를 위한 본 발명의 특징에 따른 컨텐츠 캐싱 방법은, 웹 서버와 클라이언트 사이에서 캐시 서버가 컨텐츠를 캐싱하는 방법에서, 상기 클라이언트로부터 컨텐츠를 요구하는 요청을 수신하는 단계; 상기 요청으로부터 캐시 키를 획득하는 단계; 상기 요청에 대응하는 컨텐츠가 상기 캐시 서버에 캐싱되어 있지 않은 경우에, 상기 캐시 키 관련 정보-- 상기 정보는 요청이 이루어진 요청 시간, 요청 건수를 포함함--를 토대로 상기 컨텐츠가 캐싱 대상인지를 판단하는 단계; 및 캐싱 대상으로 판단된 경우, 상기 컨텐츠를 캐싱하고 상기 클라이언트로 제공하는 단계를 포함한다.
상기 캐싱 대상인지를 판단하는 단계는 상기 캐시 키에 대응하는 요청이 설정 시간 내에 발생하였으며, 상기 캐시 키에 대응하는 요청 건수가 설정 횟수 이상인 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단할 수 있다.
상기 캐시 키 관련 정보는 요청 건수를 토대로 한 순위 정보를 추가적으로 포함할 수 있다. 이때, 상기 캐싱 대상인지를 판단하는 단계는 상기 캐시 키에 대응하는 요청이 설정 시간 내에 발생하였으며, 상기 캐시 키에 대응하는 요청 건수에 따른 순위 정보가 설정된 상위 순위내에 포함되는 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단할 수 있다.
상기 캐시 키 관련 정보는 요청 건수를 토대로 한 순위 정보를 추가적으로 포함할 수 있다. 이때, 상기 캐싱 대상인지를 판단하는 단계는 상기 캐시 키에 대응하는 요청이 설정 시간 내에 발생하였으며, 상기 캐시 키의 순위 정보가 상위 비율--상기 상위 비율은 현재까지 획득된 캐시 키들의 총 수의 설정 비율에 해당하는 개수임--내에 포함되는 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단할 수 있다.
상기 캐시 키 관련 정보는 요청 건수를 토대로 한 순위 정보를 추가적으로 포함할 수 있다. 이때, 상기 캐싱 대상인지를 판단하는 단계는 상기 캐시 키에 대응하는 요청이 설정 시간 내에 발생하였으며, 상기 캐시 키의 순위 정보가 상위 비율--상기 상위 비율은 현재까지 획득된 캐시 키들의 총 요청 건수의 설정 비율에 해당하는 건수임--내에 포함되는 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단할 수 있다.
한편 상기 캐시 키 관련 정보는 컨텐츠의 파일 크기, 요청 건수를 컨텐츠 크기로 나누어서 획득한 보정값을 더 포함하고, 상기 순위 정보는 상기 보정값을 토대로 한 순위일 수 있다.
또한 상기 캐시 키 관련 정보는 컨텐츠의 파일 크기, 컨텐츠에 대한 설정 시간 동안의 누적 전송량, 요청 건수를 컨텐츠 크기 및 누적 전송량으로 나누어서 획득한 보정값을 더 포함하고, 상기 순위 정보는 상기 보정값을 토대로 한 순위일 수 있다.
본 발명의 다른 특징에 따른 컨텐츠 캐싱 방법은, 웹 서버와 클라이언트 사이에서 캐시 서버가 컨텐츠를 캐싱하는 방법에서, 상기 클라이언트로부터 컨텐츠를 요구하는 요청을 수신하는 단계; 상기 요청으로부터 캐시 키를 획득하는 단계; 상기 요청에 대응하는 컨텐츠가 상기 캐시 서버에 캐싱되어 있지 않은 경우에, 상기 캐시 키 관련 정보를 토대로 상기 컨텐츠가 캐싱 대상인지를 판단하는 제1 판단 방법, 제2 판단 방법 및 제3 판단 방법들 중에서 적어도 하나를 사용하여, 상기 컨텐츠가 캐싱 대상인지를 판단하는 단계; 및 캐싱 대상으로 판단된 경우, 상기 컨텐츠를 캐싱하고 상기 클라이언트로 제공하는 단계를 포함하며, 상기 캐시 키 관련 정보는 상기 요청이 이루어진 요청 시간, 요청 건수, 그리고 순위 정보를 포함한다.
상기 제1 판단 방법은, 상기 캐시 키에 대응하는 요청 건수가 설정 횟수 이상인 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는 방법이며, 상기 제2 판단 방법은, 상기 캐시 키에 대응하는 요청 건수에 따른 순위 정보가 설정된 상위 순위내에 포함되는 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는 방법이고, 상기 제3 판단 방법은, 상기 캐시 키의 순위 정보가 상위 비율--상기 상위 비율은 현재까지 획득된 캐시 키들의 총 수의 설정 비율에 해당하는 개수 또는 상기 상위 비율은 현재까지 획득된 캐시 키들의 총 요청 건수의 설정 비율에 해당하는 건수임--내에 포함되는 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는 방법일 수 있다.
한편 상기 캐싱 대상인지를 판단하는 단계는 상기 캐시 키에 대응하는 요청이 설정 시간 내에 발생한 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단할 수 있다.
또한 상기 캐싱 대상인지를 판단하는 단계는 컨텐츠의 전체 범위, 실제 사용되는 컨텐츠의 범위, 캐시 서버의 저장 공간 크기, 캐시 서버의 저장 공간 성능 중 적어도 하나를 고려하여, 상기 제1 판단 방법, 제2 판단 방법 및 제3 판단 방법들 중에서 적어도 하나를 사용할 수 있다.
본 발명의 또 다른 특징에 따른 캐시 버서는, 웹 서버와 클라이언트 사이에서 컨텐츠를 제공하는 캐시 서버에서, 웹 서버로부터 제공되어 캐싱된 컨텐츠에 관련된 객체 정보가 캐시 키에 대응하여 저장되어 있는 객체 캐시 키 테이블, 그리고 클라이언트의 요청에 관련된 속성 정보--상기 속성 정보는 캐시 키에 대응하여 요청이 이루어진 요청 시간, 요청 건수를 포함함--가 캐시 키에 대응하여 저장되어 있는 요청 기록 테이블 및 요청 기록 순위 테이블을 포함하는 캐시 키 저장부; 클라이언트로부터 수신되는 HTTP(Hypertext Transfer Protocol) 요청으로부터 키를 획득하는 캐시 키 생성부; 상기 획득한 캐시 키가 상기 객체 캐시 키 테이블에 존재하지 않는 경우, 상기 요청 기록 테이블 및 요청 기록 순위 테이블에 저장된 정보를 토대로 상기 캐시 키에 대응하는 컨텐츠가 캐싱 대상인지를 판단하는 캐싱 대상 판단부; 상기 캐시 키에 대응하는 컨텐츠가 캐싱 대상인 경우, 상기 웹 서버 서버로부터 제공되는 상기 컨텐츠를 캐싱하는 캐싱 저장부; 및 상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하는 데이터 제공부를 포함한다.
상기 요청 기록 테이블에 캐시 키 별로 요청 시간이 저장되어 있으며, 상기 요청 기록 순위 테이블에 캐시 키 별로 요청 건수, 그리고 요청 건수를 토대로 하는 순위 정보가 저장될 수 있다.
상기 요청 기록 순위 테이블은 컨텐츠의 파일 크기, 컨텐츠에 대한 설정 시간 동안의 누적 전송량, 요청 건수를 컨텐츠 크기 및 누적 전송량으로 나누어서 획득한 보정값을 더 포함하고, 상기 순위 정보는 상기 보정값을 토대로 한 보정 순위를 더 포함할 수 있다.
한편 상기 캐싱 대상 판단부는 상기 캐시 키에 대응하는 요청 건수가 설정 횟수 이상인 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는 제1 판단 방법, 상기 캐시 키에 대응하는 요청 건수에 따른 순위 정보가 설정된 상위 순위내에 포함되는 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는 제2 판단 방법, 상기 캐시 키의 순위 정보가 상위 비율--상기 상위 비율은 현재까지 획득된 캐시 키들의 총 수의 설정 비율에 해당하는 개수 또는 상기 상위 비율은 현재까지 획득된 캐시 키들의 총 요청 건수의 설정 비율에 해당하는 건수임--내에 포함되는 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는 제3 판단 방법 중 적어도 하나를 토대로 캐싱 대상을 판단할 수 있다.
본 발명의 실시 예에 따르면, 컨텐츠 서비스시에 빈번하게 사용되는 인기 컨텐츠와 사용 횟수가 적은 비인기 컨텐츠를 효율적으로 구분하여 캐싱 여부를 결정할 수 있다. 따라서, 인기 컨텐츠는 원본 서버로부터 받아서 클라이언트로 전송하면서 동시에 캐싱하여, 이후 클라이언트의 요청시에는 원본 서버로 별도로 요청하는 과정 없이 제공할 수 있다. 또한 비인기 컨텐츠는 원본 서버로부터 제공받아서 클라이언트로 전송하면서 캐싱을 하지 않음으로써, 비인기 컨텐츠가 불필요하게 캐시서버 저장소에 캐싱되어 캐시 서버의 부하가 증가되는 것을 방지할 수 있다.
그러므로, 캐시 서버는 원래의 기능을 충실히 하면서도 비인기 컨텐츠로 인한 저장소 부하를 효과적으로 최소화시켜, 보다 빠르고 안정적인 서비스를 제공할 수 있다.
도 1은 LRU 알고리즘을 이용한 캐시 서버의 저장소 관리 상태를 나타낸 예시도이다.
도 2는 본 발명의 실시 예에 따른 컨텐츠 서비스가 이루어지는 네트워크 환경을 나타낸 도이다.
도 3은 본 발명의 실시 예에 따른 객체 캐시 키 테이블의 구조를 나타낸 예시도이며, 도 4는 본 발명의 실시 예에 따른 요청 기록 테이블의 구조를 나타낸 예시도이다.
도 5는 본 발명의 실시 예에 따른 요청 기록 순위 테이블의 구조를 나타낸 예시도이다.
도 6, 도7, 도 8은 추가적으로 고려되는 파라미터를 토대로 한 요청 기록 순위 테이블의 구조를 나타낸 도이다.
도 9는 본 발명의 실시 예에 따른 컨텐츠 캐싱 방법의 흐름도이다.
도 10은 본 발명의 실시 예에 따른 캐시 서버의 구조를 나타낸 도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 도면을 참조하여 본 발명의 실시 예에 따른 컨텐츠 저장 방법 및 이를 이용한 캐시 서버에 대하여 설명한다.
도 2는 본 발명의 실시 예에 따른 컨텐츠 서비스가 이루어지는 네트워크 환경을 나타낸 도이다.
첨부한 도 2에서와 같이, 캐시 서버(100)는 컨텐츠를 제공하는 서버 즉, 웹 서버(200)와 클라이언트(300) 사이에 위치한다.
웹 서버(200)는 요청된 컨텐츠를 제공하는 원본(origin) 웹 서버로 클라이언트로부터 컨텐츠 제공을 요구하는 요청에 대응하는 컨텐츠를 클라이언트(300)로 제공한다.
클라이언트로부터 컨텐츠 제공을 요구하는 요청은 HTTP(Hypertext Transfer Protocol) 요청으로 URL(uniform resource locator)에 대응하는 컨텐츠를 요청하는 것이다. 이러한 HTTP 요청은 기본 URL 이외에 GET 파라미터/POST 파라미터나 HTTP 요청 헤더(Header)로 구성된다.
캐시 서버(100)는 웹 서버(200)와 클라이언트(300) 사이에서 데이터 중계 역할을 수행한다. 캐시 서버(100)는 컨텐츠에 대한 캐싱을 수행하고 반복된 요청에 대해서 캐싱된 컨텐츠를 제공하여 보다 원본 웹서버의 부하를 절감하면서 빠른 서비스가 이루어지도록 한다.
본 발명의 실시 예에 따른 캐시 서버(100)는 캐싱되는 컨텐츠를 저장하는 캐싱 저장부(10)를 포함하며, 웹 서버(200)로부터 클라이언트(300)로 제공되는 컨텐츠에 대한 캐싱 여부를 결정하고, 캐싱이 결정된 컨텐츠만을 캐싱 저장부에 저장 및 관리한다.
이를 위하여, 캐시 서버(100)는 컨텐츠에 대한 객체 정보 및 요청 기록/요청기록 순위 정보를 별도로 관리하고, 이를 토대로 컨텐츠의 캐싱 여부를 결정한다. 객체 정보는 캐싱된 컨텐츠에 대한 정보를 나타내며, 요청 기록/요청 기록 순위는 클라이언트로부터의 요청에 관련된 정보를 나타낸다.
객체 정보는 캐싱된 컨텐츠 즉, 클라이언트로부터 요청되어 클라이언트로 제공된 다음에 캐시 서버(100)에 캐싱되어 관리되는 컨텐츠에 대한 정보이며, 캐싱된 컨텐츠인 캐싱 데이터에 대하여 부여되는 캐시 키(cache key)와 이에 관련된 정보를 포함한다. 1개의 캐싱 데이터에 대하여 1개의 캐시 키가 부여된다.
요청 기록/요청 기록 순위 정보는 클라이언트로부터의 요청을 토대로 하는데, 구체적으로 클라이언트가 요청한 컨텐츠에 대한 정보(예를 들어, 컨텐츠를 요청한 시간 등)를 포함한다. 요청 기록/요청 기록 순위 정보는 캐시 키(cache key)와 이에 관련된 정보를 포함할 수 있다.
캐시 키는 클라이언트로부터 입력되는 요청을 토대로 생성되는데, 예를 들어, 클라이언트의 요청 즉, HTTP 요청의 일부 또는 전체를 이용하여 캐시 키를 생성할 수 있다. 본 발명의 실시 예에서 캐시 키는 클라이언트 요청 URL에서 GET 파라미터를 제외한 정보를 사용하여 생성될 수 있다. 또는 상황에 따라서는 클라이언트 요청에서 프로토콜, 도메인, 포트 정보도 추가적으로 생략하고 나머지를 사용하여 캐시 키를 생성할 수도 있다. 예를 들어, "http://vod.domain.com:80/sample.mp4?id=1234"에서, 객체 캐시 키는 GET 파라미터를 제외한 "http://vod.domain.com:80/sample.mp4"이거나, GET 파라미터와 도메인 정보를 제외한 "/sample.mp4"일 수 있다. 프로토콜, 도메인, 포트정보를 제외하는 방법으로 도메인이 틀려도 경로만 동일하면 동일 콘텐츠로 인식할 수 있다.
본 발명의 실시 예에 따른 캐시 키 생성 방법은 위에 기술된 것에 한정되지 않는다.
객체 캐시 키 테이블은 캐시 키, 캐시 경로, 그리고 마지막 요청 시간을 포함한다. 여기서 캐시 경로는 실제 컨텐츠가 캐시 서버에 저장된 물리적 저장 경로를 나타내며, 마지막 요청 시간은 캐싱된 컨텐츠를 클라이언트가 마지막으로 요청한 시간을 나타내며 캐싱된 컨텐츠의 신선도 관리에 사용된다.
요청 기록 테이블은 캐시 키와 요청 시간을 포함한다. 요청 시간은 해당 캐시 키를 가지는 컨텐츠에 대하여 클라이언트로부터의 요청이 입력된 시간을 나타낸다. 클라이언트로부터 요청이 입력되면, 요청으로부터 획득되는 캐시 키에 대응하여 요청 시간이 저장된다.
도 3은 본 발명의 실시 예에 따른 객체 캐시 키 테이블의 구조를 나타낸 예시도이며 클라이언트 요청에서 획득한 캐시 키, 캐시서버 저장소의 저장경로, 해당 캐시 키에 대해서 마지막 요청 시간을 포함한다. 객체 캐시 키 테이블에서 캐시 키는 유일해야 하며 마지막 요청 시간은 캐시 서버의 신선도 관리에 사용된다. 도 4는 본 발명의 실시 예에 따른 요청 기록 테이블의 구조를 나타낸 예시도이며 클라이언트 요청에서 획득한 캐시 키, 해당 캐시 키에 대해서 요청된 시간을 포함한다. 요청 기록 테이블에서 캐시 키는 유일하지 않으며 클라이언트의 요청마다 추가된다.
도 3 및 도 4는 클라이언트로부터 요청 " http://sample.com/sample1.mp4", " http://sample.com/sample2.mp4", "http://sample.com/sample3.mp4" 등이 입력되는 경우에, 요청 기록 테이블과 객체 캐시 키 테이블에 저장되는 정보를 나타낸 예시도이다.
캐시 경로는 해시(hash) 함수를 이용하여 컨텐츠의 파일명을 변경하여 획득되는 값을 캐시 경로로 사용할 수 있으며 "/var/cache/00/01/0000000000001" 또는 "/cache/1"과 같은 값을 가질 수 있다. 캐시 경로를 구하는 방법은 이것에 한정되지 않는다.
본 발명의 실시 예에 따른 캐시 서버는 위에 기술된 바와 같이, 컨텐츠를 요구하는 클라이언트 요청이 입력되면, 클라이언트 요청의 일부 정보를 사용하여 캐시 키를 생성하고, 캐시 키를 이용하여 해당 컨텐츠의 캐싱 여부를 판단하고, 캐싱하는 것으로 결정된 컨텐츠만을 캐싱 처리한다. 캐싱 여부를 판단 즉, 해당 요청에 대응하는 컨텐츠가 캐싱 대상인지를 판단하기 위하여 다양한 캐싱 조건을 토대로 하는 판단 방법이 사용될 수 있다. 기본적으로 컨텐츠가 원본 서버인 웹 서버에 존재하고 캐시 서버에 캐싱되지 않은 컨텐츠이며, 이전에 요청된 기록을 토대로 캐싱 여부를 판단한다.
본 발명의 실시 예에 따른 캐싱 대상을 판단하는 방법으로는 N회 요청 방식을 사용할 수 있다. N회 요청 방식은 임의 컨텐츠에 대한 요청이 최근 설정 시간 내에 N회 이상 발생하였는지를 토대로 캐싱 대상을 판단하는 방법이다. 즉, 요청에 해당하는 컨텐츠가 원본 서버인 웹 서버에 존재하고 캐시 서버에 캐싱되지 않은 컨텐츠이며, 요청 시간이 현재를 기준으로 설정 시간(예를 들어, 10분) 이내에 해당하고, 그 요청 횟수가 설정 횟수(예를 들어, 2회)를 만족하는 경우, 해당 컨텐츠를 캐싱 대상으로 판단한다.
예를 들어, 1시간(3600초) 이내에 2회 이상 요청이 되어야 캐싱을 하는 조건이 설정된 경우, 첨부한 도 3 및 도 4의 테이블들을 참조하면, 캐시 키 "http://sample.com/sample1.mp4"은 요청 시간 "1375251000", "1375253000"에 각각 2회 요청되었음을 알 수 있다. 캐시 키에 대응하는 요청이 "1375251000"의 시간에 발생한 경우에는 설정 시간 1시간 (3600초) 이내에 발생하였지만 2회 이상의 요청을 만족하지 못하였기 때문에, 요청에 대한 컨텐츠는 웹 서버로부터 제공받아서 클라이언트로 전달만 되며, 캐시 서버의 저장부에 저장되지 않는다. 그러나, 이후, 캐시 키에 대응하는 요청이 "1375253000"의 시간에 발생한 경우에는, 두 요청 사이의 간격이 1000초로 1시간(3600초) 이내이고 2회 이상의 요청 횟수를 만족하기 때문에, "1375253000"의 시간에 이루어진 요청에 대해서는 웹 서버로부터 제공되는 컨텐츠가 클라이언트로 전달되고 또한 캐시 서버의 저장부에 저장 즉, 캐싱된다.
또한 본 발명의 실시 예에 따른 캐싱 대상을 판단하는 방법으로는 상위 순위 진입 방식을 사용할 수 있다. 상위 순위 진입 방식은 임의 컨텐츠의 요청에 대한 순위 정보가 미리 설정된 상위 순위 내에 위치하는지의 여부를 토대로 캐싱 대상을 판단하는 방법이다. 즉, 요청에 해당하는 컨텐츠가 원본 서버인 웹 서버에 존재하고 캐시 서버에 캐싱되지 않은 컨텐츠이며, 이전에 요청된 적이 있으며 그 요청 횟수 즉, 요청 건수를 토대로 한 순위 정보가 미리 설정된 상위 순위 내에 해당하는 경우이다. 여기서는 순위 정보로 요청 건수가 사용되었지만, 이에 한정되지 않으며, 다른 파라미터가 사용될 수 있다. 이에 대해서는 추후에 설명하기로 한다.
상위 순위 진입 방식을 토대로 캐싱 대상을 판단하기 위하여, 요청 기록 테이블에 추가로 요청 기록 순위 테이블을 사용할 수 있다. 요청 기록 순위 테이블은 요청 기록 테이블의 정보들을 토대로 각 캐시 키별 요청 건수들에 대한 순위 정보를 기록한 테이블이다.
도 5는 본 발명의 실시 예에 따른 요청 기록 순위 테이블의 구조를 나타낸 예시도이다.
요청 기록 순위 테이블은 캐시 키별로 설정 시간내의 요청 건수 그리고 순위 정보가 대응되어 저장된다. 요청 기록 테이블을 토대로, 현재 시간으로부터 설정 시간(예를 들어, 60초 또는 3600초) 이내에 이루어진 캐시 키 별 요청들의 횟수들을 토대로 요청 건수를 캐시 키별로 산출하고, 캐시 키별 요청 건수를 토대로 캐시 키들에 대하여 순위를 매긴다. 임의 캐시 키에 대한 요청 횟수를 토대로 한 순위 정보가 설정 상위 순위(예: 상위 3위)내에 들면, 웹 서버로부터 캐시 키에 해당하는 컨텐츠를 제공받아 클라이언트로 전달하고, 캐시 서버의 저장부에 저장한다.
도 5의 요청 기록 순위 테이블은 순위 정보를 토대로 캐시 키들을 정렬한 상태를 나타낸다. 설정 순위가 상위 3위인 경우, "http://sample.com/sample1.mp4", http://sample.com/sample2.mp4, http://sample.com/sample3.mp4에 해당하는 컨텐츠는 캐싱 대상으로 판단되어 클라이언트로 전달되고 캐시 서버의 저장부에 저장되며, 나머지 캐시 키들에 대응되는 컨텐츠들은 캐시 서버 저장소에 캐싱되지 않고 클라이언트로 전달된다.
이러한 판단 방법을 토대로 컨텐츠 저장을 결정하면, 인기 있는 컨텐츠의 수를 일정량으로 유지시키면서 캐시서버 저장소를 운영할 수 있다.
또한 본 발명의 실시 예에 따른 캐싱 대상을 판단하는 방법으로는 상위 비율 진입 방식을 사용할 수 있다. 상위 비율 진입 방식은 임의 컨텐츠의 요청이 미리 설정된 상위 비율 내에 위치하는지의 여부를 토대로 캐싱 대상을 판단하는 방법이다. 즉, 요청에 해당하는 컨텐츠가 원본 서버인 웹 서버에 존재하고 캐시 서버에 캐싱되지 않은 컨텐츠이며, 이전에 요청된 적이 있으며 해당 캐시 키가 상위 비율에 포함되는지의 여부를 판단하는 것이다.
상위 비율에 포함되는지의 여부는 캐시 키 개수 또는 캐시 키에 대한 요청 건수를 토대로 판단될 수 있다. 예를 들어 캐시 키 개수를 토대로 상위 비율이 설정될 수 있는데, 요청 건수와 상관없이 캐시 키들의 총 수의 설정 비율에 해당하는 수를 상위 비율로 설정할 수 있다. 예를 들어, 도 5에 도시된 요청 기록 순위 테이블을 보면 총 10개의 캐시 키들이 있다. 설정된 상위 비율이 50%이면 총 10개의 캐시 키 중에서 상위 5개 즉, 순위 정보 1, 2, 3, 4, 5에 해당하는 캐시 키들(http://sample.com/sample1.mp4 ~ http://sample.com/sample5.mp4)에 포함되는 컨텐츠가 캐싱 대상으로 판단될 수 있다.
또한 요청 건수를 토대로 상위 비율이 설정될 수 있는데, 전체 요청 건수의 설정 비율에 해당하는 요청 건수가 상위 비율로 설정될 수 있다. 예를 들어 전체 요청 건수의 50%가 상위 비율로 설정되고, 상위 비율 50%를 넘는 요청 건수를 가지는 캐시 키들에 해당하는 컨텐츠가 캐싱 대상에 포함된다. 도 5에 도시된 요청 기록 순위 테이블을 참조하면, 전체 요청 건수는 226 회이므로 226의 50%에 해당하는 상위 비율 113회 이상의 요청에 포함된 캐시 키를 가지는 http://sample.com/sample1.mp4, http://sample.com/sample2.mp4가 캐싱 대상에 포함된다. (캐시 키 http://sample.com/sample2.mp4는 전체 50회 요청 중에서 일부인 13회만 포함되지만, 본 발명의 예에서는 요청 중에 일부만 포함되어도 캐싱 대상에 포함되는 것으로 가정함)
이와 같이, 상위 비율 진입 방식은 상위 순위 진입 방식과 동일하게 요청 기록 순위 테이블을 토대로 하지만, 상위 순위 진입 방식과는 달리, 상위 3위 또는 5위와 같이 정적인 방식이 아니라, 상위 10%, 상위 30%와 같이 설정 비율에 들어가면, 해당 캐시 키를 토대로 한 컨텐츠 요청에 대해서는 캐싱 대상으로 판단하여, 웹 서버로부터 제공받은 컨텐츠를 클라이언트에 전달하고 캐시 서버의 저장부에도 저장한다.
이에 따라, 상위 순위 진입 방식에 비하여, 컨텐츠 개수에 대하여 동적으로 캐싱되는 컨텐츠들의 개수를 조절할 수 있으므로, 전체 컨텐츠 개수가 증가하면 캐싱되는 인기 컨텐츠의 개수도 증가할 수 있다.
한편, 위에 기술된 상위 순위 진입 방식과 상위 비율 진입 방식에서, 요청 건수 이외의 다른 정보를 순위 정보로 사용할 수 있다.
순위 정보는 위에 기술된 바와 같이, 캐시 키별 요청 건수를 토대로 결정될 수 있는데, 요청 건수만을 토대로 순위를 결정할 경우에는 인기 컨텐츠임에도 불구하고 캐싱되지 못하는 경우가 발생한다. 구체적으로, 프로그레시브(progressive) 다운로드 등에서 HTTP Range GET 사용이 증가하고 있는데, 단순 요청 건수를 가지고 순위를 계산하면, 상대적으로 파일에 대한 부분 요청이 사용되면서 요청 건수가 증가할 수밖에 없는 대용량 파일들이 높은 순위를 점해서 캐싱되고, 소용량 파일들은 캐싱되지 못하는 상황이 생길 수 있다.
이러한 상황을 방지하기 위하여, 요청 건수 이외에 다른 파라미터를 추가적으로 고려하여 순위 정보를 생성할 수 있다.
도 6 내지 도 8은 추가적으로 고려되는 파라미터를 토대로 한 요청 기록 순위 테이블의 구조를 나타낸 도이다.
첨부한 도 6에서와 같이, 요청 건수 이외에, 컨텐츠 크기를 추가적으로 고려하고, 요청 건수를 컨텐츠 크기로 나누어서 획득한 보정값을 토대로 보정 순위를 추가적으로 산출한다.
요청 건수를 순위 정보로 직접 사용하는 것이 아니라, 각 캐시 키별 요청 건수를 컨텐츠의 파일 크기(또는 보정계수를 적용한 파일 크기)로 나눈 보정값을 산출하고, 산출된 보정값들을 토대로 한 보정 순위를 순위 정보로 사용한다.
또한, 첨부한 도 7에서와 같이, 요청 건수 이외에, 설정 시간 동안의 누적 전송량을 추가적으로 고려하고, 요청 건수를 누적 전송량으로 나누어서 획득한 보정값을 토대로 보정 순위를 추가적으로 산출한다.
요청 건수를 순위로 직접 사용하는 것이 아니라, 요청 건수를 해당 컨텐츠에 대하여 설정 시간 동안 전송한 파일에 따른 누적 전송량 (또는 보정계수를 적용한 누적 전송량)으로 나눈 값을 토대로 한 보정 순위를 순위 정보로 사용한다.
또한, 첨부한 도 8에서와 같이, 요청 건수 이외에, 컨텐츠 크기와 설정 시간 동안의 누적 전송량을 추가적으로 고려하고, 요청 건수를 컨텐츠 크기 및 누적 전송량으로 나누어서 획득한 보정값을 토대로 보정 순위를 추가적으로 산출한다.
요청 건수를 순위로 직접 사용하는 것이 아니라, 요청 건수를 컨텐츠의 파일 크기(또는 보정계수를 적용한 파일 크기)로 나누고 또한 그 값을 해당 컨텐츠에 대하여 설정 시간 동안 전송한 파일에 따른 누적 전송량 (또는 보정계수를 적용한 누적 전송량)으로 나눈 값을 토대로 한 보정 순위를 순위 정보로 사용한다. 이러한 보정 순위를 토대로 캐싱 대상을 결정하는 것은, 미리보기 서비스와 같이 영상의 일부분을 보는 경우에 인기 컨텐츠가 캐싱 대상으로 선택되지 않는 오류를 최소화시킬 수 있다.
그리고 이와 같이 획득되는 보정 순위들을 순위 정보로 하면서, 위에 기술된 바와 같은 상위 비율 진입 방식 또는 상위 순위 진입 방식을 토대로 캐싱 대상이 되는 컨텐츠들을 결정할 수 있다.
요청 건수와 파일 크기를 토대로 한 보정 순위를 기반으로 캐싱 대상을 결정함으로써, 인기 컨텐츠임에도 불구하고 캐싱되지 않는 경우를 최소화 할 수 있다.
한편, 위에 기술된 상위 순위 진입 방식과 상위 비율 진입 방식을 결합하여 캐싱 대상을 결정할 수 있다. 예를 들어, 상위 순위 진입 방식과 상위 비율 진입 방식에 따른 조건들을 모두 만족하는 경우에 캐싱 대상으로 결정되거나, 상위 순위 진입 방식과 상위 비율 진입 방식 중에서 적어도 하나를 만족하면 캐싱 대상으로 결정될 수 있다.
예를 들어, 상위 순위 진입 방식에서 조건이 "상위 100 위 이상"이고, 상위 비율 진입 방식에서 조건이 "상위 30%"이내이면, 요청 건수를 토대로 한 순위 정보나 보정 순위를 토대로 한 순위가 100위 이내이면서, 또한 캐시 개수나 요청 건수를 토대로 상위 비율 30% 안에 들어야, 캐싱 대상으로 결정될 수 있다.
또한 컨텐츠들의 종류에 따라 요청 건수를 순위 정보로 사용하거나 위에 기술된 바와 같은 보정 순위를 순위 정보로 사용할 수 있다.
본 발명의 실시 예에서, 컨텐츠의 전체 범위, 실제 사용되는 컨텐츠의 범위, 캐시 서버의 저장 공간 크기, 캐시 서버의 저장 공간 성능에 따라서, 위에 기술된 바와 같은 다양한 캐싱 대상을 판단하는 방법들 중에서 선택적으로 1가지 또는 1가지 이상의 방식을 조합하여 사용할 수 있다. 도 9에서 설명의 편의상 요청 기록 테이블 및 요청 기록 순위 테이블을 통합하여 "속성 정보 테이블"이라고 명명하였다.
도 9는 본 발명의 실시 예에 따른 컨텐츠 제공 방법의 흐름도이다.
캐시 서버(100)는 도 9에 도시되어 있듯이, 클라이언트(300)로부터 컨텐츠 제공을 요구하는 요청 즉, HTTTP 요청을 수신한다(S100).
캐시 서버(100)는 수신된 HTTP 요청으로부터 캐시 키를 획득하고(S110), 획득한 캐시 키가 객체 캐시 키 테이블에 존재하는지를 판단한다(S120). 판단 결과, 클라이언트의 HTTP 요청으로부터 획득한 캐시 키가 객체 캐시 키 테이블에 존재하지 않는 경우에는, 원본 서버인 웹 서버(200)로 HTTP 요청을 전달하면서 컨텐츠 제공을 요청한다(S130).
웹 서버(200)로부터 컨텐츠 요청에 대한 정상 응답(HTTP 200 또는 206 응답)을 받아서 해당 컨텐츠가 웹 서버에 존재하는 것으로 판단되면(S140), 캐시 서버(100)는 해당 캐시 키를 토대로 요청 기록테이블 및 요청 기록 순위 테이블을 검사하여 캐싱 대상에 해당하는 캐싱 조건들 즉, 위에 기술된 다양한 캐싱 대상 판단 방법(N회 요청 방식, 상위 순위 진입 방식, 상위 비율 진입 방식)을 토대로 한 조건들을 만족하는지를 판단한다(S150).
판단 결과, 해당 조건들을 만족하여 캐시 키에 대응하는 컨텐츠가 캐싱 대상인 것으로 판단되며, 캐시 서버(100)는 캐시 키에 대응하는 컨텐츠(객체)를 캐싱 저장부에 저장하는 캐싱을 수행하고, 객체 캐시 테이블에 캐싱된 컨텐츠에 대한 정보(캐시 키, 캐싱 경로 등)를 추가 저장한다(S160). 그리고 캐시 서버(100)는 캐싱된 컨텐츠에 대한 정보(캐시 키, 요청 시간, 요청 건수 등)를 요청 기록 테이블 및 요청 기록 순위 테이블에도 저장한다(S170).
이후, 캐시 서버(100)는 캐싱된 컨텐츠를 클라이언트(300)로 제공한다(S180).
한편, 단계(S120)에서, HTTP 요청으로부터 획득한 캐시 키가 객체 캐시 키 테이블에 존재하는 경우에는 이미 캐싱되어 있는 컨텐츠인 것으로 판단한다. 이후 캐시 서버(100)는 캐시 키 관련 정보를 객체 캐시 키 테이블에 저장하고(S190), 요청 기록 테이블 및 요청 기록 순위 테이블에 저장한 다음(S170), 캐싱된 컨텐츠를 클라이언트(300)로 전달한다(S180).
또한, 단계(S140)에서, 웹 서버(200)로부터 정상 응답((HTTP 200 또는 206 응답)을 받지 못한 경우에, 캐시 서버(100)는 클라이언트(300)로 웹서버의 HTTP 응답을 그대로 전달하여 컨텐츠 제공이 불가함을 통보한다(S200). 이 경우, 캐시 서버(100)는 클라이언트의 HTTP 요청으로부터 획득한 캐시 키 관련 정보를 요청 기록 테이블/요청 기록 순위 테이블에 추가하지 않을 수 있다.
이러한 과정을 통하여, 컨텐츠 서비스시에 빈번하게 사용되는 인기 컨텐츠와 사용 횟수가 적은 비인기 컨텐츠를 효율적으로 구분하여 캐싱 여부를 결정할 수 있으며, 비인기 컨텐츠가 불필요하게 캐싱되어 캐싱 처리시의 부하 및 저장소의 처리 부하가 증가되는 것을 방지할 수 있다.
도 10은 본 발명의 실시 예에 따른 캐시 서버의 구조를 나타낸 도이다.
첨부한 도 10에서와 같이, 본 발명의 실시 예에 따른 캐시 서버(100)는 캐싱 저장부(10), 캐시 키 생성부(20), 캐시 키 저장부(30), 키 존재 판단부(40), 캐싱 대상 판단부(50)를 포함하며, 데이터 요청부(60) 및 데이터 제공부(70)를 더 포함한다.
캐시 키 생성부(20)는 클라이언트로부터 수신되는 HTTP 요청으로부터 캐시 키를 획득한다.
캐시 키 저장부(30)는 회득한 캐시 키 관련 정보를 저장하며, 이를 위하여, 위에 기술된 바와 같은 형태로 이루어지는 객체 캐시 키 테이블(31), 요청 기록 테이블(32), 요청 기록 순위 테이블(33)을 포함한다. 요청 기록 테이블(32) 및 요청 기록 순위 테이블(33)을 통합하여 "속성 정보 테이블"이라고 명명될 수 있다.
키 존재 판단부(40)는 클라이언트의 HTTP 요청으로부터 획득한 캐시 키가 캐시 키 저장부(30)에 존재하는지를 판단한다. 구체적으로 캐시 키(또는 객체 캐시 키)가 객체 캐시 키 테이블(31)에 존재하는지를 판단하고, 또한 캐시 키(또는 속성 캐시 키)가 요청 기록 테이블(32) 또는 요청 기록 순위 테이블(33)에 존재하는지를 판단하고, 판단 결과를 캐싱 대상 판단부(50)로 제공한다.
캐싱 대상 판단부(50)는 클라이언트의 HTTP 요청으로부터 획득한 캐시 키에 해당하는 컨텐츠가 캐싱 대상인지를 판단한다. 위에 기술된 바와 같이, N회 요청 방식, 상위 순위 진입 방식, 상위 비율 진입 방식 중 적어도 하나를 토대로 캐싱 대상인지를 판단할 수 있다.
또한 캐싱 대상 판단부(50)는 캐싱된 컨텐츠에 대한 캐시 키 관련 정보를 객체 캐시 키 테이블(31)에 저장 및 관리하거나 캐싱되지 않은 컨텐츠에 대한 캐시 키 관련 정보를 속성 캐시 키 테이블인 요청 기록 테이블(32)이나 요청 기록 순위 테이블(33)에 저장 및 관리한다.
데이터 요청부(60)는 HTTP 요청을 웹 서버(200)로 전달하면서 데이터를 요청한다.
캐싱 저장부(10)는 웹 서버(200)로부터 제공되는 컨텐츠 중에서 캐싱 대상으로 판단된 컨텐츠를 캐싱한다.
데이터 제공부(70)는 HTTP 요청을 웹 서버(200)로 전달하면서 컨텐츠 제공을 요청하고, 제공되는 컨텐츠를 클라이언트로 제공한다.
본 발명의 실시 예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하기 위한 프로그램, 그 프로그램이 기록된 기록 매체 등을 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (18)

  1. 웹 서버와 클라이언트 사이에서 캐시 서버가 컨텐츠를 캐싱하는 방법에서,
    상기 클라이언트로부터 컨텐츠를 요구하는 요청을 수신하는 단계;
    상기 요청으로부터 캐시 키를 획득하는 단계;
    상기 요청에 대응하는 컨텐츠가 상기 캐시 서버에 캐싱되어 있지 않은 경우에, 상기 캐시 키 관련 정보-- 상기 정보는 요청이 이루어진 요청 시간, 요청 건수를 포함함--를 토대로 상기 컨텐츠가 캐싱 대상인지를 판단하는 단계;
    캐싱 대상으로 판단된 경우, 상기 웹 서버로부터 상기 요청에 대응하는 컨텐츠를 제공받아 캐싱하고 상기 클라이언트로 제공하는 단계; 및
    캐싱 대상이 아닌 것으로 판단된 경우, 상기 웹 서버로부터 상기 요청에 대응하는 컨텐츠를 제공받아 상기 클라이언트로 제공하는 단계
    를 포함하고,
    상기 캐시 키 관련 정보는 요청 건수를 토대로 한 순위 정보를 포함하고, 상기 순위 정보는 보정값을 토대로 한 보정 순위를 포함하며, 상기 보정값은 컨텐츠의 파일 크기, 요청 건수, 그리고 컨텐츠 크기를 고려하여 결정되는, 컨텐츠 캐싱 방법.
  2. 제1항에 있어서
    상기 캐싱 대상인지를 판단하는 단계는
    상기 캐시 키에 대응하는 요청이 설정 시간 내에 발생하였으며, 상기 캐시 키에 대응하는 요청 건수가 설정 횟수 이상인 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는, 컨텐츠 캐싱 방법.
  3. 제1항에 있어서
    상기 캐싱 대상인지를 판단하는 단계는
    상기 캐시 키에 대응하는 요청이 설정 시간 내에 발생하였으며, 상기 캐시 키에 대응하는 요청 건수에 따른 순위 정보가 설정된 상위 순위내에 포함되는 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는, 컨텐츠 캐싱 방법.
  4. 제1항에 있어서
    상기 캐싱 대상인지를 판단하는 단계는
    상기 캐시 키에 대응하는 요청이 설정 시간 내에 발생하였으며, 상기 캐시 키의 순위 정보가 상위 비율--상기 상위 비율은 현재까지 획득된 캐시 키들의 총 수의 설정 비율에 해당하는 개수임--내에 포함되는 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는, 컨텐츠 캐싱 방법.
  5. 제1항에 있어서
    상기 캐싱 대상인지를 판단하는 단계는
    상기 캐시 키에 대응하는 요청이 설정 시간 내에 발생하였으며, 상기 캐시 키의 순위 정보가 상위 비율--상기 상위 비율은 현재까지 획득된 캐시 키들의 총 요청 건수의 설정 비율에 해당하는 건수임--내에 포함되는 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는, 컨텐츠 캐싱 방법.
  6. 제3항 내지 제5항 중 어느 한 항에 있어서
    상기 보정값은 컨텐츠의 파일 크기, 요청 건수를 컨텐츠 크기로 나누어서 획득한 값인, 컨텐츠 캐싱 방법.
  7. 제3항 내지 제5항 중 어느 한 항에 있어서
    상기 보정값은 컨텐츠의 파일 크기, 컨텐츠에 대한 설정 시간 동안의 누적 전송량, 요청 건수를 컨텐츠 크기 및 누적 전송량으로 나누어서 획득한 값인, 컨텐츠 캐싱 방법.
  8. 웹 서버와 클라이언트 사이에서 캐시 서버가 컨텐츠를 캐싱하는 방법에서,
    상기 클라이언트로부터 컨텐츠를 요구하는 요청을 수신하는 단계;
    상기 요청으로부터 캐시 키를 획득하는 단계;
    상기 요청에 대응하는 컨텐츠가 상기 캐시 서버에 캐싱되어 있지 않은 경우에, 상기 캐시 키 관련 정보를 토대로 상기 컨텐츠가 캐싱 대상인지를 판단하는 제1 판단 방법, 제2 판단 방법 및 제3 판단 방법들 중에서 적어도 하나를 사용하여, 상기 컨텐츠가 캐싱 대상인지를 판단하는 단계;
    캐싱 대상으로 판단된 경우, 상기 웹 서버로부터 상기 요청에 대응하는 컨텐츠를 제공받아 캐싱하고 상기 클라이언트로 제공하는 단계; 및
    캐싱 대상이 아닌 것으로 판단된 경우, 상기 웹 서버로부터 상기 요청에 대응하는 컨텐츠를 제공받아 상기 클라이언트로 제공하는 단계
    를 포함하며,
    상기 캐시 키 관련 정보는 상기 요청이 이루어진 요청 시간, 요청 건수, 그리고 순위 정보를 포함하고,
    상기 캐싱 대상인지를 판단하는 단계는 상기 캐시 키에 대응하는 요청이 설정 시간 내에 발생한 경우에 상기 컨텐츠가 캐싱 대상인 것으로 판단하고, 상기 제1 판단 방법, 제2 판단 방법 및 제3 판단 방법들 중에서 적어도 하나를 사용하여, 상기 컨텐츠가 캐싱 대상인지를 추가적으로 판단하는, 컨텐츠 캐싱 방법.
  9. 제8항에 있어서
    상기 제1 판단 방법은, 상기 캐시 키에 대응하는 요청 건수가 설정 횟수 이상인 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는 방법이며,
    상기 제2 판단 방법은, 상기 캐시 키에 대응하는 요청 건수에 따른 순위 정보가 설정된 상위 순위내에 포함되는 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는 방법이고,
    상기 제3 판단 방법은, 상기 캐시 키의 순위 정보가 상위 비율--상기 상위 비율은 현재까지 획득된 캐시 키들의 총 수의 설정 비율에 해당하는 개수 또는 상기 상위 비율은 현재까지 획득된 캐시 키들의 총 요청 건수의 설정 비율에 해당하는 건수임--내에 포함되는 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는 방법인, 컨텐츠 캐싱 방법.
  10. 제9항에 있어서
    상기 캐시 키 관련 정보는 컨텐츠의 파일 크기, 요청 건수를 컨텐츠 크기로 나누어서 획득한 보정값을 더 포함하고, 상기 순위 정보는 상기 보정값을 토대로 한 순위인, 컨텐츠 캐싱 방법.
  11. 제9항에 있어서
    상기 캐시 키 관련 정보는 컨텐츠의 파일 크기, 컨텐츠에 대한 설정 시간 동안의 누적 전송량, 요청 건수를 컨텐츠 크기 및 누적 전송량으로 나누어서 획득한 보정값을 더 포함하고, 상기 순위 정보는 상기 보정값을 토대로 한 순위인, 컨텐츠 캐싱 방법.
  12. 삭제
  13. 제8항 내지 제11항 중 어느 한 항에 있어서
    상기 캐싱 대상인지를 판단하는 단계는 컨텐츠의 전체 범위, 실제 사용되는 컨텐츠의 범위, 캐시 서버의 저장 공간 크기, 캐시 서버의 저장 공간 성능 중 적어도 하나를 고려하여, 상기 제1 판단 방법, 제2 판단 방법 및 제3 판단 방법들 중에서 적어도 하나를 사용하는, 컨텐츠 캐싱 방법.
  14. 웹 서버와 클라이언트 사이에서 컨텐츠를 제공하는 캐시 서버에서,
    웹 서버로부터 제공되어 캐싱된 컨텐츠에 관련된 객체 정보가 캐시 키에 대응하여 저장되어 있는 객체 캐시 키 테이블, 그리고 클라이언트의 요청에 관련된 속성 정보--상기 속성 정보는 캐시 키에 대응하여 요청이 이루어진 요청 시간, 요청 건수를 포함함--가 캐시 키에 대응하여 저장되어 있는 요청 기록 테이블 및 요청 기록 순위 테이블을 포함하는 캐시 키 저장부;
    클라이언트로부터 수신되는 HTTP(Hypertext Transfer Protocol) 요청으로부터 키를 획득하는 캐시 키 생성부;
    상기 획득한 캐시 키가 상기 객체 캐시 키 테이블에 존재하지 않는 경우, 상기 요청 기록 테이블 및 요청 기록 순위 테이블에 저장된 정보를 토대로 상기 캐시 키에 대응하는 컨텐츠가 캐싱 대상인지를 판단하는 캐싱 대상 판단부;
    상기 캐시 키에 대응하는 컨텐츠가 캐싱 대상인 경우, 상기 웹 서버 서버로부터 제공되는 상기 컨텐츠를 캐싱하는 캐싱 저장부; 및
    상기 요청에 대응하는 캐싱된 컨텐츠를 상기 클라이언트로 제공하고, 상기 캐시 키에 대응하는 컨텐츠가 캐싱 대상이 아닌 경우에 상기 웹 서버로부터 상기 요청에 대응하는 컨텐츠를 제공받아 상기 클라이언트로 전달하는 데이터 제공부
    를 포함하고,
    상기 요청 기록 순위 테이블은 요청 건수를 토대로 한 순위 정보를 포함하고, 상기 순위 정보는 보정값을 토대로 한 보정 순위를 포함하며, 상기 보정값은 컨텐츠의 파일 크기, 요청 건수, 그리고 컨텐츠 크기를 고려하여 결정되는, 캐시 서버.
  15. 제14항에 있어서
    상기 요청 기록 테이블에 캐시 키 별로 요청 시간이 저장되어 있으며, 상기 요청 기록 순위 테이블에 캐시 키 별로 요청 건수, 그리고 요청 건수를 토대로 하는 순위 정보가 저장되어 있는, 캐시 서버.
  16. 제15항에 있어서
    상기 요청 기록 순위 테이블의 상기 보정값은 컨텐츠의 파일 크기, 요청 건수를 컨텐츠 크기로 나누어서 획득한 값인, 캐시 서버.
  17. 제15항에 있어서
    상기 요청 기록 순위 테이블의 상기 보정값은 컨텐츠의 파일 크기, 컨텐츠에 대한 설정 시간 동안의 누적 전송량, 요청 건수를 컨텐츠 크기 및 누적 전송량으로 나누어서 획득한 값인, 캐시 서버.
  18. 제15항 내지 제17항 중 어느 한 항에 있어서
    상기 캐싱 대상 판단부는
    상기 캐시 키에 대응하는 요청 건수가 설정 횟수 이상인 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는 제1 판단 방법,
    상기 캐시 키에 대응하는 요청 건수에 따른 순위 정보가 설정된 상위 순위내에 포함되는 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는 제2 판단 방법,
    상기 캐시 키의 순위 정보가 상위 비율--상기 상위 비율은 현재까지 획득된 캐시 키들의 총 수의 설정 비율에 해당하는 개수 또는 상기 상위 비율은 현재까지 획득된 캐시 키들의 총 요청 건수의 설정 비율에 해당하는 건수임--내에 포함되는 경우에, 상기 컨텐츠가 캐싱 대상인 것으로 판단하는 제3 판단 방법
    중 적어도 하나를 토대로 캐싱 대상을 판단하는, 캐시 서버.












KR1020130118821A 2013-10-04 2013-10-04 컨텐츠 요청 기록과 요청 순위를 이용한 컨텐츠 캐싱 방법 및 이를 이용한 http 캐시 서버 KR101565353B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130118821A KR101565353B1 (ko) 2013-10-04 2013-10-04 컨텐츠 요청 기록과 요청 순위를 이용한 컨텐츠 캐싱 방법 및 이를 이용한 http 캐시 서버

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130118821A KR101565353B1 (ko) 2013-10-04 2013-10-04 컨텐츠 요청 기록과 요청 순위를 이용한 컨텐츠 캐싱 방법 및 이를 이용한 http 캐시 서버

Publications (2)

Publication Number Publication Date
KR20150040172A KR20150040172A (ko) 2015-04-14
KR101565353B1 true KR101565353B1 (ko) 2015-11-03

Family

ID=53031691

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130118821A KR101565353B1 (ko) 2013-10-04 2013-10-04 컨텐츠 요청 기록과 요청 순위를 이용한 컨텐츠 캐싱 방법 및 이를 이용한 http 캐시 서버

Country Status (1)

Country Link
KR (1) KR101565353B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101652317B1 (ko) 2014-05-27 2016-08-31 장영웅 탱자 및 물엿을 발효시킨 발효액을 유효성분으로 포함하는 염증성 질환 또는 알러지 질환의 예방, 치료 또는 개선을 위한 약제, 식음료 및 화장료 조성물
KR102303776B1 (ko) * 2016-03-03 2021-09-17 에스케이텔레콤 주식회사 D2d 기반의 콘텐츠 캐싱 방법, 이를 수행하는 컴퓨터 프로그램 및 프로그램을 기록한 기록매체
CN113034283A (zh) * 2021-03-29 2021-06-25 中国银联股份有限公司 交易数据的处理方法、装置及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002259197A (ja) * 2001-02-27 2002-09-13 Nippon Telegr & Teleph Corp <Ntt> アクティブコンテンツキャッシュ制御システムと、アクティブコンテンツキャッシュ制御装置及び方法と、アクティブコンテンツキャッシュ制御処理用プログラム及びそのプログラムの記録媒体
JP2005018398A (ja) 2003-06-26 2005-01-20 Vodafone Kk キャッシングシステム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002259197A (ja) * 2001-02-27 2002-09-13 Nippon Telegr & Teleph Corp <Ntt> アクティブコンテンツキャッシュ制御システムと、アクティブコンテンツキャッシュ制御装置及び方法と、アクティブコンテンツキャッシュ制御処理用プログラム及びそのプログラムの記録媒体
JP2005018398A (ja) 2003-06-26 2005-01-20 Vodafone Kk キャッシングシステム

Also Published As

Publication number Publication date
KR20150040172A (ko) 2015-04-14

Similar Documents

Publication Publication Date Title
US11032387B2 (en) Handling of content in a content delivery network
US9015275B2 (en) Partial object distribution in content delivery network
EP3108644B1 (en) Content delivery network architecture with edge proxy
EP3156911B1 (en) Content management
KR101228230B1 (ko) 컨텐츠 전달 네트워크 내의 노드에서 하나 이상의 컨텐츠 아이템을 캐싱하는 방법, 장치 및 제품
US20110131341A1 (en) Selective content pre-caching
US20140067990A1 (en) Method for accessing a content item in a cloud storage system, and a corresponding cloud broker, cloud cache agent and client application
Nair et al. A rank based replacement policy for multimedia server cache using zipf-like law
Nikolaou et al. Proactive cache placement on cooperative client caches for online social networks
KR20130053249A (ko) 통신 시스템에서 캐쉬 메모리 관리 방법 및 장치
WO2011126481A1 (en) Partial object distribution in content delivery network
KR101565353B1 (ko) 컨텐츠 요청 기록과 요청 순위를 이용한 컨텐츠 캐싱 방법 및 이를 이용한 http 캐시 서버
Mokhtarian et al. Flexible caching algorithms for video content distribution networks
KR101490516B1 (ko) 객체 및 속성 정보를 이용한 컨텐츠 제공 방법 및 이를 이용한 http 프록시 서버
Kangasharju Internet content distribution
Akhtar et al. Caching online video: Analysis and proposed algorithm
KR101920221B1 (ko) 통신 시스템에서 캐쉬 메모리 관리 방법 및 장치
Lim Improving Availability of Image Content in Social Networking Services Based on Resource Usage of Clients
JP2008293281A (ja) キャッシュ装置、サーバ、キャッシュシステム、キャッシュ方法、及びプログラム
JP2018109903A (ja) コンテンツ配信システムの転送装置及びプログラム
Bikfalvi et al. On the Design of Scalable Peer-to-Peer Video Caching
KR20130072989A (ko) 선호 콘텐츠를 제공하는 방법 및 시스템
TW201427390A (zh) 反向代理系統及其方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181029

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191028

Year of fee payment: 5