KR101997305B1 - 애플리케이션 구동식 cdn 사전-캐싱 기법 - Google Patents

애플리케이션 구동식 cdn 사전-캐싱 기법 Download PDF

Info

Publication number
KR101997305B1
KR101997305B1 KR1020147016139A KR20147016139A KR101997305B1 KR 101997305 B1 KR101997305 B1 KR 101997305B1 KR 1020147016139 A KR1020147016139 A KR 1020147016139A KR 20147016139 A KR20147016139 A KR 20147016139A KR 101997305 B1 KR101997305 B1 KR 101997305B1
Authority
KR
South Korea
Prior art keywords
content
request
additional content
client application
additional
Prior art date
Application number
KR1020147016139A
Other languages
English (en)
Other versions
KR20140102220A (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 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20140102220A publication Critical patent/KR20140102220A/ko
Application granted granted Critical
Publication of KR101997305B1 publication Critical patent/KR101997305B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5681Pre-fetching or pre-delivering data based on network characteristics

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

콘텐츠가 요청되기 전에 콘텐츠를 캐싱하기 위한 기법이 제공된다. 캐싱 서버에서 원하는 콘텐츠에 대한 요청이 클라이언트로부터 수신될 수 있다. 또한 요청은 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는 원하는 콘텐츠와 관련된 추가 콘텐츠를 지시할 수 있다. 지시된 추가 콘텐츠(그리고 아직 캐싱되지 않은 경우 원하는 콘텐츠)가 원천 서버로부터 불러와진다. 원하는 콘텐츠는 사용자 장치의 클라이언트 애플리케이션으로 전송되고 상기 추가 콘텐츠가 캐싱 서버에 캐싱된다. 그 후 추가 콘텐츠에 대한 요청을 포함하는 제 2 요청이 클라이언트 애플리케이션으로부터 수신될 수 있다. 이제 제 2 요청에 대해 응답하여, 캐싱 서버에 캐싱된 추가 콘텐츠가 (원천 서버로부터 불러와지는 것이 아니라) 캐싱 서버에 의해 클라이언트 애플리케이션으로 서비스된다.

Description

애플리케이션 구동식 CDN 사전-캐싱 기법{APPLICATION-DRIVEN CDN PRE-CACHING}
콘텐츠 전송 네트워크(CDN: content delivery network)는 다양한 네트워크 노드에 위치하는 데이터의 복사본(copy)을 포함하는 컴퓨터들의 네트워크이다. CDN은 원천 서버(origin server)와 최종 사용자 컴퓨터 간의 데이터용 인터페이스를 제공한다. 상기 원천 서버가 콘텐츠의 주 소스이며, CDN의 서버는 가장 높은 수요를 갖는 콘텐츠의 복사본을 캐싱(cache)한다. 전략적으로 CDN의 서버는 원천 서버보다 최종 사용자 컴퓨터에 더 가까이에 배치될 수 있다. 최종 사용자 컴퓨터는 원천 서버로부터 직접 데이터를 액세스할 필요 없이 CDN의 서버에서 높은 수요의 데이터를 액세스할 수 있다. 따라서 CDN은 액세스 대역폭을 증가시키고, 리던던시(redundancy)를 증가시키며, 액세스 대기시간(access latency)을 감소시킴으로써 데이터 액세스를 개선한다.
워싱턴, 레드몬드에 소재하는 Microsoft Corporation사가 제공하는 Bing® Maps이 CDN을 이용해 콘텐츠를 제공하는 온라인 애플리케이션의 하나의 예시이다. 이 애플리케이션은 원천 서버에 저장되며 CDN을 통해 최종 사용자에게 전달되는 맵 타일(맵의 부분들의 이미지)의 형태의 많은 양의 정적 콘텐츠를 가진다. 예를 들어, 사용자는 그들의 컴퓨팅 장치의 웹 브라우저를 이용해, 가령, 맵을 패닝(pan), 맵의 일부분을 줌 인(zoom in) 또는 줌 아웃(zoom out) 등을 함으로써, 맵을 브라우징할 수 있다. 사용자가 맵을 브라우징할 때, 상기 브라우저는 새 맵 타일에 대한 요청을 CDN에게 전송한다.
콘텐츠(가령, 맵 타일)가 사용자 컴퓨팅 장치의 웹 브라우저에 더 빠르게 제공될 수 있도록 하는 다양한 기법이 개발된 바 있다. 첫 번째 기법에 따르면, 온라인 애플리케이션을 위한 원천 서버가 미래의 콘텐츠 요청을 예측할 수 있다. 예측된 미래의 콘텐츠는 CDN에 사전-캐싱(pre-cache)되어, 예측된 미래의 콘텐츠가 실제로 요청된 경우 사용자 컴퓨팅 장치에 의해 더 빠르게 액세스되도록 할 수 있다. 두 번째 기법에 따르면, 사용자 컴퓨팅 장치에서의 클라이언트 웹 브라우저가 미래에 어느 콘텐츠가 원해질 수 있는지를 예측할 수 있고, 상기 콘텐츠를 웹 브라우저로 사전-인출(pre-fetch)할 수 있다. 세 번째 기법에 따르면, CDN 서버가 사용자 컴퓨팅 장치에 의한 미래의 콘텐츠 요청을 예측할 수 있고, 예측된 미래의 콘텐츠를 CDN에 사전-캐싱할 수 있다.
그러나 이들 기법은 단점을 가진다. 예를 들어, 원천 서버가 미래의 콘텐츠를 예측하게 하는 것은, 사전-캐싱될 콘텐츠가 미리 결정되어야 한다는 단점을 가진다. 콘텐츠를 웹 브라우저에 사전-인출하는 것과 관련하여, 사용자가 데이터 전송에 대한 비용을 발생시키거나 제한된 대역폭을 갖는 경우(예컨대 모바일 애플리케이션의 경우), 이러한 사전-캐싱이 허용되지 않거나, 및/또는 바람직한 성능을 제시하지 않을 수 있다. 덧붙여, CDN이 미래의 콘텐츠를 예측 및 사전-캐싱해야 하는 것과 관련하여, CDN은 미래의 콘텐츠 요청을 추론할 수 있도록 자신이 수신하는 콘텐츠 요청의 유형을 이해할 만큼 매우 정교해야 할 것이다.
따라서 현재의 캐싱 기법은 아주 바람직한 것은 아니다. Bing® Maps의 경우, 이용 가능한 맵 타일의 개수와 서로 다른 사용자의 서로 다른 포커스 영역 때문에, "캐시 적중(cache hit)" 비(이용 가능한 데이터의 총 크기에 대한 캐싱되는 요청된 데이터의 비)가 바람직하지 않게도 낮다(가령, 50% 미만). 이는, 맵 타일을 CDN에 위치하는 캐시로부터 불러오는 것 대신, 상기 맵 타일이 사용자를 위해 원천 서버로부터 빈번하게 불러와져야 하기 때문에, 맵 로딩 시 비교적 높은 대기시간(latency)를 초래한다.
개요
이 개요는 이하의 상세한 설명에서 더 기재될 개념들의 모음을 단순화된 형태로 제공하기 위함이다. 이 개요는 청구되는 발명의 핵심 특징 또는 본질적 특징을 식별하려는 것이 아니며 청구되는 발명의 범위를 제한하기 위한 것도 아니다.
콘텐츠가 실제로 요청되기 전에 콘텐츠를 캐싱하기 위한 방법, 시스템, 및 컴퓨터 프로그램 프로덕트가 제공된다. (예측이 원천 서버나 콘텐츠 전송 네트워크 서버에서 이뤄지는 것이 아니라) 클라이언트 애플리케이션이 원하는 콘텐츠 다음으로 요청될 수 있는 콘텐츠를 예측할 수 있다. 덧붙여, (웹 브라우저에 캐싱되는 것이 아니라) 예측된 콘텐츠가 콘텐츠 전송 네트워크의 캐싱 서버에 캐싱될 수 있다. 이러한 기법은 캐시 적중율을 증가시키고, 대기시간을 감소시키며, 및/또는 추가 이점을 가질 수 있다.
캐싱 서버에 수행되는 하나의 방법에서, 원하는 콘텐츠에 대한 제 1 요청이 클라이언트 애플리케이션으로부터 수신된다. 상기 제 1 요청은 또한 상기 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는, 상기 원하는 콘텐츠와 관련된 추가 콘텐츠를 지시할 수 있다. 지시된 추가 콘텐츠는 현재는 소비되도록 원하는 것이라고 지시되지 않지만 미래에 소비되도록 원해질 가능성이 있다고 예측된다. 상기 원하는 콘텐츠 및 지시된 추가 콘텐츠는 원천 서버로부터 불러와진다(retrieve). 상기 원하는 콘텐츠는 사용자 장치의 클라이언트 애플리케이션으로 전송되고 추가 콘텐츠가 캐싱 서버에 캐싱된다. 그 후, (가령, 추가 콘텐츠가 클라이언트 애플리케이션에서 현재 소비되기 원해지는 경우) 추가 콘텐츠에 대한 요청을 포함하는 제 2 요청이 클라이언트 애플리케이션으로부터 수신될 수 있다. 제 1 요청에 응답하여 캐싱 서버에 캐싱되는 추가 콘텐츠가 제 2 요청에 응답하여, 캐싱 서버에 의해 클라이언트 애플리케이션으로 서비스된다.
원하는 콘텐츠에 대한 제 1 요청은 상기 추가 콘텐츠가 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는 가능도를 지시하는 가능도 지시를 포함할 수 있다. 원천 서버에서의 지시된 추가 콘텐츠에 대한 요청이 (타 콘텐츠 요청에 대한) 가능도 지시 및/또는 그 밖의 다른 정보를 기초로 우선순위화될 수 있다.
하나의 시스템 구현에서, 캐싱 서버가 콘텐츠 요청 파서(content request parser), 콘텐츠 리트리버 모듈(content retriever module), 및 콘텐츠 제공자 모듈(content provider module)을 포함할 수 있다. 상기 콘텐츠 요청 파서는 사용자 장치 내 클라이언트 애플리케이션으로부터 원하는 콘텐츠에 대한 요청을 수신한다. 상기 요청은 상기 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는, 상기 원하는 콘텐츠와 관련된 추가 콘텐츠를 지시한다. 상기 콘텐츠 리트리버 모듈은 원하는 콘텐츠 및 지시된 추가 콘텐츠에 대한 적어도 하나의 요청을 원천 서버로 전송하고, 상기 원천 서버로부터 원하는 콘텐츠 및 추가 콘텐츠를 수신하며, 추가 콘텐츠를 스토리지에 캐싱한다. 콘텐츠 제공자 모듈은 원하는 콘텐츠를 사용자 장치의 클라이언트 애플리케이션으로 전송한다. 상기 콘텐츠 요청 파서는 추가 콘텐츠에 대한 요청을 포함하는 클라이언트 애플리케이션으로부터 제 2 요청을 수신한다. 상기 콘텐츠 제공자 모듈은 제 2 요청에 응답하여 캐싱된 추가 콘텐츠를 클라이언트 애플리케이션으로 서비스한다.
덧붙여, 콘텐츠 리트리버 모듈은 가능도 지시를 기초로 하여 지시된 추가 콘텐츠에 대한 요청의 원천 서버로의 전송을 우선순위화하는 요청 우선순위화부를 포함할 수 있다.
하나의 클라이언트 애플리케이션 구현예에서, 클라이언트 애플리케이션은 통신 인터페이스 및 추가 콘텐츠 예측부(additional content predictor)를 포함할 수 있다. 상기 추가 콘텐츠 예측부는 클라이언트 애플리케이션이 현재 원하는 콘텐츠에 대한 지시를 수신하고 상기 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는 추가 콘텐츠를 예측한다. 통신 인터페이스는 예측된 추가 콘텐츠를 또한 지시하는 원하는 콘텐츠에 대한 제 1 요청을 생성한다. 통신 인터페이스는 제 1 요청에 응답하여 원천 서버로부터 원하는 콘텐츠를 불러왔던 캐싱 서버로부터 원하는 콘텐츠를 수신한다. 그 후, 통신 인터페이스는 현재 원하는 콘텐츠로서의 상기 예측된 추가 콘텐츠에 대한 요청인 제 2 요청을 생성한다. 상기 예측된 추가 콘텐츠가 캐싱 서버로부터 수신된다. 상기 캐싱 서버는 제 1 요청에 응답하여 원천 서버로부터 상기 추가 콘텐츠를 이전에 불러왔고 상기 추가 콘텐츠를 캐싱했었다.
덧붙여, 추가 콘텐츠 예측부는 추가 콘텐츠 우선순위화부를 포함할 수 있다. 상기 추가 콘텐츠 우선순위화부는 상기 추가 콘텐츠가 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는 가능도를 지시하는 가능도 지시를 생성한다.
미래의 콘텐츠 요청을 예측하는 클라이언트 애플리케이션, 상기 예측된 미래의 콘텐츠를 캐싱하는 캐싱 서버, 및 또 다른 추가 실시예에 대한 컴퓨터 프로그램 프로덕트가 또한 기재된다.
본 발명의 추가 특징 및 이점과 본 발명의 다양한 실시예의 구조 및 동작이 이하에서 첨부된 도면을 참조해 더 상세히 기재된다. 본 발명은 본 명세서에 기재된 특정 실시예에 한정되지 않는다. 이러한 실시예는 단지 설명 목적으로 제공된다. 본 명세서에 포함된 설명을 토대로 해당 분야의 통상의 기술자에게 추가 실시예가 자명할 것이다.
본 명세서에 포함되고 그 일부를 형성하는 첨부된 도면은 본 발명을 도시하며, 상세한 설명과 함께 본 발명의 원리를 설명하며 해당 분야의 통상의 기술자가 본 발명을 실시할 수 있도록 한다.
도 1은 하나의 예시적 실시예에 따르는, 사용자 장치로 콘텐츠를 전송하는 콘텐츠 전송 네트워크의 블록도이다.
도 2는 하나의 예시적 실시예에 따르는, 예측된 콘텐츠가 불러와지고 캐싱 서버에 의해 캐싱되는 콘텐츠 전송 네트워크의 블록도이다.
도 3은 하나의 예시적 실시예에 따르는, 클라이언트 애플리케이션에 의해 미래에 요청될 수 있는 콘텐츠를 캐싱 서버가 캐싱하기 위한 프로세스를 제공하는 흐름도이다.
도 4는 하나의 예시적 실시예에 따르는, 이전에 캐싱된 콘텐츠를 클라이언트 애플리케이션으로 제공하는 프로세스를 제공하는 흐름도이다.
도 5는 하나의 예시적 실시예에 따르는, 클라이언트 애플리케이션이, 원하는 콘텐츠를 요청 및 수신하고 미래에 요청될 수 있는 콘텐츠를 지시하기 위한 프로세스를 제공하는 흐름도이다.
도 6은 하나의 예시적 실시예에 따르는, 원하는 콘텐츠를 요청 및 수신하고 미래에 요청될 수 있는 콘텐츠를 지시하도록 구성된 클라이언트 애플리케이션을 갖는 사용자 장치의 블록도이다.
도 7은 하나의 예시적 실시예에 따르는, 추가 콘텐츠 우선순위화부를 포함하는 추가 콘텐츠 예측부의 블록도이다.
도 8은 하나의 예시적 실시예에 따르는, 콘텐츠가 미래에 클라이언트 애플리케이션에 의해 요청될 수 있는 가능도를 지시하기 위한 프로세스를 도시한다.
도 9는 하나의 예시적 실시예에 따르는, 캐싱 서버의 블록도이다.
도 10은 하나의 예시적 실시예에 따르는, 요청 우선순위화부를 포함하는 콘텐츠 리트리버의 블록도이다.
도 11은 하나의 예시적 실시예에 따르는, 클라이언트 애플리케이션에 의해 미래에 요청될 수 있는 콘텐츠에 대한 원천 서버로의 요청을 우선순위화하기 위한 프로세스를 도시한다.
도 12는 본 발명의 실시예를 구현하기 위해 사용될 수 있는 예시적 컴퓨터의 블록도이다.
본 발명의 특징 및 이점이 도면과 함께 이하의 상세한 설명으로부터 더 자명해질 것이며, 도면 전체에서 유사한 도면부호는 대응하는 요소를 식별한다. 도면에서, 일반적으로 유사한 번호는 동일한, 기능이 유사한, 및/또는 구조가 유사한 요소를 지칭한다. 요소가 먼저 등장한 도면이 대응하는 도면 부호의 가장 왼쪽 숫자로 표시된다.
I. 도입
본 명세서는 본 발명의 특징을 포함하는 하나 이상의 실시예를 개시한다. 개시된 실시예(들)은 본 발명의 예시에 불과하다. 본 발명의 범위는 개시된 실시예(들)에 한정되지 않는다. 본 발명은 이하의 특허청구범위에 의해 정의된다.
명세서에서, "하나의 실시예", "실시예", "예시적 실시예" 등의 언급은 기재된 실시예가 특정 특징, 구조, 또는 특성을 포함할 수 있지만, 모든 실시예가 반드시 상기 특정 특징, 구조, 또는 특성을 포함해야 하는 것은 아님을 나타낼 수 있다. 덧붙여, 이러한 구문이 반드시 하나의 동일한 실시예를 지칭하는 것은 아니다. 덧붙여, 특정 특징, 구조, 또는 특성이 하나의 실시예와 관련하여 기재될 때, 명시적으로 기재되거나 그렇지 않거나 관계없이, 해당 분야의 통상의 기술자의 지식의 범위 내에서, 이러한 특징, 구조, 또는 특성이 다른 실시예와 관련하여 발휘될 수 있음이 자명하다.
본 발명의 다양한 예시적 실시예가 이하에서 기재된다. 본 명세서에 제공된 임의의 섹션/서브섹션 제목은 한정을 의도한 것이 아니다. 실시예는 본 명세서 전체에서 기재되며, 임의의 섹션/서브섹션에 어떠한 유형의 실시예라도 포함될 수 있다.
II . 예시적 실시예
콘텐츠 전송 네트워크(CDN: content delivery network)는 다양한 네트워크 노드에 위치하는 데이터의 복사본을 포함하는 컴퓨터의 네트워크이다. CDN은 원천 서버(origin server)와 최종 사용자 컴퓨터 간 데이터를 위한 인터페이스를 제공한다. 원천 서버는 콘텐츠의 주 소스이며, CDN의 서버는 최고 수요를 갖는 원천 서버의 콘텐츠의 복사본을 캐싱한다. 전략적으로 상기 CDN의 서버는 원천 서버보다 최종 사용자 컴퓨터에게 더 가까이 배열될 수 있다. 상기 최종 사용자 컴퓨터는 원천 서버로부터 직접 데이터를 액세스할 필요 없이 상기 CDN의 서버에서 높은 수요의 데이터를 액세스할 수 있다. 따라서 CDN은 액세스 대역폭을 증가, 리던던시를 증가, 및 액세스 대기시간을 감소시킴으로써 데이터의 액세스를 개선한다. CDN에 캐싱될 수 있는 콘텐츠의 유형은 웹 객체(텍스트, 그래픽, URL 및 스크립트), 다운로드 가능한 객체(미디어 파일, 소프트웨어, 문서), 애플리케이션, 실시간 스트리밍 미디어, 및 데이터베이스 질의(database query)를 포함한다.
콘텐츠(가령, 맵 타일)가 사용자 컴퓨팅 장치에 있는 웹 브라우저로 더 빠르게 제공될 수 있도록 하는 다양한 기법이 개발되었다. 첫 번째 기법에 따르면, 온라인 애플리케이션을 위한 원천 서버가 미래의 콘텐츠 요청을 예측할 수 있다. 예측된 미래의 콘텐츠는 실제로 요청될 때 사용자 컴퓨팅 장치에 의해 더 빠르게 액세스될 수 있도록 CDN에 사전-캐싱될 수 있다. 두 번째 기법에 따르면, 클라이언트 웹 브라우저가 미래에 원할 수 있는 콘텐츠가 무엇인지를 예측할 수 있고, (가령, AJAX(비동기 자바스크립트(asynchronous JavaScript)) 기법을 이용해) 상기 콘텐츠를 사용자 컴퓨팅 장치에 있는 웹 브라우저로 사전-인출(pre-fetch)할 수 있다. 예를 들어, 사용자는 컴퓨팅 장치에서 일련의 이미지를 보기(view) 위해 웹 브라우저를 사용할 수 있다. 이미지를 볼 때마다, 볼 다음 이미지가 원천 서버에서 예측될 수 있고, 예측된 다음 이미지가 웹 브라우저로 사전-인출되어 현재 이미지에서 다음 이미지로의 매끄럽고 순간적인 전이가 가능해질 수 있다. 세 번째 기법에 따르면, CDN 서버가 사용자 컴퓨팅 장치에 의한 미래의 콘텐츠 요청을 예측할 수 있고, 예측된 미래의 콘텐츠를 CDN에 사전-캐싱할 수 있다.
그러나 이들 기법은 단점을 가진다. 예를 들어, 원천 서버가 미래의 콘텐츠를 예측하게 하는 것은 사전-캐싱될 콘텐츠가 미리 결정되어야 한다는 단점을 가진다. 콘텐츠를 웹 브라우저로 사전-인출하는 것과 관련하여, 사용자가 (가령, 모바일 애플리케이션에서와 같이) 데이터 전송을 위한 비용을 발생시키거나 제한된 대역폭을 갖는 경우, 이러한 사전-캐싱은 허용될 수 없거나 및/또는 바람직한 성능을 제시하지 못할 수 있다. 또한, CDN이 미래의 콘텐츠를 예측하고 사전-캐싱하게 하는 것과 관련하여, CDN은 미래의 콘텐츠 요청을 추론할 수 있도록 자신이 수신한 콘텐츠 요청의 유형을 이해할 만큼 매우 정교해야 할 것이다.
본 발명의 실시예는 이러한 단점을 극복한다. 하나의 실시예에서, 미래에 원할 수 있는 콘텐츠를 예측하기 위한 로직이 사용자 컴퓨팅 장치에 있는 클라이언트 애플리케이션(가령, 웹 브라우저 또는 그 밖의 다른 클라이언트 애플리케이션)에서 구현될 수 있다. 따라서 로직은 클라이언트 애플리케이션에 더 특정하게 맞춤 구성될 수 있고, 클라이언트 애플리케이션이 진화함에 따라 (가령, 업데이트를 통해) 진화할 수 있다.
덧붙여, 하나의 실시예에서, 예측된 미래의 콘텐츠가 웹 브라우저에서 사전-캐싱되는 것이 아니라 CDN 내 스토리지(storage)에 캐싱될 수 있다. CDN 내 스토리지로 사전-캐싱하는 것은 웹 브라우저로 전송되는 데이터를 그다지 증가시키지 않으며, 따라서 웹 브라우저 성능에 부정적인 영향을 미치지 않고, 데이터 전송이 비용을 발생시키거나 제한된 대역폭이 제공되는 문제를 갖지 않는다.
따라서 실시예에 의해 콘텐츠가 클라이언트 애플리케이션 자체에서가 아니라 CDN의 캐싱 서버에 사전-캐싱될 수 있다. 비지니스 로직이 어느 콘텐츠가 사전-캐싱될 것인지를 결정하는 클라이언트 애플리케이션 내에 위치하도록 가능해진다. 클라이언트 애플리케이션은 사용자 맥락/행동 및/또는 그 밖의 다른 인자를 기초로 직접 어느 콘텐츠가 사전-캐싱될 것인지에 대해 CDN에게 힌트(hint)를 줄 수 있다. 이용 가능한 용량에 따라 CDN이 사전-캐싱 요청을 우선순위화(prioritize)할 수 있도록, 선택사항으로서 사전-캐싱 힌트는 콘텐츠가 미래에 사용될 가능도(likelihood)의 지시를 포함할 수 있다.
실시예는 임의의 유형의 CDN에서 구현될 수 있다. 예를 들어, 도 1은 하나의 예시적 실시예에 따라, 사용자 장치로 콘텐츠를 전달하는 CDN(100)의 블록도를 도시한다. CDN(100)은 콘텐츠 전송 네트워크의 예시적 유형으로서 도시되며 이에 한정되지 않는다. 도 1에 도시된 바와 같이 CDN(100)은 원천 서버(102) 및 제 1 캐싱 서버 및 제 2 캐싱 서버(104a 및 104b)를 포함한다. 덧붙여, 도 1에 도시된 바와 같이, CDN(100)은 콘텐츠를 제 1 내지 제 4 사용자 장치(106a-106d)로 전송한다. 설명 목적으로, 도 1에 하나의 원천 서버(102), 2개의 캐싱 서버(104a 및 104b), 및 4개의 사용자 장치(106a-106d)가 도시되어 있지만, 도 1의 이들 특징부는 임의의 개수로 존재할 수 있는데, 예를 들어, 하나 이상의 추가적인 원천 서버, 하나 이상의 추가적인 캐싱 서버, 및/또는 하나 이상의 추가적인 사용자 장치, 가령, 수 십, 수 백, 수 천, 및 심지어 더 많은 개수의 서버 및/또는 사용자 장치가 존재할 수 있다. 하나의 실시예에서, 캐싱 서버(104a 및 104b)가 캐싱 서버 클러스터(선택사항으로서 추가 캐싱 서버)에 포함되거나 포함되지 않을 수 있으며 어떠한 개수의 캐싱 서버 클러스터라도 존재할 수 있다.
사용자 장치(106a-106d)는 각각 임의의 유형의 정지형(stationary) 또는 이동형(mobile) 컴퓨팅 장치, 가령, 데스크톱 컴퓨터(가령, 개인 컴퓨터 등), 모바일 컴퓨터 또는 컴퓨팅 장치(가령, Palm® 장치, RIM Blackberry® 장치, 개인 디지털 보조기(PDA), 랩톱 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터(가령, Apple iPad™), 노트북 등), 스마트 폰(가령, Apple iPhone, Google Android™ 전화기, Microsoft Windows® 전화기 등), 또는 그 밖의 다른 유형의 컴퓨팅 장치일 수 있다.
도 1에 도시된 바와 같이, 원천 서버(102) 및 캐싱 서버(104a 및 104b)가 네트워크(108a)를 통해 통신 가능하게 연결되고, 캐싱 서버(104a 및 104b) 및 사용자 장치(106a-106d)가 네트워크(108b)를 통해 통신 가능하게 연결된다. 네트워크(108a 및 108b)는 개별 네트워크들이거나 단일 네트워크에 포함될 수 있다. 네트워크(108a 및 108b)의 예시로는 LAN(local area network, 로컬 영역 네트워크), WAN(wide area network, 광역 네트워크), 또는 네트워크들의 조합, 가령, 인터넷이 있다. 네트워크(108a 및 108b)에 포함될 수 있는 통신 링크의 예시는 IEEE 802.11 무선 LAN (WLAN) 무선 링크, Wi-MAX(Worldwide Interoperability for Microwave Access) 링크, 셀룰러 네트워크 링크, 무선 PAN(personal area network, 개인 영역 네트워크) 링크(가령, Bluetooth™ 링크), 이더넷 링크, USB(universal serial bus, 전역 직렬 버스) 링크 등이 있다. 원천 서버(102) 및 캐싱 서버(104a 및 104b) 각각은 본 명세서에 기재되거나 그 밖의 다른 방식으로 알려진 컴퓨팅 장치의 임의의 유형일 수 있다.
도 1에 도시된 바와 같이, 사용자 장치(106a-106d) 각각은 대응하는 하나씩의 클라이언트 애플리케이션(110a-110d)을 포함한다. 클라이언트 애플리케이션(110a-110d)은 CDN(100)을 통해 콘텐츠를 액세스하는 사용자 장치(106a-106d)에서 실행되는 애플리케이션이다. 클라이언트 애플리케이션(110a-110d)의 예시로는 웹 브라우저, 미디어 플레이어(가령, 비디오 플레이어, 이미지 뷰어, 오디오 플레이어 등), 및 그 밖의 다른 유형의 클라이언트 애플리케이션이 있다. 도 1에 도시된 바와 같이, 원천 서버(102)는 클라이언트 애플리케이션(110a-110d)에 의해 액세스되도록 요구될 수 있는 콘텐츠(112)를 스토리지에 저장한다. 콘텐츠(112)는 임의의 유형의 콘텐츠, 가령, 웹 객체(가령, 텍스트, 그래픽/이미지/비디오, URL(uniform resource locator), 스크립트 등), 다운로드 가능한 객체(가령, 미디어 파일, 소프트웨어, 문서 등), 애플리케이션, 실시간 스트리밍 미디어, 및 데이터베이스 데이터일 수 있다. 일부 경우, 클라이언트 애플리케이션(110a-110d)은 원천 서버(102)에서 직접 콘텐츠(112)를 액세스할 수 있다. 덧붙여, 캐싱 서버(104a-104b) 각각이 콘텐츠(112)의 부분을 각각 캐싱된 콘텐츠(114a) 및 캐싱된 콘텐츠(114b)로서 캐싱할 수 있다. 따라서 일부 경우, 클라이언트 애플리케이션(110a-110d)은 병목(bottleneck)일 수 있는 원천 서버(102)로부터 직접 콘텐츠(112)를 획득해야 하는 것이 아니라, 캐싱 서버(104a 및 104b)에서 콘텐츠(112)를 캐싱된 콘텐츠(114a 및 114b)로서 액세스할 수 있다.
예를 들어, 도 1에 도시된 바와 같이, 사용자 장치(106a)의 클라이언트 애플리케이션(110a)이 콘텐츠 요청(116)을 캐싱 서버(104a)로 전송할 수 있다. 콘텐츠 요청(116)은 클라이언트 애플리케이션(110a)에 의해 미래에 요청될 것으로 예측되는 콘텐츠와 클라이언트 애플리케이션(110a)이 즉시 원하는 콘텐츠를 지시(indicate)한다. 이러한 방식으로 클라이언트 애플리케이션(110a)은 캐싱 서버(104a)로 미래에 요청될 수 있는, 따라서 캐싱 서버(104a)에 의해 캐싱될 것이 바람직할 수 있는 콘텐츠를 전달한다. 도 1의 실시예에서, 콘텐츠 요청(116)은 클라이언트 애플리케이션(110a)이 원하는 콘텐츠와 클라이언트 애플리케이션(110a)에 의해 미래에 요청될 것으로 예측되는 콘텐츠 모두를 지시한다. 또 다른 실시예에서, 콘텐츠 요청(116)이 클라이언트 애플리케이션(110a)에 의해 미래에 요청될 것으로 예측되는 콘텐츠를 지시할 수 있고, 클라이언트 애플리케이션(110a)이 원하는 콘텐츠(desired content)는 클라이언트 애플리케이션(110a)에서 캐싱 서버(104a)로 전송되는 별도 요청에서 지시될 수 있다.
캐싱 서버(104a)는 원천 서버(102)로 전송되는 콘텐츠 요청(118)을 생성하여 콘텐츠 요청(116)에서 지시되는 예측된 미래의 콘텐츠를 요청할 수 있다. 클라이언트 애플리케이션(110a)에 의해 요청된 원하는 콘텐츠(desired content)가 캐싱 서버(104a)에 아직 캐싱되어 있지 않은 경우, 캐싱 서버(104a)는 콘텐츠 요청(118)으로 원하는 콘텐츠를 지시하거나, 원천 서버(102)(또는 또 다른 원천 서버)로 원하는 콘텐츠에 대한 별도 요청을 전송할 수 있다. 콘텐츠 요청(118)에 대한 응답(120)으로, 원천 서버(102)는 콘텐츠(112)의 콘텐츠를 캐싱 서버(104a)로 전송할 수 있다. 응답(120)은 원하는 콘텐츠 및 예측된 미래의 콘텐츠를 포함할 수 있다. 대안적으로, 원하는 콘텐츠와 예측된 미래의 콘텐츠가 개별 전송으로 원천 서버(102)에서 캐싱 서버(104a)로 전송되거나, 원하는 콘텐츠와 예측된 미래의 콘텐츠가 서로 다른 원천 서버로부터 전송될 수 있다. 캐싱 서버(104a)는 원하는 콘텐츠 및 예측된 미래의 콘텐츠를 캐싱된 콘텐츠(114a)로서 캐싱할 수 있고, 원하는 콘텐츠를 원하는 콘텐츠(122)로서 클라이언트 애플리케이션(110a)으로 전송할 수 있다. 그 후 클라이언트 애플리케이션(110a)이 캐싱 서버(104a)로부터 예측된 미래의 콘텐츠인 콘텐츠를 요청한다면, 캐싱 서버(104a)가 예측된 미래의 콘텐츠를 포함하는 캐싱된 콘텐츠(114a)를 클라이언트 애플리케이션(110a)으로 전송할 수 있다. 예측된 미래의 콘텐츠를 캐싱 서버(104a 및 104b)에 캐싱하기 때문에, 클라이언트 애플리케이션(110b-110d)이 캐싱 서버(104a 및 104b) 중 임의의 하나 또는 둘 모두와 유사하게 상호대화하여 원천 서버(102)의 콘텐츠를 종래의 기법보다 더 효율적인 방식으로 수신할 수 있다.
앞서 기재된 바와 같이, 하나의 실시예에서, 클라이언트 애플리케이션은 미래에 액세스될 콘텐츠를 예측할 수 있고, 예측된 콘텐츠는 더 빠른 응답을 위해 캐싱 서버에 캐싱될 수 있다. 하나의 실시예에서, 도 1의 클라이언트 애플리케이션(110a-110d)이 콘텐츠를 예측할 수 있고, 예측된 미래의 콘텐츠를 캐싱될 것이라고 캐싱 서버(104a 및 104b)로 지시할 수 있다. 예를 들어, 도 2는 예시적 실시예에 따라, CDN(200)의 블록도를 도시한다. 도 2에 도시된 바와 같이, CDN(200)은 원천 서버(102), 캐싱 서버(202), 및 사용자 장치(106a)를 포함한다. 캐싱 서버(202)는 도 1의 캐싱 서버(104a 및 104b) 중 하나의 예이다. 도 2에 도시된 바와 같이, 사용자 장치(106a)는 클라이언트 애플리케이션(204)을 포함하고 클라이언트 애플리케이션(204)은 추가 콘텐츠 예측부(additional content predictor)(208)를 포함한다. 클라이언트 애플리케이션(204)은 도 1의 클라이언트 애플리케이션(110a-110d) 중 하나의 일례이다. 도 2에서, 클라이언트 애플리케이션(204)은 다음에 요청될 수 있는 콘텐츠를 예측하도록 구성되고, 캐싱 서버(202)에 의해 예측되는 콘텐츠가 불러와지고 캐싱된다.
도 2는 도 3과 관련하여 다음과 같이 기재된다. 도 3은 하나의 실시예에 따라, 캐싱 서버가 클라이언트 애플리케이션에 의해 미래에 요청될 수 있는 콘텐츠를 캐싱하기 위한 프로세스를 제공하는 프로세스를 제공하는 흐름도(300)를 도시한다. 하나의 실시예에서, 흐름도(300)는 도 2의 캐싱 서버(202)에 의해 수행될 수 있다. 하나의 실시예에서, 흐름도(300)는 캐시 스토리지를 공유하는 복수의 캐싱 서버에 의해 공동으로 수행될 수 있다. 덧붙여, 원천 서버와 관련된 흐름도(300)에서 단일 원천 서버 또는 복수의 원천 서버와의 통신이 수행될 수 있다. 추가 구조적 및 동작적 실시예가 흐름도(300) 및 캐싱 서버(202)에 관한 이하의 기재를 기초로 하면 자명해질 것이다.
흐름도(300)는 단계(302)에서 시작한다. 단계(302)에서, 원하는 콘텐츠에 대한 요청이 사용자 장치의 클라이언트 애플리케이션으로부터 수신되며, 상기 요청은 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는, 상기 원하는 콘텐츠와 관련된 추가 콘텐츠를 지시한다. 예를 들어, 도 2에 도시된 바와 같이, 캐싱 서버(202)는 사용자 장치(106a)의 클라이언트 애플리케이션(204)으로부터 제 1 원하는 콘텐츠 요청(210)을 수신할 수 있다. 제 1 원하는 콘텐츠 요청(210)은 원하는 콘텐츠, 가령, 맵(map) 중 클라이언트 애플리케이션(204)을 이용하는 사용자가 보고 있는 한 맵 타일(map tile), 일련의 이미지들 중 클라이언트 애플리케이션(204)을 이용하는 사용자가 보고 있는 한 이미지, 비디오 객체(가령, 비디오 파일) 중 클라이언트 애플리케이션(204)을 이용하는 사용자가 보고 있는 한 비디오 프레임, 오디오 객체(가령, 오디오 파일) 중 클라이언트 애플리케이션(204)을 이용하는 사용자가 재생 중인 한 오디오 프레임, 클라이언트 애플리케이션(204)을 이용하는 사용자가 볼 웹 페이지의 콘텐츠 아이템, 및/또는 본 명세서의 다른 부분에 기재되거나 그 밖의 다른 방식으로 알려진 그 밖의 다른 콘텐츠에 대한 요청이다.
덧붙여, 제 1 원하는 콘텐츠 요청(210)은 클라이언트 애플리케이션(204)에 의해 후속적으로 요청될 수 있는 상기 원하는 콘텐츠와 관련된 추가 콘텐츠의 지시를 포함한다. 하나의 실시예에서, 클라이언트 애플리케이션(204)의 추가 콘텐츠 예측부(208)가 클라이언트 애플리케이션(204)에 의해 후속적으로 요청될 수 있는, 상기 원하는 콘텐츠와 관련된 추가 콘텐츠를 예측한다. 예를 들어, 예측된 추가 콘텐츠는 사용자가 보고 있는 맵 중, 사용자가 다음 번에 볼 것으로 예측되는 하나 이상의 추가 맵 타일, 사용자가 보고 있는 일련의 이미지 중, 사용자가 다음 번에 볼 것으로 예측되는 하나 이상의 추가 이미지, 사용자가 보고 있는 비디오 객체 중, 상기 사용자가 다음 번에 볼 것으로 예측되는 하나 이상의 추가 비디오 프레임, 사용자가 재생하고 있는 오디오 객체 중, 다음 번에 재생될 것으로 예측되는 하나 이상의 추가 오디오 프레임, 다음 번에 볼 것으로 예측되는, 웹 페이지에 의해 참조되는 하나 이상의 추가 콘텐츠 아이템 등일 수 있다. 예측된 추가 콘텐츠의 지시가 클라이언트 애플리케이션(204)에 의한 제 1 원하는 콘텐츠 요청(210)에 포함된다.
제 1 원하는 콘텐츠 요청(210)(및 이에 대한 응답(들))이 클라이언트 애플리케이션(204)과 캐싱 서버(202) 간의 하나 이상의 통신 연결(가령, TCP 연결)에 포함될 수 있다. 클라이언트 애플리케이션(204)과 캐싱 서버(202) 간에 임의의 개수의 연결이 형성될 수 있고 각각의 연결은 원하는 콘텐츠에 대한 요청을 포함하거나 및/또는 하나 이상의 예측되는 추가 콘텐츠 아이템을 지시할 수 있다. 일부 경우, 예측되는 미래의 콘텐츠가 아직 캐싱되지 않은 동안 원하는 콘텐츠는 캐싱 서버(202)에 이미 캐싱될 수 있다. 이러한 경우, 캐싱 서버(202)에 의해, 원천 서버로부터 예측된 미래의 콘텐츠만 요청될 수 있다(즉, 캐싱 서버(202)에 이미 캐싱된 원하는 콘텐츠는 원천 서버로부터 요청될 필요가 없다).
도 3을 다시 참조하면, 단계(304)에서, 적어도 지시된 추가 콘텐츠에 대한 요청이 원천 서버로 전송된다. 예를 들어, 도 2에 도시된 바와 같이, 캐싱 서버(202)는 제 1 원하는 콘텐츠 요청(210)에서 지시된 추가 콘텐츠를 지시하는 서버 요청(212)을 전송할 수 있다. 원천 서버(102)에 의해 서버 요청(212)이 수신된다. 원하는 콘텐츠가 캐싱 서버(202)에 의해 아직 캐싱되지 않은 경우, 캐싱 서버(202)는 제 1 원하는 콘텐츠 요청(210)에서 지시되는 원하는 콘텐츠에 대한 요청을 원천 서버(102)로 전송할 수 있다. 하나의 실시예에서, 서버 요청(212)은 예측된 추가 콘텐츠에 대한 요청 및 원하는 콘텐츠에 대한 요청 모두를 포함할 수 있다.
단계(306)에서, 원천 서버로부터 추가 콘텐츠가 수신된다. 예를 들어, 서버 요청(212)에 응답하여, 원천 서버(102)는, 요청 받은 경우, 원하는 콘텐츠를 포함하는 서버 응답(214)을 전송할 수 있다. 예를 들어, 원천 서버(102)가 원천 서버(102)와 연관된 스토리지 내 원하는 콘텐츠를 액세스할 수 있다. 캐싱 서버(202)는 원천 서버(102)로부터 서버 응답(214)을 수신한다. 덧붙여, 원천 서버(102)는 원천 서버(102)와 연관된 스토리지 내 예측된 추가 콘텐츠를 액세스하고, 서버 응답(214)으로 또는 개별 응답으로 예측된 추가 콘텐츠를 캐싱 서버(202)로 전송할 수 있다.
단계(308)에서, 원하는 콘텐츠가 사용자 장치에 있는 클라이언트 애플리케이션으로 전송된다. 예를 들어, 도 2에 도시된 바와 같이, 캐싱 서버(202)는 제 1 원하는 콘텐츠 응답(216)으로 클라이언트 애플리케이션(204)에게 요청된 원하는 콘텐츠를 전송할 수 있다.
단계(310)에서, 추가 콘텐츠가 캐싱된다. 예를 들어, 도 2에 도시된 바와 같이, 캐싱 서버(202)는 스토리지(222)를 포함하고, 원천 서버(102)로부터 서버 응답(214)으로 수신된 예측된 추가 콘텐츠가 캐싱된 콘텐츠(224)로서 스토리지(222)에 캐싱될 수 있다. 스토리지(222)는 콘텐츠를 캐싱하기 위한 임의의 유형의 스토리지 메커니즘, 가령, (가령, 하드 디스크 드라이브 내) 자기 디스크, (광학 디스크 드라이브 내) 광학 디스크, (테이프 드라이브 내) 자기 테이프, 메모리 장치, 가령, RAM(랜덤 액세스 메모리) 장치 등, 및/또는 그 밖의 다른 임의의 적합한 유형의 저장 매체 중 하나 이상을 포함할 수 있다. 덧붙여, 하나의 실시예에서 스토리지(222)는 복수의 캐싱 서버들 간에 공유될 수 있다.
흐름도(300)에 따라, 클라이언트 애플리케이션이 CDN에게 미래에 원할 수 있는 추가 콘텐츠의 예측(prediction)을 알렸고, 상기 예측된 추가 콘텐츠가 CDN에(가령, CDN의 캐싱 서버(402)에) 사전-캐싱된다. 이 사전-캐싱은 후속적으로 실제로 요청되는 콘텐츠에 대한 캐시 적중율을 증가시킴으로써, 최종 사용자 경험을 전체적으로 개선한다. 모든 사전-캐싱되는 콘텐츠가 반드시 사용되어야 할 것은 아니며, 선택사항으로서, 사전-캐싱 요청은 정규 CDN 콘텐츠 요청보다 낮게 우선순위화될 수 있다. 이러한 우선순위화의 예시적 실시예가 이하에서 더 기재된다. 사전-캐싱의 이점은, 존재하는 경우, 전체 사용자 경험을 개선시키는 예비 용량(spare capacity)을 더 잘 활용하는 것이다. 우선순위화(가령, 가능도 지시자(likelihood indicator))의 사용이 사전-캐싱을 최적화하는 데 도움이 된다.
예를 들어, 도 4는 예시적 실시예에 따라, 이전에 캐싱된 콘텐츠(previously cached content)를 클라이언트 애플리케이션에게 제공하기 위한 프로세스를 제공하는 흐름도(400)를 도시한다. 예를 들어, 하나의 실시예에서, 흐름도(400)는 도 3의 흐름도(300)를 뒤 따른다. 이하에서 흐름도(400)가 도 2와 관련하여 기재된다.
흐름도(400)는 단계(402)로 시작한다. 단계(402)에서, 클라이언트 애플리케이션으로부터 추가 콘텐츠에 대한 요청을 포함하는 제 2 요청이 수신된다. 예를 들어, 도 2에 도시된 바와 같이, 캐싱 서버(202)는 사용자 장치(106a)의 클라이언트 애플리케이션(204)으로부터 제 2 원하는 콘텐츠 요청(218)을 수신할 수 있다. 상기 제 2 원하는 콘텐츠 요청(218)은 미래에 클라이언트 애플리케이션(204)에 의해 아마도 요청될 것으로 이전에 예측됐고, 제 1 원하는 콘텐츠 요청(210)(또는 그 밖의 다른 이전의 원하는 콘텐츠 요청)에서 지시됐던 클라이언트 애플리케이션(204)에 대한 콘텐츠(가령, 맵 타일, 이미지, 비디오, 오디오, 웹 페이지 등)에 대한 요청이다.
단계(404)에서, 캐싱된 추가 콘텐츠가 사용자 장치의 클라이언트 애플리케이션으로 서비스(serve)된다. 하나의 실시예에서, 캐싱 서버(202)는 제 2 원하는 콘텐츠 요청(218)을 분석하여 상기 제 2 원하는 콘텐츠 요청에서 요청되는 임의의 콘텐츠가 이미 캐싱 서버(202)(가령, 스토리지(222))에 캐싱되어 있는지 여부를 결정할 수 있다. 예를 들어, 하나의 실시예에서, 캐싱 서버(202)는 콘텐츠 식별자(content identifier)(가령, 식별 번호, 가령, 해시 값(hash value) 등)를 상기 스토리지(222)에 캐싱된 콘텐츠로 맵핑하는 캐싱된 콘텐츠 맵 또는 그 밖의 다른 데이터 구조를 액세스할 수 있다. 캐싱 서버(202)는 원하는 콘텐츠에 대한 제 2 원하는 콘텐츠 요청(218) 내의 수신된 콘텐츠 식별자를 캐싱된 콘텐츠 맵 내 콘텐츠 식별자와 비교하여, 원하는 콘텐츠가 이미 캐싱되어 있는지 여부를 결정할 수 있다. 원하는 콘텐츠에 대한 콘텐츠 식별자가 캐싱된 콘텐츠 맵에서 발견된 경우, 원하는 콘텐츠가 캐싱 서버(202)에 이미 캐싱되어 있다. 이러한 경우, 캐싱 서버(202)는 스토리지(222) 내 캐싱된 콘텐츠를 (가령, 캐싱된 콘텐츠(224)로서) 액세스하고, 상기 캐싱된 콘텐츠를 캐싱된 콘텐츠 응답(220)의 전송을 통해 클라이언트 애플리케이션(204)에게 서비스할 수 있다.
제 2 원하는 콘텐츠 요청(218)에서 지시되는 원하는 콘텐츠가 캐싱 서버(202)에 이미 캐싱되어 있지 않는 경우, 앞서 흐름도(300)의 단계(304 및 306)(도 3)와 관련하여 기재된 바와 같이, 캐싱 서버(202)는 원천 서버(102)로부터 원하는 콘텐츠를 요청할 수 있다. 덧붙여, 선택사항으로서 제 2 원하는 콘텐츠 요청(218)은, 제 1 원하는 콘텐츠 요청(210)과 유사한 방식으로, 추가 콘텐츠 예측부(208)에 의해 후속적으로 원할 것으로 예측되는 또 다른 추가 콘텐츠를 지시할 수 있다. 이러한 경우, 캐싱 서버(202)는, 흐름도(300)의 단계(304, 306, 및 310 )와 관련해 앞서 기재된 바와 유사한 방식으로, 지시된 또 다른 추가 콘텐츠를 원천 서버(102)로부터 요청하고, 지시된 또 다른 추가 콘텐츠를 다음 번 콘텐츠 요청을 위해 스토리지(222)에 캐싱할 수 있다.
클라이언트 애플리케이션 및 캐싱 서버에 대한 예시적 실시예가 다음 서브섹션에서 기재된다.
A. 예시적 클라이언트 애플리케이션 실시예
앞서 기재된 바와 같이, 하나의 실시예에서, 클라이언트 애플리케이션(가령, 클라이언트 애플리케이션(204))은 미래에 액세스될 콘텐츠를 예측할 수 있고, 상기 예측된 콘텐츠는 더 빠른 응답을 위해 캐싱 서버에 캐싱될 수 있다. 예를 들어, 도 5는 하나의 예시적 실시예에 따라, 클라이언트 애플리케이션이 원하는 콘텐츠를 요청하고 수신하며 미래에 요청될 수 있어 캐싱되기 위한 콘텐츠를 지시하기 위한 프로세스를 제공하는 흐름도(500)를 도시한다. 하나의 실시예에서, 흐름도(500)는 도 2의 클라이언트 애플리케이션(204)에 의해 수행될 수 있다. 흐름도(500)는 도 6과 관련하여 기재된다. 도 6은 클라이언트 애플리케이션(204)의 예시적 실시예를 포함하는 사용자 장치(600)의 블록도를 도시한다. 도 6에 도시된 바와 같이, 클라이언트 애플리케이션(204)은 통신 인터페이스(602) 및 추가 콘텐츠 예측부(208)를 포함하고, 통신 인터페이스(602)는 요청 포맷터(request formatter)(604)를 포함한다. 추가 구조 및 동작적 실시예가 흐름도(500) 및 도 6의 클라이언트 애플리케이션(204)과 관련한 이하의 기재를 기초로 해당 분야의 통상의 기술자에게 자명해질 것이다.
흐름도(500)는 단계(502)로 시작한다. 단계(502)에서, 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는 원하는 콘텐츠와 관련된 추가 콘텐츠를 지시하는 원하는 콘텐츠에 대한 제 1 요청이 생성된다. 예를 들어, 도 6에 도시된 바와 같이, 클라이언트 애플리케이션(204)은, 앞서 기재된 바와 같이 원하는 콘텐츠에 대한 요청인 제 1 원하는 콘텐츠 요청(210)을 생성할 수 있다. 덧붙여, 앞서 기재된 바와 같이, 제 1 원하는 콘텐츠 요청(210)은 클라이언트 애플리케이션(204)에 의해 후속적으로 요청될 수 있는 원하는 콘텐츠와 관련된 추가 콘텐츠의 지시를 포함한다.
하나의 실시예에서, 클라이언트 애플리케이션(204)의 추가 콘텐츠 예측부(208)가 클라이언트 애플리케이션(204)에 의해 후속적으로 요청될 수 있는 원하는 콘텐츠와 관련된 추가 콘텐츠를 예측한다. 예를 들어, 도 6에 도시된 바와 같이, 추가 콘텐츠 예측부(208)는 원하는 콘텐츠 지시(desired content indication)(606)를 수신할 수 있다. 원하는 콘텐츠 지시(606)가 클라이언트 애플리케이션(204)에서 자체적으로 생성되거나, 및/또는 클라이언트 애플리케이션(204)에 의해 제공되는 사용자 인터페이스로 사용자에 의해 입력될 수 있다. 원하는 콘텐츠 지시(606)는 디스플레이, 재생, 또는 그 밖의 다른 방식으로 상호대화될 것이 원해지는 콘텐츠를 지시한다. 예를 들어, 원하는 콘텐츠 지시(606)는 맵 타일, 비디오 프레임, 오디오 프레임, 이미지, 웹 페이지 등 중 하나 이상을 (가령, URL, 파일이름 등에 의해) 지시할 수 있다. 추가 콘텐츠 예측부(208)는 원하는 콘텐츠 지시(606)에 의해 지시되는 원하는 콘텐츠를 기초로 추가 콘텐츠를 예측할 수 있고, 예측된 추가 콘텐츠를 예측된 추가 콘텐츠 지시(608)로서 출력할 수 있다.
예를 들어, 원하는 콘텐츠 지시(606)가 원하는 콘텐츠로서 보기 중인 맵의 한 맵 타일을 지시하는 경우, 추가 콘텐츠 예측부(208)는 상기 맵 중, 사용자가 후속적으로 볼 하나 이상의 추가 맵 타일을 예측할 수 있다. 이러한 경우, 추가 콘텐츠 예측부(208)는 지시된 맵 타일의 공간적으로 인접한 하나 이상의 맵 타일, 지시된 맵 타일 내의 맵 타일인 하나 이상의 맵 타일(줌 인), 지시된 맵 타일을 포함하는 맵 타일인 하나 이상의 맵 타일(줌 아웃), 및/또는 맵 중 사용자가 후속적으로 볼 가능성이 높은 그 밖의 다른 맵 타일을 지시하기 위해 예측된 추가 콘텐츠 지시(608)를 생성할 수 있다.
또 다른 예시에서, 원하는 콘텐츠 지시(606)가 일련의 이미지 중 한 이미지를 원하는 콘텐츠로서 지시하는 경우, 추가 콘텐츠 예측부(208)는 상기 일련의 이미지 중 사용자가 후속적으로 볼 하나 이상의 추가 이미지, 가령, 이미지 시퀀스 중 지시된 이미지의 (시간적 또는 공간적으로) 뒤 따르는 하나 이상의 이미지(가령, 이미지의 시퀀스의 나머지 전체, 지시된 이미지의 일부분(가령, 줌 인된 이미지), 전체 지시된 이미지를 포함하는 이미지(가령, 줌 아웃된 이미지) 등을 예측할 수 있다.
또 다른 예시에서, 원하는 콘텐츠 지시(606)가 비디오의 한 비디오 프레임을 원하는 콘텐츠로서 지시하는 경우, 추가 콘텐츠 예측부(208)는 비디오 중 사용자가 후속적으로 볼 하나 이상의 추가 비디오 프레임, 가령, 비디오의 하나 이상의 다음 번 비디오 프레임(가령, 비디오의 나머지 전체)을 예측할 수 있다.
또 다른 예시에서, 원하는 콘텐츠 지시(606)가 오디오 중 한 오디오 프레임을 원하는 콘텐츠로서 지시하는 경우, 추가 콘텐츠 예측부(208)는 오디오 중 사용자에 의해 후속적으로 재생될 하나 이상의 추가 오디오 프레임, 가령, 오디오의 하나 이상의 다음 번 오디오 프레임(가령, 오디오의 나머지 전체)을 예측할 수 있다.
또 다른 예시에서, 원하는 콘텐츠 지시(606)가 한 웹 페이지를 원하는 콘텐츠로서 지시하는 경우, 추가 콘텐츠 예측부(208)는 사용자가 후속적으로 볼 하나 이상의 추가 웹 페이지 또는 그 밖의 다른 웹 객체(가령, 이미지, 비디오, 오디오 등), 가령, 지시된 웹 페이지 내 링크된 하나 이상의 웹 페이지 또는 그 밖의 다른 웹 객체, 지시된 웹 페이지를 포함하는 웹사이트의 하나 이상의 웹 페이지 등을 예측할 수 있다.
도 6에 도시된 바와 같이, 통신 인터페이스(602)는 원하는 콘텐츠 지시(606) 및 예측된 추가 콘텐츠 지시(608)를 수신한다. 하나의 실시예에서, 요청 포맷터(604)는 원하는 콘텐츠 지시(606)에 의해 지시되는 원하는 콘텐츠 및 예측된 추가 콘텐츠 지시(608)에 의해 지시되는 예측된 추가 콘텐츠를 요청하기 위한 하나 이상의 요청을 생성한다. 통신 인터페이스(602)는 클라이언트 애플리케이션(204)으로부터 요청 포맷터(604)에 의해 생성되는 요청(들)을 제 1 원하는 콘텐츠 요청(210)으로서 전송하도록 구성된다. 하나의 실시예에서, 요청 포맷터(604)는 특정 통신 기법에 대해 바람직한 대로 임의의 포맷을 갖도록 요청(들)을 생성할 수 있다.
예를 들어, 하나의 실시예에서, 요청 포맷터(604)는 HTTP(hypertext transfer protocol) 요청 메시지의 형태로 된 요청을 생성할 수 있다. 이러한 하나의 실시예에서, HTTP 요청 메시지는 원하는 콘텐츠를 요청하도록 구성될 수 있고 예측된 추가 콘텐츠는 상기 HTTP 요청 메시지 내에서 임의의 적절한 방식으로 지시될 수 있다, 가령, 헤더에서 지시된다. 예를 들어, 예시적 HTTP 요청 메시지의 일부분이 다음과 같이 나타난다:
Figure 112014055326392-pct00001
이 예시에서, HTTP 요청 메시지는 서버로부터 웹 객체 "/images/logo.png"를 원하는 콘텐츠로서 요청하는 요청 라인을 포함한다. 덧붙여, 예시적 HTTP 요청 메시지는 2개의 URL, 즉 URL1 및 URL2를 예측된 추가 콘텐츠로서 지시하는 HTTP 헤더 "HINTS"를 포함한다. 이 예시에서, "URLl" 및 "URL2"는 각각 "HINTS" 헤더에서, 대응하는 예측된 추가 콘텐츠에 대응하는 완전한 URL(가령, http://tv.msn.com/tv/article.aspx?news=xyz" 등)로 대체될 수 있다. 2개의 URL이 상기의 예시적 헤더에서 나타나지만, 예측된 추가 콘텐츠의 임의의 개수의 아이템이 이러한 방식으로 URL 또는 그 밖의 다른 식별자에 의해 헤더에서 지시될 수 있다.
따라서, 하나의 실시예에서, 요청 포맷터(604)가 (가령, "GET" 명령을 이용해) 원하는 콘텐츠를 지시하고, 헤더(가령, "HINTS" 또는 예측된 추가 콘텐츠를 위한 또 다른 지정 유형의 헤더)에서 예측된 추가 콘텐츠를 지시하는 HTTP 요청 메시지를 생성할 수 있다. 또 다른 실시예에서, 원하는 콘텐츠 및 예측된 추가 콘텐츠가 요청 포맷터(604)에 의한 요청에서 그 밖의 다른 방식으로 지시될 수 있다. 상기의 예시에서 나타난 것처럼 단일 "HINTS" 헤더가 HTTP 요청 메시지에 존재하거나, 복수의 "HINTS" 헤더가 존재할 수 있다. 또한, 하나의 실시예에서, HTTP 요청 메시지는 어떠한 원하는 콘텐츠도 지시하지 않으면서 예측된 추가 콘텐츠를 지시할 수 있다(즉, 예측된 추가 콘텐츠만 특정/요청된다). 이러한 HTTP 요청 메시지에서, 예측된 추가 콘텐츠를 특정하기 위해 "GET" 명령이 사용되고 "HINTS" 또는 그 밖의 다른 헤더는 사용되지 않거나, 요청된 콘텐츠가 캐싱되어야 하지만 클라이언트에게 아직 반환(return)되지 않아야 함을 캐싱 서버에게 지시하기 위한 헤더(가령, "CACHEONLY" 헤더)가 존재할 수 있다.
통신 인터페이스(602)는 제 1 원하는 콘텐츠 요청(210)을 캐싱 서버로 전송할 수 있다. 실시예에서, 통신 인터페이스(602)는 HTTP 메시지로 된 제 1 원하는 콘텐츠 요청(210)을 전송하도록 구성되거나, 및/또는 해당 분야의 통상의 기술자에게 자명할 그 밖의 다른 방식으로 요청을 전달하도록 구성될 수 있다.
다시 도 5를 참조하면, 단계(504)에서, 상기 원하는 콘텐츠에 대한 제 1 요청에 대해 응답하여, 원천 서버로부터 원하는 콘텐츠를 불러온 캐싱 서버로부터 원하는 콘텐츠가 수신된다. 예를 들어, 도 6에 도시된 바와 같이, 제 1 원하는 콘텐츠 요청(210)에 응답하여 통신 인터페이스(602)가 캐싱 서버로부터 제 1 원하는 콘텐츠 응답(216)을 수신할 수 있다. 제 1 원하는 콘텐츠 응답(216)은 요청(210)으로 요청된 원하는 콘텐츠를 포함한다. 클라이언트 애플리케이션(204)은 디스플레이, 재생, 및/또는 그 밖의 다른 방식으로 사용자 장치(600)에서 사용자가 수신된 원하는 콘텐츠와 상호대화하게 할 수 있다.
단계(506)에서, 추가 콘텐츠에 대한 제 2 요청이 생성된다. 예를 들어, 도 6에 도시된 바와 같이, 클라이언트 애플리케이션(204)은 제 2 원하는 콘텐츠 요청(218)을 생성할 수 있다. 앞서 기재된 바와 같이, 제 2 원하는 콘텐츠 요청(218)은 클라이언트 애플리케이션(204)에 의해 후속적으로 요청될 것으로 이전에 요청됐고, 제 1 원하는 콘텐츠(210)에서 그렇게 지시됐던 클라이언트 애플리케이션(204)를 위한 콘텐츠(가령, 맵 타일, 이미지, 비디오, 오디오, 웹 페이지 등)에 대한 요청이다. 제 2 원하는 콘텐츠 요청(218)은 제 1 원하는 콘텐츠 요청(210)과 유사한 방식으로 생성될 수 있다. 예를 들어, 추가 콘텐츠 예측부(208)가, 디스플레이, 재생, 또는 그 밖의 다른 방식으로 상호대화되길 원하는 콘텐츠를 지시하는 제 2 원하는 콘텐츠 지시(606)를 수신할 수 있다. 선택사항으로서, 추가 콘텐츠 예측부(208)는 제 2 원하는 콘텐츠 지시(606)에 의해 지시되는 원하는 콘텐츠를 기초로 추가 콘텐츠를 예측하고 예측된 추가 콘텐츠를 제 2 예측된 추가 콘텐츠 지시(608)로서 출력할 수 있다. 통신 인터페이스(602)는 제 2 원하는 콘텐츠 지시(606)를 수신하고, 선택사항으로서 제 2 예측된 추가 콘텐츠 지시(608)를 수신한다. 하나의 실시예에서, 요청 포맷터(604)가 제 2 원하는 콘텐츠에 대한 요청을 생성하고, 선택사항으로서 생성된 요청에 제 2 예측된 추가 콘텐츠를 포함시킨다. 통신 인터페이스(602)는 클라이언트 애플리케이션(204)으로부터 요청을 제 2 원하는 콘텐츠 요청(218)으로서 전송하도록 구성된다.
단계(508)에서, 원하는 콘텐츠에 대한 제 1 요청에 응답하여 원천 서버로부터 추가 콘텐츠를 불러왔고 상기 추가 콘텐츠를 캐싱한 캐싱 서버로부터 추가 콘텐츠가 수신된다. 예를 들어, 도 6에 도시된 바와 같이, 통신 인터페이스(602)가 제 2 원하는 콘텐츠 요청(218)에서 지시되는 원하는 콘텐츠로서 캐싱된 콘텐츠를 포함하는 캐싱된 콘텐츠 응답(220)을 캐싱 서버로부터 수신할 수 있다. 상기 캐싱 서버는 이전에 원천 서버로부터 원하는 콘텐츠를 획득했고, 후속적으로 요청될 수 있는 경우 상기 원하는 콘텐츠를 캐싱했다.
앞서 기재된 바와 같이, 선택사항으로서, 캐싱되기 위한 콘텐츠 요청이 정규 CDN 콘텐츠 요청보다 낮게 우선순위화될 수 있다. 이러한 방식으로, 실제로 요청되는 콘텐츠가 캐싱 목적으로 요청되는 것에 불과한 콘텐츠보다 먼저 요청될 수 있다. 또한, 캐싱 목적으로 요청되며 실제로 요청될 가능성이 더 높은 콘텐츠가 캐싱 목적으로 요청되며 실제로 요청될 가능성이 더 낮은 콘텐츠보다 먼저 캐싱될 수 있다.
예를 들어, 도 7은 하나의 예시적 실시예에 따르는 추가 콘텐츠 우선순위화부(additional content prioritizer)(702)를 포함하는 추가 콘텐츠 예측부(208)의 블록도를 도시한다. 추가 콘텐츠 우선순위화부(702)는 클라이언트 애플리케이션에 의해 후속적으로 실제로 요청될 가능도가 얼마인지를 결정하기 위해 예측된 추가 콘텐츠를 분석하도록 구성된다. 예를 들어, 하나의 실시예에서, 추가 콘텐츠 우선순위화부(702)는 도 8의 단계(802)에 따라 동작할 수 있다. 단계(802)에서, 추가 콘텐츠가 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는 가능도를 지시하는 가능도 지시(likelihood indication)가 생성된다. 하나의 실시예에서, 각각의 예측된 추가 콘텐츠 아이템에 대해, 추가 콘텐츠 우선순위화부(702)가 추가 콘텐츠가 클라이언트 애플리케이션(204)에 의해 후속적으로 요청될 수 있는 가능도를 지시하는 대응하는 가능도 지시를 생성할 수 있다. 생성된 가능도 지시는 대응하는 예측된 추가 콘텐츠 아이템과 연관될 수 있고 캐싱 서버로 전송되는 원하는 콘텐츠 요청에 포함될 수 있다. 상기 캐싱 서버는 타 콘텐츠에 대해 예측된 추가 콘텐츠 아이템의 캐싱을 우선순위화하기 위해 가능도 지시를 사용할 수 있다. 덧붙여, 원천 서버가 예측된 콘텐츠의 캐싱 서버로의 제공을 우선순위화할 수 있도록, 캐싱 서버는 예측된 콘텐츠를 요청할 때 원천 서버로 가능도 지시를 전송할 수 있다.
추가 콘텐츠 우선순위화부(702)는 가능도 지시를 어떠한 방식으로도 생성할 수 있는데, 가령, 보고 있는 콘텐츠 및/또는 사용자 행동을 기초로 생성할 수 있다. 예를 들어, 가능도 지시는 서로 다른 콘텐츠 유형에 대해 서로 다르게 생성될 수 있다(가령, 맵 타일에 비해 비디오 프레임에 더 높은 가능도 지시를 할당하는 등이다). 또 다른 실시예에서, 가능도 지시는 실제로 요청된 콘텐츠에 대한 근접성(가령, 시간 및/또는 공간적 근접성)을 기초로 하여 추가 콘텐츠 우선순위화부(702)에 의해 서로 다르게 예측된 추가 콘텐츠에 대해 생성될 수 있다. 가령, 맵 예시에서, 현재 보는 중인 맵 타일에 바로 인접한 맵 타일에, 보는 맵으로부터 하나 이상의 중간 맵 타일에 의해 분리된 맵 타일에 비해 더 큰 값을 갖는 가능도 지시가 할당될 수 있다. 비디오 스트림의 바로 다음 비디오 프레임에 비디오 스트림의 늦은 비디오 프레임(가령, 더 늦은 시점이며 비디오 스트림 내에 위치하는 비디오 프레임)에 비해 비교적 높은 값을 갖는 가능도 지시가 할당될 수 있다. 이미지 스트림의 이미지 및/또는 오디오 스트림의 오디오 프레임이, 실제 구현에 따라 유사하게 및/또는 상이하게 처리될 수 있다. 웹 페이지에서, 웹 페이지의 상단에 가까이 위치하는 콘텐츠 아이템(가령, URL)에, 웹 페이지의 하단에 가까이 위치하는 콘텐츠 아이템에 비해 더 높은 값의 가능도 지시가 할당될 수 있다. 실시예에서, 특정 구현에서 바람직하도록, 가능도 지시는 다양한 방식으로 생성될 수 있으며, 임의의 적절한 값 및 값 범위(가령, 수치 범위, 텍스트 범위(가령, "고", "중", "저" 등)를 가질 수 있다. 사용자 행동과 관련하여, 사용자가 맵 상에서 특정 방향으로 패닝하는 중일 때, 상기 방향으로의 맵 타일의 미래에 요청될 가능도가 다른 타일의 가능도보다 높고, 따라서 더 높은 가능도 지시가 할당될 수 있다. 사용자가 비디오 또는 오디오를 고속 재생(fast forward)할 때, "다음" 프레임은 복수의 전방 프레임일 수 있으며, 따라서 스트림에서 복수의 전방 프레임에 바로 직후 프레임에 비해 비교적 높은 값을 갖는 가능도 지시가 할당될 수 있다.
예를 들어, 앞서 도시된 예시적 HTTP 메시지에서, 20의 값을 갖는 가능도 지시가 URL1에 대해 생성되었을 수 있고, 60의 값을 갖는 가능도 지시가 URL2에 대해 생성되었을 수 있다. 이러한 예시에서, 가능도 지시는 1-100의 범위의 값을 가질 수 있고, 낮은 가능도 값일수록 대응하는 예측된 추가 콘텐츠 아이템이 클라이언트 애플리케이션에 의해 미래에 실제로 요청될 낮은 가능도를 가지며, 높은 가능도 값일수록 대응하는 예측된 추가 콘텐츠 아이템이 클라이언트 애플리케이션에 의해 미래에 실제로 요청될 높은 가능도를 가짐을 의미한다. 따라서 이 예시에서, URL2은 URL1에 비해 미래에 클라이언트 애플리케이션에 의해 요청될 높은 가능도를 갖고 따라서 URL1 전에 캐싱될 수 있다.
B. 예시적 캐싱 서버 실시예
도 9는 예시적 실시예에 따르는 캐싱 서버(902)의 블록도를 나타낸다. 캐싱 서버(902)는 도 2에 도시된 캐싱 서버(202)의 하나의 예시이다. 도 2에 도시된 바와 같이, 캐싱 서버(902)는 콘텐츠 리트리버 모듈(content retriever module)(904), 콘텐츠 요청 파서(content request parser)(906), 콘텐츠 제공자 모듈(content provider module)(908), 및 스토리지(222)를 포함한다. 캐싱 서버(902)는 다양한 방식으로 예측된 미래의 콘텐츠를 사전-캐싱(pre-cache)할 수 있다. 예를 들어, 실시예에서, 캐싱 서버(902)는 흐름도(300 및 400)를 수행할 수 있다.
예를 들어, 콘텐츠 요청 파서(906)는 흐름도(300)의 단계(302)를 수행할 수 있고, 상기 단계에서,원하는 콘텐츠에 대한 요청이 사용자 장치 내 클라이언트 애플리케이션으로부터 수신되며, 상기 요청은 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는, 상기 원하는 콘텐츠와 관련된 추가 콘텐츠를 지시한다. 콘텐츠 요청 파서(906)는 제 1 원하는 콘텐츠 요청(210)을 수신하고 파싱(parse)하여 임의의 원하는 콘텐츠 및 임의의 예측된 추가 콘텐츠를 식별할 수 있다. 콘텐츠 요청 파서(906)는 제 1 식별된 원하는 콘텐츠 및 예측된 추가 콘텐츠(912)를 콘텐츠 리트리버 모듈(904)로 전송한다.
콘텐츠 리트리버 모듈(904)은 흐름도(300)의 단계(304)를 수행할 수 있고, 상기 단계에서, 지시된 추가 콘텐츠에 대한 요청이 원천 서버로 전송된다. 도 9에 도시된 바와 같이, 콘텐츠 리트리버 모듈(904)은 서버 요청(212)을 원천 서버로 전송할 수 있으며, 상기 서버 요청은 예측된 추가 콘텐츠를 지시하고, 원하는 콘텐츠(아직 캐싱되지 않은 경우)를 지시할 수 있다. 콘텐츠 리트리버 모듈(904)은 예측된 추가 콘텐츠에 대한 요청과 원하는 콘텐츠에 대한 요청 모두를 서버 요청(212)에 포함시키거나, 이들을 개별 통신으로 전송할 수 있다.
콘텐츠 리트리버 모듈(904)은 흐름도(300)의 단계(306)를 수행할 수 있으며, 상기 단계에서, 원하는 콘텐츠 및 추가 콘텐츠가 원천 서버로부터 수신된다. 콘텐츠 리트리버 모듈(904)은 원하는 콘텐츠(요청된 경우) 및 예측된 추가 콘텐츠를 포함하는, 원천 서버로부터의 서버 응답(214)을 수신하거나, 상기 원하는 콘텐츠 및 예측된 추가 콘텐츠를 개별 통신으로 수신할 수 있다.
콘텐츠 제공자 모듈(908)은 흐름도(300)의 단계(308)를 수행할 수 있고, 상기 단계에서, 원하는 콘텐츠가 사용자 장치의 클라이언트 애플리케이션으로 전송된다. 도 9에 도시된 바와 같이, 콘텐츠 리트리버 모듈(904)은 서버 응답(214)으로, 원천 서버로부터 수신된 원하는 콘텐츠를 포함하는 불러와진(retrieved) 원하는 콘텐츠(914)를 전송할 수 있다. 콘텐츠 제공자 모듈(908)은 불러와진 원하는 콘텐츠(914)를 수신할 수 있고, 제 1 원하는 콘텐츠 응답(216)으로 클라이언트 애플리케이션으로 원하는 콘텐츠를 전송할 수 있다.
콘텐츠 리트리버 모듈(904)은 흐름도(300)의 단계(310)를 수행할 수 있으며, 상기 단계에서 추가 콘텐츠는 캐싱된다. 도 9에 도시된 바와 같이, 콘텐츠 리트리버 모듈(904)은 스토리지(222)에 캐싱된 콘텐츠(224)로서 상기 예측된 추가 콘텐츠를 캐싱할 수 있다.
콘텐츠 요청 파서(906)는 흐름도(400)의 단계(402)(도 4)를 수행할 수 있고, 상기 단계에서, 추가 콘텐츠에 대한 요청을 포함하는 제 2 요청이 클라이언트 애플리케이션으로부터 수신된다. 도 9에 도시된 바와 같이, 콘텐츠 요청 파서(906)는 클라이언트 애플리케이션으로부터 제 2 원하는 콘텐츠 요청(218)을 수신할 수 있다. 콘텐츠 요청 파서(906)가 제 2 원하는 콘텐츠 요청(218)을 수신 및 파싱하여 임의의 원하는 콘텐츠 및 임의의 예측된 추가 콘텐츠를 식별할 수 있다. 콘텐츠 요청 파서(906)는 제 2 식별된 원하는 콘텐츠 및 예측된 추가 콘텐츠(916)를 콘텐츠 리트리버 모듈(904)로 전송한다. 도 9의 예시에서, 제 2 식별된 원하는 콘텐츠 및 예측된 추가 콘텐츠(916)가 제 1 식별된 원하는 콘텐츠의 예측된 추가 콘텐츠와 예측된 추가 콘텐츠(912)를 원하는 콘텐츠로서 포함한다.
콘텐츠 리트리버 모듈(904) 및 콘텐츠 제공자 모듈(908)은 흐름도(400)의 단계(404)를 수행할 수 있고, 상기 단계에서 캐싱된 추가 콘텐츠가 사용자 장치의 클라이언트 애플리케이션으로 서비스된다. 콘텐츠 리트리버 모듈(904)은 제 2 식별된 원하는 콘텐츠 및 예측된 추가 콘텐츠(916)를 분석하여, 여기서 요청된 임의의 콘텐츠가 스토리지(222)에 이미 캐싱되어 있는지 여부를 결정할 수 있다. 예를 들어, 하나의 실시예에서, 콘텐츠 리트리버 모듈(904)은 콘텐츠 식별자를 스토리지(222)에 캐싱된 콘텐츠에 맵핑하는 캐싱된 콘텐츠 맵 또는 앞서 기재된 그 밖의 다른 데이터 구조를 액세스할 수 있다. 콘텐츠 리트리버 모듈(904)이 원하는 콘텐츠가 스토리지(222)에 이미 캐싱되어 있다고 결정한 경우, 콘텐츠 리트리버 모듈(904)은 스토리지(222) 내 캐싱된 콘텐츠를 (가령, 캐싱된 콘텐츠(224)로서) 액세스할 수 있고, 상기 캐싱된 콘텐츠를 캐싱된 콘텐츠(918)로서 콘텐츠 제공자 모듈(908)로 제공할 수 있다. 콘텐츠 제공자 모듈(908)은 캐싱된 콘텐츠 응답(220)으로 클라이언트 애플리케이션으로 캐싱된 콘텐츠를 서비스할 수 있다.
제 2 식별된 원하는 콘텐츠에서 지시된 원하는 콘텐츠 및 예측된 추가 콘텐츠(916)가 스토리지(222)에 아직 캐싱되어 있지 않은 경우, 콘텐츠 리트리버 모듈(904)은 앞서 기재된 바와 같이 원천 서버로부터 원하는 콘텐츠를 요청할 수 있다. 덧붙여, 선택사항으로서 제 2 식별된 원하는 콘텐츠 및 예측된 추가 콘텐츠(916)가 후속적으로 요청될 것으로 예측된 또 다른 추가 콘텐츠를 지시할 수 있다. 이 경우, 콘텐츠 리트리버 모듈(904)은 원천 서버로부터 지시된 또 다른 추가 콘텐츠를 요청할 수 있고, 앞서 기재된 바와 같이, 다음 번 콘텐츠 요청을 위해 상기 지시된 또 다른 추가 콘텐츠를 스토리지(222)에 캐싱할 수 있다.
콘텐츠 리트리버 모듈(904), 콘텐츠 요청 파서(906), 및 콘텐츠 제공자 모듈(908)은, 해당 분야의 통상의 기술자라면 잘 알 적합한 통신 프로토콜 및 포맷, 가령, HTTP 메시지 등에 따라 요청을 생성하고 응답을 수신하도록 구성될 수 있다.
덧붙여, 앞서 기재된 바와 같이, 선택사항으로서 캐싱을 위한 콘텐츠 요청은 정규 CDN 콘텐츠 요청에 비해 우선순위화될 수 있다. 예를 들어, 도 10은 예시적 실시예에 따르는 요청 우선순위화부(1002)를 포함하는 도 9의 콘텐츠 리트리버 모듈(904)의 블록도를 도시한다. 요청 우선순위화부(1002)는 캐싱을 위한 콘텐츠 요청을 우선순위화하도록 구성된다. 예를 들어, 하나의 실시예에서, 요청 우선순위화부(1002)는 도 11의 단계(1102)에 따라 동작할 수 있다. 단계(1102)에서, 지시된 추가 콘텐츠에 대한 요청의 원천 서버로의 전송이 상기 요청에서 수신된 가능도 지시를 기초로 우선순위화된다. 예를 들어, 하나의 실시예에서, 예측된 추가 콘텐츠 아이템 각각에 대해, 요청 우선순위화부(1002)는 클라이언트 애플리케이션(204)으로부터 수신된 대응하는 가능도 지시를 기초로, 예측된 추가 콘텐츠 아이템의 요청을 타 콘텐츠에 비해 우선순위화할 수 있다.
예를 들어, 하나의 실시예에서, 요청 우선순위화부(1002)는 (가령, 식별자에 의해) 예측된 추가 콘텐츠 및 이에 대응하는 가능도 지시를 나열하는 우선순위 리스트 또는 그 밖의 다른 데이터 구조를 생성 및 유지할 수 있다. 콘텐츠 리트리버 모듈(904)이 우선순위화된 방식으로 가능도 지시에 따라 예측된 추가 콘텐츠를 요청하도록, 요청 우선순위화부(1002)는 가능도 지시에 따라 리스트를 정렬하거나, 그 밖의 다른 방식으로 리스트를 구성할 수 있다. 예측된 추가 콘텐츠 및 가능도 지시가 단일 클라이언트 애플리케이션 또는 복수의 클라이언트 애플리케이션에 대해 나열될 수 있다. 따라서 이러한 방식으로, 콘텐츠 리트리버 모듈(904)은 단일 클라이언트 애플리케이션 또는 복수의 클라이언트 애플리케이션에 대해 원천 서버로의 요청을 우선순위화할 수 있다.
예를 들어, 앞서 나타난 예시적 HTTP 메시지와 관련하여, 요청 우선순위화부(1002)는 URL1 및 URL2, 및 이들의 대응하는 가능도 지시를 포함하는 예측된 추가 콘텐츠의 리스트를 유지(가령, 저장하고 필요에 따라 업데이트)할 수 있다. URL2가 60의 가능도 지시 값을 갖기 때문에, URL2는 20의 가능도 지시 값을 갖는 URL1보다 높게 우선순위화된다. 따라서 이 예시에서, 요청 우선순위화부(1002)에 의해 유지되는 우선순위에 따라, 콘텐츠 리트리버 모듈(904)은, 원천 서버로부터 URL1의 콘텐츠를 불러오기 전에, 원천 서버로부터 URL2의 콘텐츠를 불러온다.
덧붙여, 실시예에서, 콘텐츠 리트리버 모듈(904)은 추가 및/또는 대안적 정보를 사용하여 콘텐츠에 대한 요청을 우선순위화할 수 있는데, 가령, 가용 스토리지 용량, 가용 네트워크 용량, 가용 프로세싱(가령, CPU) 용량 등이 있다. 또한, 하나의 실시예에서, 원천 서버가 예측된 콘텐츠의 캐싱 서버로의 전송을, 타 콘텐츠에 비해 우선순위화(가령, 즉시 원하는 콘텐츠에 대한 요청보다 낮게 예측된 미래의 콘텐츠에 대한 요청을 우선순위화)할 수 있도록 예측된 미래의 콘텐츠를 요청할 때 캐싱 서버는 가능도 지시를 원천 서버로 전송할 수 있다. 따라서 하나의 실시예에서, 원천 서버는 가능도 지시 및/또는 추가/대안적 정보를 기초로 예측된 콘텐츠의 캐싱 서버로의 전송을 우선순위화하는 요청 우선순위화부(1002)와 유사한 요청 우선순위화부를 포함할 수 있다.
III . 예시적 컴퓨팅 장치 실시예
클라이언트 애플리케이션(110a-110d), 클라이언트 애플리케이션(204), 추가 콘텐츠 예측부(208), 통신 인터페이스(602), 요청 포맷터(604), 추가 콘텐츠 우선순위화부(702), 콘텐츠 리트리버 모듈(904), 콘텐츠 요청 파서(906), 콘텐츠 제공자 모듈(908), 요청 우선순위화부(1002), 흐름도(300), 흐름도(400), 흐름도(500), 단계(802) 및 단계(1102)는 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 예를 들어, 클라이언트 애플리케이션(110a-110d), 클라이언트 애플리케이션(204), 추가 콘텐츠 예측부(208), 통신 인터페이스(602), 요청 포맷터(604), 추가 콘텐츠 우선순위화부(702), 콘텐츠 리트리버 모듈(904), 콘텐츠 요청 파서(906), 콘텐츠 제공자 모듈(908), 요청 우선순위화부(1002), 흐름도(300), 흐름도(400), 흐름도(500), 단계(802) 및/또는 단계(1102)는 하나 이상의 프로세서에서 실행되도록 구성되는 컴퓨터 프로그램 코드/명령/로직으로 구현될 수 있다. 대안적으로, 클라이언트 애플리케이션(110a-110d), 클라이언트 애플리케이션(204), 추가 콘텐츠 예측부(208), 통신 인터페이스(602), 요청 포맷터(604), 추가 콘텐츠 우선순위화부(702), 콘텐츠 리트리버 모듈(904), 콘텐츠 요청 파서(906), 콘텐츠 제공자 모듈(908), 요청 우선순위화부(1002), 흐름도(300), 흐름도(400), 흐름도(500), 단계(802) 및/또는 단계(1102)가 하드웨어 로직/전기 회로로서 구현될 수 있다. 예를 들어, 하나의 실시예에서, 클라이언트 애플리케이션(110a-110d), 클라이언트 애플리케이션(204), 추가 콘텐츠 예측부(208), 통신 인터페이스(602), 요청 포맷터(604), 추가 콘텐츠 우선순위화부(702), 콘텐츠 리트리버 모듈(904), 콘텐츠 요청 파서(906), 콘텐츠 제공자 모듈(908), 요청 우선순위화부(1002), 흐름도(300), 흐름도(400), 흐름도(500), 단계(802) 및/또는 단계(1102) 중 하나 이상은 시스템-온-칩(SoC)에서 다 함께 구현될 수 있다. 상기 SoC는 프로세서(가령, 마이크로제어기, 마이크로프로세서, 디지털 신호 프로세서(DSP) 등), 메모리, 하나 이상의 통신 인터페이스, 및/또는 추가 회로 및/또는 이의 기능을 수행하기 위한 임베디드 펌웨어 중 하나 이상을 포함하는 집적 회로 칩을 포함할 수 있다.
도 12는 본 발명의 실시예가 구현될 수 있는 컴퓨터(1200)의 예시적 구현을 도시한다. 예를 들어, 원천 서버(102), 캐싱 서버(104a 및 104b), 사용자 장치(106a-106d), 캐싱 서버(202), 사용자 장치(600), 및 캐싱 서버(902) 각각은 컴퓨터(1200)와 유사한 하나 이상의 컴퓨터 시스템, 가령, 컴퓨터(1200)의 하나 이상의 특징부 및/또는 대안적 특징부로 구현될 수 있다. 컴퓨터(1200)는 종래의 개인 컴퓨터, 모바일 컴퓨터, 서버, 또는 워크스테이션의 형태로 된 범용 컴퓨팅 장치이거나, 컴퓨터(1200)는 특수 용도 컴퓨팅 장치일 수 있다. 본 명세서에서 제공되는 컴퓨터(1200)의 기재는 설명 목적으로 제공되며 한정하려는 것이 아니다. 본 발명의 실시예는 해당 분야의 통상의 기술자에게 잘 알려진 또 다른 유형의 컴퓨터 시스템으로 구현될 수 있다.
도 12에 도시된 바와 같이, 컴퓨터(1200)는 하나 이상의 프로세서(1202), 시스템 메모리(1204), 및 다양한 시스템 구성요소, 가령 시스템 메모리(1204)를 프로세서(1202)로 연결하는 버스(1206)를 포함한다. 버스(1206)는 몇 가지 유형의 구조, 가령, 메모리 버스 또는 메모리 제어기, 주변장치 버스, 가속 그래픽 포트(accelerated graphics port), 다양한 버스 아키텍처 중 임의의 것을 이용하는 프로세서 또는 로컬 버스 중 임의의 하나 이상을 나타낸다. 시스템 메모리(1204)는 리드 온리 메모리(ROM)(1208) 및 랜덤 액세스 메모리(RAM)(1210)를 포함한다. 기본 입/출력 시스템(1212)(BIOS)이 ROM(1208)에 저장된다.
컴퓨터(1200)는 또한 다음의 드라이브 중 하나 이상을 가진다: 하드 디스크로부터 읽고 쓰기 위한 하드 디스크 드라이브(1214), 이동식 자기 디스크(1218)로부터 읽거나 쓰기 위한 자기 디스크 드라이브(1216), 이동식 광학 디스크(1222), 가령, CD ROM, DVD ROM 또는 그 밖의 다른 광학 매체로부터 읽거나 쓰기 위한 광학 디스크 드라이브(1220). 하드 디스크 드라이브(1214), 자기 디스크 드라이브(1216), 및 광학 디스크 드라이브(1220)가 하드 디스크 드라이브 인터페이스(1224), 자기 디스크 드라이브 인터페이스(1226), 및 광학 드라이브 인터페이스(1228)에 의해 각각 버스(1206)로 연결된다. 드라이브 및 이들의 연관된 컴퓨터 판독형 매체는 컴퓨터에 대한 컴퓨터 판독형 명령, 데이터 구조, 프로그램 모듈, 및 그 밖의 다른 데이터의 비휘발성 저장을 제공한다. 하드 디스크, 이동식 자기 디스크 및 이동식 광학 디스크가 기재되었지만, 그 밖의 다른 유형의 컴퓨터 판독형 저장 매체가 데이터를 저장하기 위해 사용될 수 있으며, 가령, 플래시 메모리 카드, 디지털 비디오 디스크, 랜덤 액세스 메모리(RAM), 리드 온리 메모리(ROM) 등이 있다.
복수의 프로그램 모듈이 하드 디스크, 자기 디스크, 광학 디스크, ROM 또는 RAM에 저장될 수 있다. 이들 프로그램은 운영 체제(1230), 하나 이상의 애플리케이션 프로그램(1232), 기타 프로그램 모듈(1234), 및 프로그램 데이터(1236)를 포함한다. 애플리케이션 프로그램(1232) 또는 프로그램 모듈(1234)은, 예를 들어, 클라이언트 애플리케이션(110a-110d), 클라이언트 애플리케이션(204), 추가 콘텐츠 예측부(208), 통신 인터페이스(602), 요청 포맷터(604), 추가 콘텐츠 우선순위화부(702), 콘텐츠 리트리버 모듈(904), 콘텐츠 요청 파서(906), 콘텐츠 제공자 모듈(908), 요청 우선순위화부(1002), 흐름도(300), 흐름도(400), 흐름도(500), 단계(802) 및/또는 단계(1102)(흐름도(300, 400, 및 500)의 임의의 단계를 포함) 및/또는 본 명세서에 기재된 추가 실시예를 구현하기 위한 컴퓨터 프로그램 로직(가령, 컴퓨터 프로그램 코드)를 포함할 수 있다.
사용자는 명령어 및 정보를 입력 장치, 가령 키보드(1238) 및 포인팅 장치(1240)를 통해 컴퓨터(1200)로 입력할 수 있다. 그 밖의 다른 입력 장치(도시되지 않음)가 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수 있다. 이들 및 그 밖의 다른 입력 장치가 종종 버스(1206)로 연결되는 직렬 포트 인터페이스(1242)를 통해 프로세서(1202)로 연결되지만, 그 밖의 다른 인터페이스, 가령, 병렬 포트, 게임 포트, 또는 전역 직렬 버스(USB)에 의해 연결될 수도 있다.
디스플레이 장치(1244)가 또한 인터페이스, 가령, 비디오 어댑터(1246)를 통해 버스(1206)로 연결된다. 모니터에 추가로, 컴퓨터(1200)는 그 밖의 다른 주변 출력 장치(도시되지 않음), 가령, 스피커와 프린터를 포함할 수 있다.
컴퓨터(1200)는 어댑터 또는 네트워크 인터페이스(1250), 모뎀(1252), 또는 네트워크를 통해 통신을 확립하기 위한 또 다른 수단을 통해 네트워크(1248)(가령, 인터넷)로 연결된다. 내부형이거나 외부형일 수 있는 모뎀(1252)이 도 12에 도시된 바와 같이 직렬 포트 인터페이스(1242)를 통해 버스(1206)로 연결되거나, 또 다른 인터페이스 유형, 가령, 병렬 인터페이스를 이용해 버스(1206)로 연결될 수 있다.
본 명세서에 사용될 때, 일반적으로 용어 "컴퓨터 프로그램 매체", "컴퓨터 판독형 매체", 및 "컴퓨터 판독형 저장 매체"가 하드 디스크 드라이브(1214), 이동식 자기 디스크(1218), 이동식 광학 디스크(1222)뿐 아니라 그 밖의 다른 매체, 가령, 플래시 메모리 카드, 디지털 비디오 디스크, 랜덤 액세스 메모리(RAM), 리드 온리 메모리(ROM) 등까지 지칭하도록 사용된다. 이러한 컴퓨터 판독형 저장 매체는 통신 매체와 구별되며 겹치지 않는다(통신 매체를 포함하지 않는다). 일반적으로 통신 매체는 변조된 데이터 신호, 가령, 반송파로 컴퓨터 판독형 명령, 데이터 구조, 프로그램 모듈 또는 그 밖의 다른 데이터를 구현한다. 용어 "변조된 데이터 신호"는 신호의 정보를 인코딩하기 위한 방식으로 설정 또는 변경되는 특성을 갖는 신호를 의미한다. 비-제한적 예를 들면, 통신 매체는 무선 매체, 음향, RF, 적외선 및 그 밖의 다른 무선 매체를 포함한다. 실시예는 이러한 통신 매체와도 관련된다.
앞서 언급된 바와 같이, 컴퓨터 프로그램 및 모듈(가령, 애플리케이션 프로그램(1232) 및 그 밖의 다른 프로그램 모듈(1234))은 하드 디스크, 자기 디스크, 광학 디스크, ROM 또는 RAM에 저장될 수 있다. 이러한 컴퓨터 프로그램은 또한 네트워크 인터페이스(1250), 직렬 포트 인터페이스(1242), 또는 그 밖의 다른 임의의 인터페이스 유형을 통해 수신될 수 있다. 이러한 컴퓨터 프로그램은, 애플리케이션에 의해 실행되거나 로딩될 때, 컴퓨터(1200)로 하여금 본 명세서에서 언급된 본 발명의 실시예의 특징들을 구현하도록 한다. 따라서 이러한 컴퓨터 프로그램은 컴퓨터(1200)의 제어기를 나타낸다.
본 발명은 또한 임의의 컴퓨터 이용형 매체 상에 저장된 소프트웨어를 포함하는 컴퓨터 프로그램 프로덕트와 관련된다. 이러한 소프트웨어는, 하나 이상의 데이터 프로세싱 장치에서 실행될 때, 데이터 프로세싱 장치(들)이 본 명세서에 기재된 대로 동작하게 한다. 본 발명의 실시예는 현재 알려져 있는 또는 미래에 알려질 임의의 컴퓨터 이용형 또는 컴퓨터 판독형 매체를 채용한다. 컴퓨터 판독형 매체의 비-제한적 예를 들면, 저장 장치, 가령, RAM, 하드 디스크, 플로피 디스크, CD ROM, DVD ROM, 짚 디스크, 테이프, 자기 저장 장치, 광학 저장 장치, MEM, 나노기술 기반 저장 장치 등이 있다.
IV . 결론
본 발명의 다양한 실시예가 앞서 기재되었지만, 이들은 단지 예시를 위해 제공된 것이지 한정으로 제공된 것이 아님을 이해해야 한다. 해당 분야의 통상의 기술자라면 형태 및 세부사항의 다양한 변경이 이하의 특허청구범위에서 규정되는 본 발명의 사상 및 범위 내에서 이뤄질 수 있음을 이해할 것이다. 따라서 본 발명의 범위는 앞서 기재된 예시적 실시예들 중 어느 것에 의해서도 제한되지 않아야 하면, 이하의 청구항 및 이들의 균등항에 따라서만 규정되어야 한다.

Claims (20)

  1. 캐싱 서버에서의 방법으로서,
    사용자 장치 내 클라이언트 애플리케이션으로부터, 원하는 콘텐츠에 대한 추가 콘텐츠의 지시와 상기 클라이언트 애플리케이션에 의해 생성된 가능도 지시(likelihood indication)를 포함하는 상기 원하는 콘텐츠에 대한 요청을 수신하는 단계 - 상기 추가 콘텐츠는 상기 클라이언트 애플리케이션에 의해 후속적으로 요청될 것으로 예측되는 것이고, 상기 가능도 지시는 상기 추가 콘텐츠가 상기 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는 가능도(likelihood)를 지시함 - 와,
    상기 가능도 지시에 기초하여 적어도 상기 지시된 추가 콘텐츠에 대한 요청의 원천 서버(origin server)로의 전송을 우선순위화하는 단계와,
    적어도 상기 지시된 추가 콘텐츠에 대한 요청을 상기 원천 서버로 전송하는 단계와,
    상기 원천 서버로부터 상기 추가 콘텐츠를 수신하는 단계와,
    상기 추가 콘텐츠가 아닌 상기 원하는 콘텐츠를 상기 사용자 장치의 클라이언트 애플리케이션으로 전송하는 단계와,
    상기 추가 콘텐츠를 캐싱하는 단계와,
    상기 추가 콘텐츠에 대한 요청을 포함하는 제 2 요청을 상기 클라이언트 애플리케이션으로부터 수신하는 단계와,
    상기 사용자 장치의 상기 클라이언트 애플리케이션으로 캐싱된 상기 추가 콘텐츠를 제공하는 단계를 포함하는
    캐싱 서버에서의 방법.
  2. 제1항에 있어서,
    상기 제 2 요청은 상기 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는 제 1 추가 콘텐츠와 관련된 제 2 추가 콘텐츠를 지시하고, 상기 방법은
    지시된 상기 제 2 추가 콘텐츠에 대한 요청을 상기 원천 서버로 전송하는 단계와,
    상기 원천 서버로부터 상기 제 2 추가 콘텐츠를 수신하는 단계와,
    상기 제 2 추가 콘텐츠를 캐싱하는 단계를 더 포함하는
    캐싱 서버에서의 방법.
  3. 제1항에 있어서,
    적어도 상기 지시된 추가 콘텐츠에 대한 요청의 상기 원천 서버로의 전송을 우선순위화하는 단계는 또한 가용 저장 용량, 가용 네트워크 용량 또는 가용 프로세싱 용량 중 적어도 하나에 기초하는
    캐싱 서버에서의 방법.
  4. 제1항에 있어서,
    상기 클라이언트 애플리케이션으로부터 수신된 상기 원하는 콘텐츠에 대한 요청은 헤더(header)에서 상기 추가 콘텐츠를 지시하는 HTTP(hypertext transfer protocol) 메시지인
    캐싱 서버에서의 방법.
  5. 제1항에 있어서,
    상기 원하는 콘텐츠는 제 1 이미지를 포함하고, 상기 추가 콘텐츠는 상기 제 1 이미지와 공간적으로 인접하거나, 상기 제 1 이미지와 시간적으로 인접하거나, 상기 제 1 이미지의 일부분이거나, 상기 제 1 이미지를 포함하는 제 2 이미지인
    캐싱 서버에서의 방법.
  6. 제1항에 있어서,
    상기 원하는 콘텐츠는 제 1 비디오 프레임을 포함하고, 상기 추가 콘텐츠는 비디오 스트림에서 상기 제 1 비디오 프레임에 후속하는 제 2 비디오 프레임인
    캐싱 서버에서의 방법.
  7. 캐싱 서버로서,
    사용자 장치 내 클라이언트 애플리케이션으로부터, 원하는 콘텐츠에 대한 요청 및 상기 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는 상기 원하는 콘텐츠와 관련된 추가 콘텐츠의 지시를 수신하는 콘텐츠 요청 파서 - 상기 원하는 콘텐츠에 대한 요청은 상기 추가 콘텐츠의 지시와, 상기 추가 콘텐츠가 상기 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는 가능도를 지시하는 상기 클라이언트 애플리케이션에 의해 생성된 가능도 지시를 포함함 - 와,
    상기 가능도 지시에 기초하여 원천 서버로 전송될 적어도 상기 지시된 추가 콘텐츠에 대한 요청을 우선순위화하고, 적어도 상기 지시된 추가 콘텐츠에 대한 요청을 상기 원천 서버로 전송하고, 상기 원천 서버로부터 상기 추가 콘텐츠를 수신하며, 상기 추가 콘텐츠를 스토리지에 캐싱하는 콘텐츠 리트리버 모듈과,
    상기 추가 콘텐츠가 아닌 상기 원하는 콘텐츠를 상기 사용자 장치의 클라이언트 애플리케이션으로 전송하는 콘텐츠 제공자 모듈을 포함하되,
    상기 콘텐츠 요청 파서는 상기 클라이언트 애플리케이션으로부터 상기 추가 콘텐츠에 대한 요청을 포함하는 제 2 요청을 수신하고,
    상기 콘텐츠 제공자 모듈은 상기 클라이언트 애플리케이션으로부터의 상기 제 2 요청에 응답하여 상기 캐싱된 추가 콘텐츠를 상기 클라이언트 애플리케이션으로 제공하는
    캐싱 서버.
  8. 제7항에 있어서,
    상기 제 2 요청은 상기 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는 제 1 추가 콘텐츠와 관련된 제 2 추가 콘텐츠를 지시하고,
    상기 콘텐츠 리트리버 모듈은 지시된 상기 제 2 추가 콘텐츠에 대한 요청을 상기 원천 서버로 전송하고, 상기 원천 서버로부터 상기 제 2 추가 콘텐츠를 수신하며, 상기 제 2 추가 콘텐츠를 상기 스토리지에 캐싱하는
    캐싱 서버.
  9. 제7항에 있어서,
    상기 원하는 콘텐츠는 웹 페이지에 의해 참조되는 제 1 콘텐츠 아이템을 포함하고, 상기 추가 콘텐츠는 상기 웹 페이지에 의해 참조되는 제 2 콘텐츠 아이템인
    캐싱 서버.
  10. 제7항에 있어서,
    상기 원하는 콘텐츠는 제 1 비디오 프레임을 포함하고, 상기 추가 콘텐츠는 비디오 스트림에서 상기 제 1 비디오 프레임에 후속하는 제 2 비디오 프레임인
    캐싱 서버.
  11. 제7항에 있어서,
    상기 콘텐츠 리트리버 모듈은 또한 가용 저장 용량, 가용 네트워크 용량 또는 가용 프로세싱 용량 중 적어도 하나에 기초하여 적어도 상기 지시된 추가 콘텐츠에 대한 요청의 상기 원천 서버로의 전송을 우선순위화하는
    캐싱 서버.
  12. 제7항에 있어서,
    상기 클라이언트 애플리케이션으로부터 수신된 상기 원하는 콘텐츠에 대한 요청은 헤더에서 상기 추가 콘텐츠를 지시하는 HTTP 메시지인
    캐싱 서버.
  13. 제7항에 있어서,
    상기 원하는 콘텐츠는 제 1 이미지를 포함하고, 상기 추가 콘텐츠는 상기 제 1 이미지와 공간적으로 인접하거나, 상기 제 1 이미지와 시간적으로 인접하거나, 상기 제 1 이미지의 일부분이거나, 상기 제 1 이미지를 포함하는 제 2 이미지인
    캐싱 서버.
  14. 클라이언트 애플리케이션을 위한 컴퓨터 판독가능 저장 매체에 임베드된 컴퓨터 프로그램 명령어를 저장하는 상기 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 프로그램 명령어는
    프로세서로 하여금 원하는 콘텐츠에 대한 추가 콘텐츠를 지시하는 상기 원하는 콘텐츠에 대한 제 1 요청을 생성 - 상기 추가 콘텐츠는 상기 클라이언트 애플리케이션에 의해 후속적으로 요청되는 것임 - 하게 하고, 가능도 지시를 생성 - 상기 가능도 지시는 상기 추가 콘텐츠가 상기 클라이언트 애플리케이션에 의해 후속적으로 요청될 수 있는 가능도를 지시하고, 상기 가능도 지시는 상기 원하는 콘텐츠에 대한 제 1 요청에 포함됨 - 하게 하는 제 1 컴퓨터 프로그램 명령어와,
    프로세서로 하여금 상기 원하는 콘텐츠에 대한 제 1 요청에 응답하여 원천 서버로부터 상기 원하는 콘텐츠를 리트리빙한(retrieved) 캐싱 서버로부터 상기 원하는 콘텐츠를 수신하게 하는 제 2 컴퓨터 프로그램 명령어와,
    프로세서로 하여금 상기 가능도 지시에 기초하여 상기 원천 서버로 전송될 적어도 상기 추가 콘텐츠에 대한 제 2 요청을 우선순위화하고, 적어도 상기 추가 콘텐츠에 대한 상기 제 2 요청을 생성하게 하는 제 3 컴퓨터 프로그램 명령어와,
    프로세서로 하여금 상기 원하는 콘텐츠에 대한 제 1 요청에 응답하여 상기 원천 서버로부터 상기 추가 콘텐츠를 리트리빙하고 상기 추가 콘텐츠를 캐싱한 상기 캐싱 서버로부터 상기 추가 콘텐츠를 수신하게 하는 제 4 컴퓨터 프로그램 명령어를 포함하는
    컴퓨터 판독가능 저장 매체.
  15. 제14항에 있어서,
    상기 제 2 요청은 상기 클라이언트 애플리케이션에 의해 후속적으로 요청될 제 1 추가 콘텐츠에 대한 제 2 추가 콘텐츠를 지시하고, 상기 제 2 추가 콘텐츠는 상기 제 2 요청에 응답하여 상기 원천 서버로부터 리트리빙되며 상기 캐싱 서버에 의해 캐싱되는
    컴퓨터 판독가능 저장 매체.
  16. 제14항에 있어서,
    상기 원하는 콘텐츠에 대한 제 1 요청은 헤더에서 상기 추가 콘텐츠를 지시하는 HTTP 메시지로서 상기 제 1 컴퓨터 프로그램 명령어에 의해 생성되는
    컴퓨터 판독가능 저장 매체.
  17. 제14항에 있어서,
    상기 원하는 콘텐츠는 제 1 오디오 프레임을 포함하고, 상기 컴퓨터 판독가능 저장 매체는
    상기 추가 콘텐츠가 오디오 스트림에서 상기 제 1 오디오 프레임에 후속하는 제 2 오디오 프레임인지 결정하는 제 5 컴퓨터 프로그램 명령어를 더 포함하는
    컴퓨터 판독가능 저장 매체.
  18. 제14항에 있어서,
    상기 클라이언트 애플리케이션은 웹 브라우저인
    컴퓨터 판독가능 저장 매체.
  19. 제14항에 있어서,
    상기 클라이언트 애플리케이션은 미디어 플레이어 또는 웹 애플리케이션인
    컴퓨터 판독가능 저장 매체.
  20. 제14항에 있어서,
    상기 원하는 콘텐츠는 웹 페이지에 의해 참조된 제 1 콘텐츠 아이템을 포함하고, 상기 컴퓨터 판독가능 저장 매체는
    상기 추가 콘텐츠가 상기 웹 페이지에 의해 참조되는 제 2 콘텐츠 아이템인지 결정하는 제 5 컴퓨터 프로그램 명령어를 더 포함하는
    컴퓨터 판독가능 저장 매체.
KR1020147016139A 2011-12-16 2012-12-07 애플리케이션 구동식 cdn 사전-캐싱 기법 KR101997305B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/328,444 US9294582B2 (en) 2011-12-16 2011-12-16 Application-driven CDN pre-caching
US13/328,444 2011-12-16
PCT/US2012/068326 WO2013090126A1 (en) 2011-12-16 2012-12-07 Application-driven cdn pre-caching

Publications (2)

Publication Number Publication Date
KR20140102220A KR20140102220A (ko) 2014-08-21
KR101997305B1 true KR101997305B1 (ko) 2019-07-05

Family

ID=47972169

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147016139A KR101997305B1 (ko) 2011-12-16 2012-12-07 애플리케이션 구동식 cdn 사전-캐싱 기법

Country Status (13)

Country Link
US (2) US9294582B2 (ko)
EP (1) EP2791815B1 (ko)
JP (1) JP6073366B2 (ko)
KR (1) KR101997305B1 (ko)
CN (1) CN103024045B (ko)
AU (1) AU2012352651B2 (ko)
BR (1) BR112014014404A2 (ko)
CA (1) CA2857330A1 (ko)
ES (1) ES2687767T3 (ko)
HK (1) HK1181930A1 (ko)
MX (1) MX346689B (ko)
RU (1) RU2632410C2 (ko)
WO (1) WO2013090126A1 (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102222086B (zh) * 2011-05-18 2014-11-26 广州市动景计算机科技有限公司 基于移动终端的网页阅读方法、网页阅读装置及移动终端
US9294582B2 (en) 2011-12-16 2016-03-22 Microsoft Technology Licensing, Llc Application-driven CDN pre-caching
US9582603B1 (en) 2012-02-27 2017-02-28 Amazon Technologies, Inc. Managing preloading of data on client systems
US9747386B1 (en) * 2012-08-10 2017-08-29 Amazon Technologies, Inc. User-perceived performance through browser hints
US20140244670A1 (en) * 2013-02-27 2014-08-28 Pavlov Media, Inc. Ontological evaluation and filtering of digital content
US10120350B2 (en) * 2013-03-11 2018-11-06 Fisher-Rosemount Systems, Inc. Background collection of diagnostic data from field instrumentation devices
WO2014166078A1 (zh) * 2013-04-10 2014-10-16 华为技术有限公司 数据发送处理方法及路由器
GB2516115A (en) * 2013-07-12 2015-01-14 Canon Kk Methods and devices for exchanging data
KR102077495B1 (ko) * 2013-07-17 2020-02-14 한국전자통신연구원 웹 서버 및 웹 요구사항 예측을 이용한 웹 서버의 성능 향상 방법
US9983801B1 (en) * 2013-09-21 2018-05-29 Avago Technologies General Ip (Singapore) Pte. Ltd. Priority queueing for low latency storage networks
US10042768B1 (en) 2013-09-21 2018-08-07 Avago Technologies General Ip (Singapore) Pte. Ltd. Virtual machine migration
US9547598B1 (en) * 2013-09-21 2017-01-17 Avego Technologies General Ip (Singapore) Pte. Ltd. Cache prefill of cache memory for rapid start up of computer servers in computer networks
US9262541B2 (en) 2013-10-18 2016-02-16 Google Inc. Distance based search ranking demotion
EP2876863B1 (en) * 2013-11-22 2016-08-10 Alcatel Lucent Delivery and storage of content within a network
CN104954396B (zh) * 2014-03-25 2018-09-07 华为技术有限公司 资源下载的方法与资源下载的装置
CN104052808A (zh) * 2014-06-13 2014-09-17 乐视网信息技术(北京)股份有限公司 基于cdn的数字内容获取方法及系统
CN104022923A (zh) * 2014-06-27 2014-09-03 北京奇艺世纪科技有限公司 一种网络接口装置、系统及网络数据访问方法
US20160035007A1 (en) * 2014-07-30 2016-02-04 Kobo Inc. Using a user wishlist to automate the acquisition and rendering of a content item
US10506027B2 (en) * 2014-08-27 2019-12-10 Tensera Networks Ltd. Selecting a content delivery network
US10154072B2 (en) * 2014-09-17 2018-12-11 Microsoft Technology Licensing, Llc Intelligent streaming of media content
US9983959B2 (en) 2015-06-29 2018-05-29 Microsoft Technology Licensing, Llc Erasure coding of data within a group of storage units based on connection characteristics
US11895212B2 (en) 2015-09-11 2024-02-06 Amazon Technologies, Inc. Read-only data store replication to edge locations
JP6445222B2 (ja) * 2015-09-11 2018-12-26 アマゾン・テクノロジーズ・インコーポレーテッド エッジ位置でのカスタマイズ可能なイベントトリガ型計算のためのシステム、方法、及びコンピュータ可読記憶媒体
JP2017058787A (ja) * 2015-09-14 2017-03-23 株式会社東芝 無線通信装置、通信装置、無線通信システム
US10613713B2 (en) * 2015-10-07 2020-04-07 Google Llc Integration of content in non-browser applications
US10116713B2 (en) * 2016-03-31 2018-10-30 Jamdeo Canada, Ltd. System and methods for content streaming with a content buffer
US20170331914A1 (en) * 2016-05-16 2017-11-16 Aterlo Networks Inc. System and method for optimizing online video streaming to a user
CN106027642A (zh) * 2016-05-19 2016-10-12 乐视控股(北京)有限公司 用于确定cdn节点磁盘数量的方法及系统
FR3053199A1 (fr) * 2016-06-27 2017-12-29 Orange Serveur de statistiques pour optimisation de requetes client-serveur
US20180081893A1 (en) * 2016-09-19 2018-03-22 Ebay Inc. Prediction-based instant search
CN106506857A (zh) * 2016-11-30 2017-03-15 努比亚技术有限公司 一种业务定制方法、终端及服务器
WO2018111246A1 (en) * 2016-12-13 2018-06-21 Google Llc Systems and methods for prefetching content items
US10594771B2 (en) * 2017-02-09 2020-03-17 International Business Machines Corporation Distributed file transfer with high performance
EP3598697B1 (en) * 2017-04-14 2022-01-19 Huawei Technologies Co., Ltd. Content deployment method and distribution controller
US10645133B2 (en) * 2017-07-12 2020-05-05 Loon Llc Method and system for delivering content over transient access networks
FR3075541A1 (fr) * 2017-12-20 2019-06-21 Orange Procede de distribution d'un contenu dans un reseau de distribution de contenus, entite d'origine et entites de distribution correspondantes
US10771590B2 (en) * 2018-03-07 2020-09-08 Ciena Corporation Systems and methods for intelligent routing and content placement in information centric networks
CN109359095B (zh) * 2018-09-11 2021-07-16 东华大学 一种大数据快速读取的dlk方法
US20200097412A1 (en) * 2018-09-26 2020-03-26 International Business Machines Corporation Predictive dynamic contextual cache loading
US11579763B2 (en) * 2019-01-15 2023-02-14 Fujifilm Medical Systems U.S.A., Inc. Smooth image scrolling with disk I/O activity optimization and enhancement to memory consumption
US11341097B2 (en) * 2019-10-16 2022-05-24 Microsoft Technology Licensing, Llc Prefetching based on historical use and real-time signals
US20210173888A1 (en) * 2019-12-08 2021-06-10 Akamai Technologies Inc. Proxy server caching of database content
US11451603B2 (en) * 2020-02-25 2022-09-20 Disney Enterprises, Inc. Selective pre-caching of media streams
US11544560B2 (en) 2020-04-10 2023-01-03 Microsoft Technology Licensing, Llc Prefetching and/or computing resource allocation based on predicting classification labels with temporal data
CN112182070B (zh) * 2020-10-13 2022-06-14 安徽极玩云科技有限公司 基于云计算的Elasticsearch查询管理系统
CN115297095B (zh) * 2022-08-08 2024-03-08 上海哔哩哔哩科技有限公司 回源处理方法、装置、计算设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040073867A1 (en) 2002-06-20 2004-04-15 Kausik Balas Natarajan Precomputation of web documents
US20080208789A1 (en) 2007-02-23 2008-08-28 Microsoft Corporation HTTP acceleration by prediction and pre-fetching
US20080301300A1 (en) 2007-06-01 2008-12-04 Microsoft Corporation Predictive asynchronous web pre-fetch
US20110131341A1 (en) 2009-11-30 2011-06-02 Microsoft Corporation Selective content pre-caching

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991306A (en) 1996-08-26 1999-11-23 Microsoft Corporation Pull based, intelligent caching system and method for delivering data over a network
US6584498B2 (en) * 1996-09-13 2003-06-24 Planet Web, Inc. Dynamic preloading of web pages
US6038601A (en) * 1997-07-21 2000-03-14 Tibco, Inc. Method and apparatus for storing and delivering documents on the internet
RU2210871C2 (ru) * 1997-08-06 2003-08-20 Тэчйон, Инк. Распределенная система и способ предварительной выборки объектов
US6199154B1 (en) 1997-11-17 2001-03-06 Advanced Micro Devices, Inc. Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access
US6173318B1 (en) * 1997-12-16 2001-01-09 Intel Corporation Method and apparatus for pre-fetching data for an application using a winsock client layered service provider and a transparent proxy
US6085226A (en) * 1998-01-15 2000-07-04 Microsoft Corporation Method and apparatus for utility-directed prefetching of web pages into local cache using continual computation and user models
US6959318B1 (en) * 1998-03-06 2005-10-25 Intel Corporation Method of proxy-assisted predictive pre-fetching with transcoding
SE514376C2 (sv) * 1998-09-24 2001-02-19 Mirror Image Internet Inc Ett internet-cachningssystem samt ett förfarande och anordning i ett sådant system
US6542964B1 (en) 1999-06-02 2003-04-01 Blue Coat Systems Cost-based optimization for content distribution using dynamic protocol selection and query resolution for cache server
US20020152305A1 (en) * 2000-03-03 2002-10-17 Jackson Gregory J. Systems and methods for resource utilization analysis in information management environments
US6854018B1 (en) * 2000-03-20 2005-02-08 Nec Corporation System and method for intelligent web content fetch and delivery of any whole and partial undelivered objects in ascending order of object size
US6701316B1 (en) 2000-04-07 2004-03-02 Nec Corporation Method and apparatus for intelligent network bandwidth and system resource utilization for web content fetch and refresh
US7113935B2 (en) * 2000-12-06 2006-09-26 Epicrealm Operating Inc. Method and system for adaptive prefetching
US7877463B2 (en) * 2001-04-10 2011-01-25 Citrix Systems, Inc. Method and systems for providing access to dynamic content via static pages
JP2002373109A (ja) * 2001-06-13 2002-12-26 Nec Corp データ先読みシステムおよび先読み方法
JP2003114824A (ja) * 2001-10-04 2003-04-18 Canon I-Tech Inc 分散処理システム
US7437438B2 (en) * 2001-12-27 2008-10-14 Hewlett-Packard Development Company, L.P. System and method for energy efficient data prefetching
US7389330B2 (en) * 2002-09-11 2008-06-17 Hughes Network Systems, Llc System and method for pre-fetching content in a proxy architecture
US20040088375A1 (en) * 2002-11-01 2004-05-06 Sethi Bhupinder S. Method for prefetching Web pages to improve response time networking
WO2004114529A2 (en) * 2003-06-16 2004-12-29 Mentat Inc. Pre-fetch communication systems and methods
US20050138143A1 (en) * 2003-12-23 2005-06-23 Thompson Blake A. Pre-fetching linked content
CN100553209C (zh) 2004-08-19 2009-10-21 诺基亚公司 为控制网络上多媒体数据的部署而对目录服务器数据进行高速缓存
US20060294223A1 (en) * 2005-06-24 2006-12-28 Microsoft Corporation Pre-fetching and DNS resolution of hyperlinked content
US8019811B1 (en) 2006-04-06 2011-09-13 Versata Development Group, Inc. Application state server-side cache for a state-based client-server application
US7685255B2 (en) * 2006-04-24 2010-03-23 Blue Coat Systems, Inc. System and method for prefetching uncacheable embedded objects
US20080201332A1 (en) * 2007-02-20 2008-08-21 Souders Steven K System and method for preloading content on the basis of user context
US8504775B2 (en) * 2007-03-12 2013-08-06 Citrix Systems, Inc Systems and methods of prefreshening cached objects based on user's current web page
US7757002B2 (en) * 2007-03-23 2010-07-13 Sophos Plc Method and systems for analyzing network content in a pre-fetching web proxy
US20090089401A1 (en) 2007-10-01 2009-04-02 Microsoft Corporation Server-controlled distribution of media content
CA2720087C (en) 2008-04-09 2014-03-25 Level 3 Communications, Llc Content delivery in a network
US11187541B2 (en) 2008-05-09 2021-11-30 Blackberry Limited Predictive downloading of map data
US7975025B1 (en) * 2008-07-08 2011-07-05 F5 Networks, Inc. Smart prefetching of data over a network
US9390167B2 (en) * 2010-07-29 2016-07-12 Soundhound, Inc. System and methods for continuous audio matching
US8103768B2 (en) 2009-04-14 2012-01-24 At&T Intellectual Property I, Lp Network aware forward caching
US20100281224A1 (en) * 2009-05-01 2010-11-04 International Buisness Machines Corporation Prefetching content from incoming messages
US8140646B2 (en) * 2009-06-04 2012-03-20 Microsoft Corporation Network application performance enhancement using speculative execution
US8886760B2 (en) * 2009-06-30 2014-11-11 Sandisk Technologies Inc. System and method of predictive data acquisition
US8577961B2 (en) * 2010-01-28 2013-11-05 Qualcomm Innovation Center, Inc. Methods and apparatus for obtaining content with reduced access times
WO2011139305A1 (en) * 2010-05-04 2011-11-10 Azuki Systems, Inc. Method and apparatus for carrier controlled dynamic rate adaptation and client playout rate reduction
US8788762B2 (en) * 2010-09-30 2014-07-22 Nokia Corporation Methods and apparatuses for data resource provision
US20120233199A1 (en) * 2011-03-10 2012-09-13 Jenkins Jeffrey R Intelligent Web Caching
US8341245B1 (en) * 2011-09-26 2012-12-25 Google Inc. Content-facilitated speculative preparation and rendering
US9294582B2 (en) 2011-12-16 2016-03-22 Microsoft Technology Licensing, Llc Application-driven CDN pre-caching

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040073867A1 (en) 2002-06-20 2004-04-15 Kausik Balas Natarajan Precomputation of web documents
US20080208789A1 (en) 2007-02-23 2008-08-28 Microsoft Corporation HTTP acceleration by prediction and pre-fetching
US20080301300A1 (en) 2007-06-01 2008-12-04 Microsoft Corporation Predictive asynchronous web pre-fetch
US20110131341A1 (en) 2009-11-30 2011-06-02 Microsoft Corporation Selective content pre-caching

Also Published As

Publication number Publication date
EP2791815A1 (en) 2014-10-22
CN103024045B (zh) 2015-12-02
JP6073366B2 (ja) 2017-02-01
KR20140102220A (ko) 2014-08-21
HK1181930A1 (zh) 2013-11-15
EP2791815B1 (en) 2018-06-27
BR112014014404A2 (pt) 2017-06-13
CN103024045A (zh) 2013-04-03
MX346689B (es) 2017-03-29
WO2013090126A1 (en) 2013-06-20
MX2014007165A (es) 2014-08-29
JP2015509229A (ja) 2015-03-26
AU2012352651A1 (en) 2014-07-03
US10182127B2 (en) 2019-01-15
EP2791815A4 (en) 2015-08-12
AU2012352651B2 (en) 2017-09-28
RU2014124150A (ru) 2015-12-20
US20160173639A1 (en) 2016-06-16
RU2632410C2 (ru) 2017-10-04
US20130159383A1 (en) 2013-06-20
ES2687767T3 (es) 2018-10-29
US9294582B2 (en) 2016-03-22
CA2857330A1 (en) 2013-06-20

Similar Documents

Publication Publication Date Title
KR101997305B1 (ko) 애플리케이션 구동식 cdn 사전-캐싱 기법
JP2015509229A5 (ko)
US10083177B2 (en) Data caching among interconnected devices
CN107251525B (zh) 用于支持移动设备用户的预测内容预取服务的分布式服务器架构
US9785608B2 (en) Predictive, multi-layer caching architectures
US10277669B1 (en) Communication channel between device and CDN during playback
US20160072911A1 (en) Physical location influenced caching
CN106681990B (zh) 一种移动云存储环境下缓存数据的预取方法
US9594846B2 (en) Client side caching
CN109639813B (zh) 视频文件传输处理方法及装置、电子设备和存储介质
US10341454B2 (en) Video and media content delivery network storage in elastic clouds
AU2020398833A1 (en) Multimedia content steering
KR20120016335A (ko) 오프라인 실행을 위한 웹 페이지 사전 캐싱 시스템 및 방법
WO2018134709A1 (en) Efficient prefetching of common video clips
KR101742385B1 (ko) 콘텐츠 프리페칭 방법 및 이를 수행하는 장치
KR20150010415A (ko) 분산 캐싱을 위한 컨텐츠 전송 서비스 방법 및 중계 장치

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant