KR20220007699A - 콘텐츠 전달 시스템에서의 캐시 관리 - Google Patents

콘텐츠 전달 시스템에서의 캐시 관리 Download PDF

Info

Publication number
KR20220007699A
KR20220007699A KR1020217041034A KR20217041034A KR20220007699A KR 20220007699 A KR20220007699 A KR 20220007699A KR 1020217041034 A KR1020217041034 A KR 1020217041034A KR 20217041034 A KR20217041034 A KR 20217041034A KR 20220007699 A KR20220007699 A KR 20220007699A
Authority
KR
South Korea
Prior art keywords
content data
content
agent
business logic
caching
Prior art date
Application number
KR1020217041034A
Other languages
English (en)
Inventor
윌리엄 크라우더
Original Assignee
레벨 3 커뮤니케이션즈 엘엘씨
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 레벨 3 커뮤니케이션즈 엘엘씨 filed Critical 레벨 3 커뮤니케이션즈 엘엘씨
Publication of KR20220007699A publication Critical patent/KR20220007699A/ko

Links

Images

Classifications

    • H04L67/2842
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2885Hierarchically arranged intermediate devices, e.g. for hierarchical 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
    • 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/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L65/4084
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2871Implementation details of single intermediate entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

설명된 예들은 콘텐츠 전달 시스템에 대한 캐싱을 관리하기 위한 장치 및 방법에 관련되고, 이것은 캐싱 에이전트가 클라이언트에 대한 콘텐츠 데이터를 요청하고 있다는 것을 표시하는 콘텐츠 요청을 수신하는 단계, 콘텐츠 데이터를 비즈니스 로직 에이전트의 제 1 캐시 저장소 내에 채우는 단계 캐싱된 콘텐츠 데이터를 캐싱 에이전트에게 제공하는 단계, 및 캐싱 에이전트의 제 2 캐시 저장소가 콘텐츠 데이터로 채워지는 동안에, 캐싱 에이전트로부터 추가적 콘텐츠 요청을 수신하는 것에 응답하여, 캐싱된 콘텐츠 데이터를 유지하는 단계를 포함할 수 있다. 추가적 콘텐츠 요청은 캐싱 에이전트가 추가적 클라이언트에 대하여 동일한 콘텐츠 데이터를 요청하고 있다는 것을 표시할 수 있다.

Description

콘텐츠 전달 시스템에서의 캐시 관리
관련 출원에 대한 상호 참조
본 출원은 2019 년 5 월 14 일에 출원되고 발명의 명칭이 "Cache Management in Content Delivery Systems"인 미국 가특허 출원 번호 제 62/847,890에 대한 우선권을 주장하고, 이러한 문서의 전체 내용은 본 명세서에서 원용에 의해 통합된다.
콘텐츠 전송 시스템 또는 네트워크(예를 들어, 콘텐츠 전송 네트워크(CDN))는 오리진 서버(origin server)가 오리진 서버의 콘텐츠 데이터(예를 들어, 비디오, 이미지, 웹사이트 콘텐츠 데이터 등)를 콘텐츠 데이터를 소비하는 클라이언트에게 배포하는 것을 가능하게 하도록 구성된 서버들의 지리적으로 분포된 네트워크이다. 콘텐츠 전송 시스템 내의 각각의 서버는 노드, 머신 등이라고 불릴 수 있다. 콘텐츠 데이터를 오리진 서버로부터 오리진 서버에게 지리적으로 떨어져 있는 클라이언트에게 배포하기 위하여, 클라이언트에 지리적으로 근접한 노드가 오리진 서버를 대신하여 그러한 클라이언트로 콘텐츠 데이터를 제공할 수 있다. 특히, CDN은 오리진 서버의 콘텐츠 데이터를 복제 및 캐싱하고, 복제되고 캐싱된 콘텐츠 데이터를 클라이언트에게 제공할 수 있다.
본 명세서에는 콘텐츠 전송 시스템을 위한 캐싱을 관리하기 위한 시스템, 장치, 및 방법으로서, 비즈니스 로직 에이전트에 의하여 캐싱 에이전트로부터, 상기 캐싱 에이전트가 클라이언트에 대한 콘텐츠 데이터를 요청하고 있다는 것을 표시하는 콘텐츠 요청을 수신하는 단계 - 상기 비즈니스 로직 에이전트 및 캐싱 에이전트는 네트워크를 통하여 동작하도록 커플링됨 -, 상기 비즈니스 로직 에이전트에 의하여, 콘텐츠 데이터를 상기 비즈니스 로직 에이전트의 제 1 캐시 저장소 내에 채우는 단계 - 상기 콘텐츠 데이터는 상기 콘텐츠 전송 시스템의 업스트림 노드로부터 수신됨 -, 상기 비즈니스 로직 에이전트에 의하여, 캐싱된 콘텐츠 데이터를 상기 캐싱 에이전트에게 제공하는 단계, 및 상기 캐싱 에이전트의 제 2 캐시 저장소가 콘텐츠 데이터로 채워지는 동안에, 상기 비즈니스 로직 에이전트에 의하여, 상기 캐싱 에이전트로부터 추가적 콘텐츠 요청을 수신하는 것에 응답하여 캐싱된 콘텐츠 데이터를 유지하는 단계 - 상기 추가적 콘텐츠 요청은 상기 캐싱 에이전트가 추가적 클라이언트에 대하여 동일한 콘텐츠 데이터를 요청하고 있다는 것을 표시함 -를 포함하는, 시스템, 장치, 및 방법이 제공된다.
콘텐츠 전송 시스템은 CDN일 수 있다. 비즈니스 로직 에이전트 및 캐싱 에이전트는 CDN의 동일한 에지 노드 상에 있을 수 있다. 업스트림 노드는 콘텐츠 데이터를 저장하는 동일한 에지 노드 또는 콘텐츠 데이터를 저장하는 CDN 내의 에지 노드 및 오리진 노드 사이의 노드인 것이 바람직하다. 네트워크는 로컬 호스트 연결일 수 있다. 로컬 호스트 연결은 하이퍼텍스트 전송 프로토콜(HTTP) 연결 및 HTTP/2 연결 중 적어도 하나를 거칠 수 있다.
또는, 캐싱 에이전트는 CDN의 에지 노드 상에 있고, 비즈니스 로직 에이전트는 CDN의 중간 노드 상에 있다. 중간 노드는 에지 노드와 다른 것이 바람직하다.
캐싱 에이전트는 클라이언트로부터 수신된 HTTP 요청에 서비스를 제공하도록 구성되는 HTTP 서비스 엔진을 포함할 수 있다. 캐싱 에이전트는 캐싱 엔진을 포함할 수 있다. 캐싱 엔진은 제 2 캐시 저장소를 포함할 수 있다.
실시형태들은 상기 비즈니스 로직 에이전트에 의하여 상기 캐싱 에이전트로부터, 상기 콘텐츠 요청이 수신되기 이전에 인증 요청을 수신하는 단계, 상기 콘텐츠 데이터가 상기 콘텐츠 전송 시스템의 고객에 의하여 제공된다고 인증하는 단계, 및 상기 비즈니스 로직 에이전트에 의하여 상기 캐싱 에이전트로, 상기 콘텐츠 데이터가 상기 고객에 의해 제공된다고 인증하는 것에 응답하여 인증 응답을 전송하는 단계 - 상기 인증 응답은 인가(authorization)를 포함함 -를 더 허용한다.
콘텐츠 요청은 업스트림 노드를 식별할 수 있다. 비즈니스 로직 에이전트는 콘텐츠 요청에 기반하여 업스트림 노드로부터 콘텐츠 데이터를 수신할 수 있다. 콘텐츠 요청은 업스트림 노드로 어드레싱될 수 있다.
콘텐츠 요청은 콘텐츠 데이터의 어드레스 및 콘텐츠 데이터의 범위를 포함할 수 있다. 콘텐츠 데이터의 어드레스는 범용 리소스 로케이터(URL)를 포함할 수 있다. 비즈니스 로직 에이전트는 추가적 콘텐츠 요청 중 임의의 것이 콘텐츠 요청에 의해 요청된 것과 동일한 콘텐츠 데이터를 요청하고 있는지 여부를 어드레스 및 범위에 기반하여 결정할 수 있다.
상기 콘텐츠 요청은 채움 식별자(fill ID)를 포함하고, 상기 방법은, 상기 채움 ID에 기반하여, 상기 비즈니스 로직 에이전트에 의하여 상기 콘텐츠 데이터의 새로운 복제본이 필요하다고 결정하는 단계, 및 상기 비즈니스 로직 에이전트에 의하여, 새로운 복제본이 필요하다고 결정하는 것에 응답하여 상기 콘텐츠 데이터의 새로운 복제본을 제 1 캐시 저장소 내에 채우는 단계를 더 포함할 수 있다.
콘텐츠 요청은 조건부 요청 헤더를 포함할 수 있고, 상기 방법은 조건부 요청 헤더에 기반하여, 상기 비즈니스 로직 에이전트에 의하여 상기 콘텐츠 요청에 대응하는 키를 결정하는 단계를 더 허용한다.
실시형태들은, 상기 캐싱 에이전트의 제 2 캐시 저장소가 상기 콘텐츠 데이터로 채워지고 있는 동안에, 상기 캐싱된 콘텐츠 데이터를 유지하는 단계가, 추가적 콘텐츠 요청들 중 두 개의 연속된 요청이 미리 결정된 시간 간격 안에 수신된다고 결정하는 것에 응답하여 상기 캐싱된 콘텐츠 데이터를 유지하는 것을 포함하게 허용한다.
실시형태들은, 추가적 콘텐츠 요청 중 가장 최근 요청이 수신된 이후에, 미리 결정된 시간 간격 동안 새로운 추가적 콘텐츠 요청이 수신되지 않았다고 결정하는 단계를 더 허용한다.
다른 양태에 따르면, 콘텐츠 전송 시스템을 위한 캐싱을 관리하기 위한 시스템, 장치, 및 방법은, 캐싱 에이전트에 의하여 클라이언트로부터, 콘텐츠 데이터에 대한 요청을 수신하는 단계, 상기 캐싱 에이전트에 의하여, 상기 캐싱 에이전트가 콘텐츠 데이터를 채울 필요가 있다고 결정하는 단계, 상기 캐싱 에이전트에 의하여 비즈니스 로직 에이전트로, 상기 캐싱 에이전트가 클라이언트에 대한 콘텐츠 데이터를 요청하고 있다는 것을 표시하는 콘텐츠 요청을 전송하는 단계 - 상기 비즈니스 로직 에이전트 및 캐싱 에이전트는 네트워크를 통하여 동작하도록 커플링되고, 상기 비즈니스 로직 에이전트는 상기 콘텐츠 요청에 응답하여 상기 비즈니스 로직 에이전트의 제 1 캐시 저장소에 콘텐츠 데이터를 채움 -, 상기 캐싱 에이전트에 의하여, 업스트림 노드로부터의 콘텐츠 데이터를 상기 캐싱 에이전트의 제 2 캐시 저장소에 채우는 단계, 상기 캐싱 에이전트에 의하여, 추가적 콘텐츠 요청을 추가적 클라이언트로부터 수신하는 단계 - 상기 추가적 콘텐츠 요청은 상기 추가적 클라이언트에 의하여 동일한 콘텐츠 데이터가 요청된다는 것을 표시함 -, 및 상기 제 2 캐시 저장소가 콘텐츠 데이터로 채워지고 있는 동안에, 캐싱된 콘텐츠 데이터가 상기 비즈니스 로직 에이전트에 의하여 상기 추가적 클라이언트에 제공되는 단계를 포함할 수 있다.
실시형태들은, 상기 캐싱 에이전트에 의하여, 상기 업스트림 노드를 선택하는 단계를 더 허용하고, 상기 콘텐츠 요청은 상기 업스트림 노드를 식별한다.
이러한 피쳐와 다른 피쳐는 그 구성 및 동작 방식과 함께, 첨부 도면과 공동으로 주어지는 후속하는 발명을 실시하기 위한 구체적인 내용으로부터 명백해질 것이다.
도 1a는 일부 실시형태에 따르는 콘텐츠 전달 시스템의 도면이다.
도 1b는 일부 실시형태에 따르는 콘텐츠 전달 시스템의 도면이다.
도 2는 본 발명에 일부 실시형태에 따르는 노드를 예시하는 블록도이다.
도 3a는 다양한 실시형태에 따라서 콘텐츠 전송 시스템을 위한 캐싱을 관리하기 위한 방법을 예시하는 흐름도이다.
도 3b는 다양한 실시형태에 따라서 콘텐츠 전송 시스템을 위한 캐싱을 관리하기 위한 방법을 예시하는 흐름도이다.
본 명세서에서 설명되는 실시형태들은 콘텐츠 전송 시스템(예를 들어, CDN)에서의 캐시 관리를 위한 시스템, 장치, 및 방법에 관련된다. 콘텐츠 전송 시스템 내에서, 에지 노드는 콘텐츠 데이터에 대한 요청을 클라이언트로부터 처음 수신하는 노드이다. 클라이언트란 오리진 서버에 의하여 제공된 콘텐츠 데이터를 소비하거나 그렇지 않으면 수신하고자 하는 최종 사용자에 의하여 동작되는 디바이스를 가리킨다. 콘텐츠 데이터란 오리진 서버에 의해 저장되고 클라이언트로 보급하기 위해서 콘텐츠 전송 시스템을 통해 캐싱되는 데이터의 일부, 세그멘트, 객체, 파일, 또는 슬라이스를 가리킨다. 오리진 서버란 콘텐츠 전송 시스템의 고객에 의하여 운용되고, 고객이 콘텐츠 데이터를 클라이언트로 전달하는 것을 가능하게 하는 디바이스를 가리킨다. 콘텐츠 전송 시스템의 노드들은 클라이언트에 의해 요청된 콘텐츠 데이터를 캐싱하기 위한 캐싱 계층성으로 조직화될 수 있다.
일부 구현형태들에서, 에지 노드는 캐싱 및 비즈니스 로직 기능성을 위해서 자신에게 제공되는 두 개의 별개의 에이전트를 가진다. 예를 들어, 캐싱 에이전트 클라이언트로부터 수신된 콘텐츠에 대한 요청(예를 들어, 하이퍼텍스트 전송 프로토콜(HTTP) 요청)을 처리하고, 예를 들어 콘텐츠 데이터(예를 들어, 비디오의 적어도 일부)가 인기가 많고 빈번하게 요청된다면 요청된 콘텐츠 데이터를 수신하고 추가적 클라이언트가 콘텐츠 데이터를 요청할 경우에 대비하여 캐싱하도록 구성된다. 비즈니스 로직 에이전트는 에지 노드에 대한 비즈니스 로직을 구현하도록 구성된다. 예를 들어, 비즈니스 로직 에이전트는 요청된 콘텐츠 데이터가 콘텐츠 전송 시스템의 고객에게 속하는지 여부, 콘텐츠 전송 시스템이 콘텐츠 데이터를 해당 콘텐츠 데이터를 요청하는 클라이언트에게 전달할 수 있는지 여부(콘텐츠 데이터가 콘텐츠 전송 시스템의 고객에게 속한다고 가정함) 등을 결정할 수 있다. 바람직하게는, 캐싱 에이전트 및 비즈니스 로직 에이전트는 상이한 기능성을 가지고, 별개의 에이전트로서 구현된다. 다르게 말하면, 비즈니스 로직 에이전트는 캐싱 에이전트 외부에 있고, 그 반대의 경우도 마찬가지이다.
일부 양태에 따르면, 콘텐츠 데이터에 대한 요청을 클라이언트로부터 수신하면, 캐싱 에이전트는 비즈니스 로직 에이전트로부터 해당 요청에 서비스를 제공할 수 있게 하는 인가(authorization)를 획득한다. 그 다음에, 캐싱 에이전트는 요청된 콘텐츠 데이터가 캐싱 에이전트에 국지적인 캐시에 이미 저장되어 있는지 여부를 결정한다. 캐싱 에이전트에 대해 국지적인 캐시가 해당 콘텐츠 데이터를 저장하지 않고 있다고 결정하는 것에 응답하여, 캐싱 에이전트는 추가적 클라이언트로부터 수신되는 장래의 요청에 서비스를 제공하기 위해서 캐싱 에이전트에 국지적인 캐시가 해당 콘텐츠 데이터로 채워질 필요가 있다고 결정한다. 요청을 만족시키기 위하여, 캐싱 에이전트는 콘텐츠 데이터를 오리진 서버 또는 콘텐츠 데이터를 저장 또는 캐싱하는 다른 업스트림 노드로부터 페치하고, 캐시 채움을 수행한다(예를 들어, 캐싱 에이전트에 국지적인 캐시를 콘텐츠 데이터로 채움). 캐싱 에이전트는 클라이언트에게 캐싱 에이전트에 국지적인 캐시 내에 저장된 콘텐츠 데이터의 복제본을 제공할 수 있다.
저레이턴시 환경에서는, 캐싱 에이전트가 캐시 채움을 수행할 때, 캐싱 에이전트가 캐시 잠금을 이네이블할 수 있다. 캐시 잠금이 온되면, 동일한 콘텐츠 데이터에 대한 임의의 추가적 요청(추가적 클라이언트으로부터의 요청)은 캐시 채움이 완료될 때까지 홀드 상태에 놓인다. 이것은, 콘텐츠 데이터를 처음 요청한(추가적 클라이언트 이전에) 제 1 클라이언트는 콘텐츠 데이터를 즉시(예를 들어, 캐시 채움이 진행 중일 때에) 획득할 수 있지만, 동일한 콘텐츠 데이터를 요청하는 추가적 클라이언트는 캐시 채움이 완료될 때가지, 캐시 잠금이 디스에이블될 때까지, 그리고 제 1 클라이언트가 모든 콘텐츠 데이터를 획득할 때까지 콘텐츠 데이터 중 임의의 것을 획득하지 않을 것이라는 것을 의미한다.
전통적으로, 캐싱 에이전트는 캐싱 에이전트에서의 캐시 채움이 완료되기 이전에(캐시 잠금이 디스에이블되기 전에) 추가적 요청을 서비스하게 하는 임의의 진행중-채움(fill-in-progress) 피쳐를 가지지 않는다. 캐싱 에이전트의 일부 전통적인 구현형태에서는, 캐싱 에이전트가 임의의 진행중-채움 피쳐를 효율적으로 구현하기 위한 충분한 시그널링 메커니즘을 가지지 않는다. 캐싱 에이전트의 일부 전통적인 구현형태는 추가적 클라이언트가 캐시 잠금이 릴리스되었는지 여부를 결정하기 위해서 폴링(poll)할 수 있게 한다. 폴 간격(예를 들어, 500 ms)은 중앙 처리 유닛(CPU) 사이클을 낭비하는 빈번한 폴링을 피하도록 설정될 수 있다. 이러한 관점에서, 캐시 잠금이 주어진 폴 간격이 만료되기 한참 전에 디스에이블된다면 시간이 낭비된다. 캐시 채움을 수행하기 위하여 필요한 시간도 콘텐츠 데이터의 크기(예를 들어, 리소스 크기)에 의존하여 변할 수 있어서, 폴링이 효율적으로 구현될 수 없게 한다.
더욱이, 캐싱 에이전트의 일부 전통적인 구현형태는 추가적 클라이언트가 캐시 잠금이 이네이블된 동안에 오리진 서버 또는 저장된/캐싱된 콘텐츠 데이터를 이미 가지고 있는 다른 업스트림 노드에 연결하도록 명령함으로써, 추가적 클라이언트가 콘텐츠 데이터를 원래의 서버 또는 업스트림 노드로부터 직접 획득할 수 있게 한다. 콘텐츠 전송 시스템이 지리적으로 분산된 네트워크라면, 분산형 네트워크에 걸친 추가적 클라이언트 및 오리진 서버 또는 다른 업스트림 노드 사이의 연결은 상당량의 대역폭을 요구할 수 있고, 콘텐츠 전송 시스템 내의 트래픽을 악화시킬 수 있으며, 고객의 오리진 서버에 과부하를 주는 등을 초래할 수 있다.
본 명세서에서 설명되는 실시형태는, 캐싱 에이전트(클라이언트로부터의 요청을 처리하고 콘텐츠 데이터를 캐싱하기 위한 에이전트) 및 비즈니스 로직 에이전트(인증과 같은 비즈니스 로직을 구현하기 위한 에이전트)를 구현하는 전통적인 콘텐츠 전송 시스템에서의 캐시 관리를 개선한다. 예를 들어, 캐싱 에이전트에 국지적인 캐시가 요청된 콘텐츠 데이터로 채워질 때 캐싱 에이전트가 캐시 잠금을 이네이블시킨 동안에, 비즈니스 로직 에이전트는 콘텐츠 데이터의 복제본을 비즈니스 로직 에이전트에 국지적인 캐시 내에 유지한다. 캐싱 에이전트에 의하여 수신된 동일한 콘텐츠 데이터에 대한 추가적 요청은 비즈니스 로직 에이전트에 국지적인 캐시 내에 저장된 콘텐츠 데이터의 복제본을 사용하여 서비싱될 수 있지만, 캐싱 에이전트에 국지적인 캐시는 캐시 잠금 때문에 그러한 요청에 서비스를 제공하기 위해서 사용될 수 없다. 따라서, 비즈니스 로직 에이전트에 국지적인 캐시는 캐시 잠금 중에 캐싱 에이전트에 대한 지능적 버퍼링-채움 프록시(fill-buffering proxy)로서의 역할을 할 수 있다.
도 1a는 일부 실시형태에 따르는 콘텐츠 전달 시스템(100a)의 도면이다. 도 1a를 참조하면, 콘텐츠 전송 시스템(100a)은 오리진 서버(150)로부터 제공된 콘텐츠 데이터를 다양한 클라이언트(102a-102n)로 전달하도록 구성된다. 도시된 바와 같이, 사용자(101a-101n) 각각은 오리진 서버(150)에 의하여 제공되는 콘텐츠 데이터 또는 서비스에 액세스하기 위한 클라이언트(102a-102n) 중 각각의 하나를 동작시키거나 이와 연관된다. 일부 실시형태들에서, 클라이언트(102a-102n) 각각은 본 명세서에서 설명되는 동작을 수행하기 위한 하드웨어 및 소프트웨어로 구성되는 데스크탑 컴퓨터, 메인프레임 컴퓨터, 랩탑 컴퓨터, 패드 디바이스, 스마트 폰 디바이스, 또는 기타 등등일 수 있다. 예를 들어, 클라이언트(102a-102n) 각각은 적어도 처리 회로, 네트워크 디바이스, 및 사용자 인터페이스를 포함한다. 처리 회로는 본 명세서에서 설명되는 클라이언트(102a-102n)의 기능을 수행하도록 구성된다. 네트워크 디바이스는 클라이언트(102a-102n)를 콘텐츠 전송 시스템(100a)의 노드(예를 들어, 에지 노드(110))로 연결하도록 구성된다. 사용자 인터페이스는 콘텐츠 데이터에 기반하여 출력하고(예를 들어, 매체 콘텐츠, 게임, 정보 등의 디스플레이하고) 사용자 입력을 사용자(101a-101n)로부터 수신하도록 구성된다.
일부 예들에서, 콘텐츠 전송 시스템(100a)은 오리진 서버(150)로부터 유래되는 콘텐츠 데이터를 클라이언트(102a-102n)로 전달하고 분배하기 위한 CDN에 대응한다. 예를 들어, 콘텐츠 전송 시스템(100a)은 노드(110, 140, …, 및 150)를 포함하는데, 오리진 서버(150)는 적어도 하나의 노드(미도시)에 연결되고, 적어도 하나의 노드 중 하나는 노드(140)에 연결되며, 노드(140)는 에지 노드(110)에 연결된다. 콘텐츠 전송 시스템(100a) 내의 오리진 서버(150), 노드(140), 에지 노드(110), 및 다른 노드(미도시)는 상이한 위치에 위치될 수 있고, 따라서 지리적으로 분포된 콘텐츠 전송 시스템(100a)을 형성한다. 노드(140) 및 오리진 서버(150) 사이에 추가적 노드가 존재할 수 있지만, 노드(140)는 오리진 서버(150)에 직접적으로 연결될 수 있고, 또는 노드(140)가 오리진 서버(150)일 수 있다.
오리진 서버(150)의 콘텐츠 데이터는 복제되고, 노드(140) 및 다른 노드(미도시) 내를 포함하는 콘텐츠 전송 시스템(100a) 전체의 다수의 위치(예를 들어, 다수의 노드) 내에 캐싱될 수 있다. 본 명세서에서 사용될 때, 노드(140)란 오리진 서버(150)에 의하여 제공된 콘텐츠 데이터의 복제본을 저장하는 콘텐츠 전송 시스템(100a)내의 임의의 노드(오리진 서버(150) 및 에지 노드(110) 사이의 노드)를 가리킨다. 오리진 서버(150) 란 콘텐츠 데이터의 소스를 가리킨다. 오리진 서버(150) 콘텐츠 전송 시스템(100a)의 고객(예를 들어, 콘텐츠 소유자, 콘텐츠 발행자, 또는 시스템(100a)의 가입자)에게 속함으로써, 고객이 콘텐츠 데이터를 전달하기 위해서 콘텐츠 전송 시스템(100a)을 사용하는 것에 대해 비용을 지불하게 할 수 있다. 콘텐츠 데이터의 예는 비한정적으로, 웹페이지 및 웹 객체(예를 들어, 텍스트, 그래픽, 스크립트 등), 다운로드가능한 객체(예를 들어, 미디어 파일, 소프트웨어, 문서 등), 실시간 스트리밍 미디어, 주문형 스트리밍 미디어, 소셜 네트워크, 및 애플리케이션(예를 들어, 온라인 다자간 게임, 만남 애플리케이션, e-커머스 애플리케이션, 포털 등) 등을 포함한다.
노드(110, 140), 및 에지 노드(110) 및 오리진 서버(150) 사이의 다른 노드(미도시)가 콘텐츠 전송 시스템(100a)의 "백본(backbone)"을 형성하고, 오리진 서버(150)로부터 클라이언트(102a-102n)로의 경로를 제공한다. 노드(140)는 노드(140)가 에지 노드(110) 및 오리진 서버(150)에 있다면 에지 노드(110)에 대해서 업스트림이다. 백본을 구성하는 노드는, 오리진 서버(150)로부터 클라이언트(102a-102n)까지의 홉(hop) 또는 링크의 개수, 레이턴시, 이용가능성, 비용, 및 다른 적절한 기준들을 고려하면서 그러한 노드의 위치에 기반하여 동적으로 또는 정적으로 선택될 수 있다.
일부 실시형태들에서, 에지 노드(110)란 클라이언트(102a-102n)로의 에지 노드(110)의 근접성이 주어지면 "에지 노드"라고 불린다. 예를 들어, 영역(105) 내에 있는 클라이언트(102a-102n)는 에지 노드(110)의 클라이언트(102a-102n)까지의 근접성이 제공되면 에지 노드(110)와 연관되고 연결될 수 있다. 다르게 말하면, 에지 노드(110)는 콘텐츠 전송 시스템(100a)의 에지에 있고, 에지 노드(110)는 클라이언트(102a-102n)에 직접적으로 연결된다. 통상적으로, 에지 노드가 연결된 클라이언트에 더 가까울수록, 그러한 클라이언트가 해당 에지 노드로부터 콘텐츠 데이터를 수신하는 것에 대해서 경험하는 레이턴시가 적어진다. 따라서, 성능은 클라이언트(102a-102n)에 대한 에지 노드(110)의 지리적 근접성에 달려 있다. CDN 제공자는 통상적으로 에지 노드를 의도된 클라이언트에 가능한 한 가깝게 배치한다. 따라서, 에지 노드(110)는 영역(105) 내에 위치될 수 있다. 일부 실시형태들에서, 에지 노드(110)는 오리진 서버(150)에 직접적으로 연결될 수 있다.
일부 실시형태들에서, 노드(140)(및 도시되지 않은 노드(140) 및 오리진 서버(150) 사이의 다른 노드)는 "중간 노드"라고 불린다. 중간 노드는 에지 노드를 다양한 네트워크 링크 또는 "홉(hop)"을 통하여 오리진 서버(150)에 링크시킨다. 중간 노드는 콘텐츠 데이터(및 그 업데이트)를 에지 노드에 제공할 수 있다. 즉, 에지 노드(110)가 클라이언트(102a-102n)에 의해 요청된 콘텐츠 데이터의 복제본을 현재 캐싱하지 않고 있다면, 오리진 서버(150)는 콘텐츠 데이터(및 그 업데이트)를 노드(140)를 통해서 에지 노드(110)로 제공할 수 있다.
클라이언트(102a-102n) 중 하나 및 에지 노드(110) 사이의 각각의 링크는 데이터를 교환하기 위한 적절한 네트워크 연결에 대응한다. 또한, 노드/서버(110, 140), …, 및 150) 중 두 개 사이의 각각의 링크는 데이터를 교환하기 위한 적절한 네트워크 연결을 나타낸다. 네트워크 연결은 클라이언트(102a-102n), 노드(110, 140) 등, 및 오리진 서버(150) 사이에서 표시된 방식으로 데이터, 값, 명령, 메시지 등의 교환을 허용하도록 구성된다. 네트워크 연결은 임의의 적절한 근거리 네트워크(LAN) 또는 광역 네트워크(WAN) 연결일 수 있다. 예를 들어, 각각의 네트워크 링크는 FDMA(Frequency Division Multiple Access), TDMA(Time Division Multiple Access), SONET(Synchronous Optical Network), DWDM(Dense Wavelength Division Multiplexing), OTN(Optical Transport Network), CDMA(Code Division Multiple Access)(특히, EVDO(Evolution-Data Optimized)), UMTS(Universal Mobile Telecommunications Systems)(특히, TD-SCDMA(Time Division Synchronous CDMA) 또는 TDS), WCDMA(Wideband Code Division Multiple Access), LTE(Long Term Evolution), eMBMS(evolved Multimedia Broadcast Multicast Services), HSDPA(High-Speed Downlink Packet Access) 등), UTRA(Universal Terrestrial Radio Access), GSM(Global System for Mobile Communications), 1x(Code Division Multiple Access 1x Radio Transmission Technology), GPRS(General Packet Radio Service), PCS(Personal Communications Service), 802.11X, 지그비, 블루투스, Wi-Fi, 임의의 적절한 유선 네트워크, 이들의 조합, 및 기타 등등에 의해서 지원될 수 있다.
도시된 바와 같이, 에지 노드(110)는 캐싱 에이전트(120) 및 비즈니스 로직 에이전트(130)를 포함한다. 캐싱 에이전트(120) 오픈-소스 플랫폼일 수 있고, 클라이언트(102a-102n)로부터 수신된 콘텐츠(예를 들어, HTTP 요청)에 대한 요청을 처리하며, 요청된 콘텐츠 데이터를 수신하고 추가적 클라이언트가 동일한 콘텐츠 데이터는 경우에 대비하여 요청된 콘텐츠 데이터를 캐싱하도록 구성된다. 이러한 관점에서, 캐싱 에이전트(120)는 서비스 요청 엔진(122) 및 캐싱 엔진(124)을 포함한다.
서비스 요청 엔진(122)의 일 예는 클라이언트(102a-102n)로부터 수신된 HTTP 요청을 수신하고 처리하도록 구성되는 HTTP 서비스 엔진이다. 서비스 요청 엔진(122)은 HTTP 요청을 수신하고 처리하기 위한 적절한 프로토콜(예를 들어, HTTP)을 위하여 구성된다. 다르게 말하면, 서비스 요청 엔진(122)은 최종 사용자(101a-101n)로부터의 HTTP 요청에 설명된 방식으로 응답하도록 구성된다.
캐싱 엔진(124)은 캐싱 에이전트(120)에 의하여 캐싱을 구현하도록 구성된다. 예를 들어, 캐싱 엔진(124)은 캐시 저장소(126)를 포함하거나 이에 동작하도록 커플링된다. 캐시 저장소(126)는 캐싱 엔진(124) 및 캐싱 에이전트(120)에 대하여 국지적이다. 캐싱 에이전트(120)에 의하여(예를 들어, 캐싱 엔진(124)에 의하여) 캐싱된 콘텐츠 데이터는 캐시 저장소(126) 내에 저장된다.
비즈니스 로직 에이전트(130)는 에지 노드(110)에서 비즈니스 로직을 구현하도록 구성된다. 예를 들어, 비즈니스 로직 에이전트(130)는 비즈니스 로직 엔진(132)을 포함한다. 비즈니스 로직 엔진(132)은 인증, 캐싱 에이전트(120)에게 비즈니스 정보를 제공하여 캐싱 에이전트(120)가 정확한 통계 및 로그를 유지하게 하는 것, 캐시 키를 연산하는 것 등을 위해서 구성된다. 예를 들어, 비즈니스 로직 엔진(132)은 클라이언트(102a-102n)에 의하여 요청된 콘텐츠 데이터가 콘텐츠 전송 시스템(100a)의 유효한 고객에게 속하는지 여부, 고객의 규칙이 콘텐츠 데이터가 클라이언트(102a-102n)로 서비싱되게 허용하는지 여부, 콘텐츠 전송 시스템(100a)의 규칙이 콘텐츠 데이터가 클라이언트(102a-102n)로 서비싱되게 허용하는지 여부 등을 결정하도록 구성된다.
더욱이, 비즈니스 로직 에이전트(130)는, 캐시 저장소(126)에 저장된 콘텐츠 데이터가 캐시 잠금된 경우, 캐싱 에이전트(120)에 대한 지능적 버퍼링-채움 프록시를 구현하도록 구성되는 버퍼-채움 프록시 엔진(134)을 포함한다. 예를 들어, 버퍼-채움 프록시 엔진(134)은 캐시 저장소(136)를 포함하거나 이에 동작하도록 커플링된다. 캐시 저장소(136)는 버퍼-채움 프록시 엔진(134) 및 비즈니스 로직 에이전트(130)에 대하여 국지적이다. 비즈니스 로직 에이전트(130)에 의하여(예를 들어, 버퍼-채움 프록시 엔진(134)에 의하여) 캐싱된 콘텐츠 데이터는 캐시 저장소(136) 내에 저장된다. 비즈니스 로직 엔진(132) 및 버퍼-채움 프록시 엔진(134) 양자 모두를 포함하는 비즈니스 로직 에이전트(130)는, 비즈니스 로직 에이전트(130)에 의하여 오픈된 동일한 연결이 비즈니스 로직 엔진(132) 및 버퍼-채움 프록시 엔진(134) 양자 모두에 의한 인증 및 버퍼링-채움 양자 모두를 위하여 사용되는 덕분에, 인증 및 버퍼링-채움 서비스 양자 모두가 동일한 프로세스에서 구현될 수 있다는 것을 표시한다. 또는, 비즈니스 로직 엔진(132) 및 버퍼-채움 프록시 엔진(134)은 노드(예를 들어, 에지 노드(110) 또는 노드(111)) 상의 별개의 프로세스에서 실행될 수 있다.
도 1a에 도시된 바와 같이, 캐싱 에이전트(120) 및 비즈니스 로직 에이전트(130)는 동일한 노드(에지 노드(110)), 동일한 서버, 동일한 컴퓨터, 동일한 "박스" 등에 제공된다. 캐싱 에이전트(120) 및 비즈니스 로직 에이전트(130)는 상이한 기능성을 가지고, 개별 에이전트로서 구현된다. 캐싱 에이전트(120) 및 비즈니스 로직 에이전트(130)는 동일한 에지 노드(110)의 처리 및 저장 능력에 의해서 구현된다. 다르게 말하면, 비즈니스 로직 에이전트(130)는 동일한 에지 노드(110) 상에서 캐싱 에이전트(120) 외부에 있고, 그 반대의 경우도 마찬가지이다. 두 개의 에이전트(120 및 130)를 동일한 에지 노드(110) 상에 제공함으로써, 요청 서비싱/캐싱 로직 및 비즈니스 로직이 분리될 수 있고, 따라서 별개의 로직을 관리하고 소프트웨어에 업데이트를 제공하기 위한 그래뉼래러티(granularity)가 제공된다. 캐싱 에이전트(120)가 업스트림 타겟 선택 기능을 이미 가지고 있는 일부 예들에서, 업스트림 타겟 선택을 비즈니스 로직 에이전트(130)에서 복제할 필요가 없다. 비즈니스 로직 에이전트(130)에 오류가 있다는 것이 검출된다면, 본 명세서에서 설명된 바와 같은 버퍼-채움 기능은 비즈니스 로직 에이전트(130)로부터 릴리스되거나 제거될 수 있고, 캐시 잠금 피쳐가 캐시 잠금이 이네이블된 상태에서 동일한 콘텐츠 데이터에 대한 여러 요청을 어드레싱할 수 있다(효율성은 떨어지지만).
도 1a에 도시된 바와 같이, 캐싱 에이전트(120) 및 비즈니스 로직 에이전트(130)는 네트워크(140a)를 통하여 서로 동작하도록 커플링된다. 일부 예들에서, 네트워크(140a)는 동일한 노드 상의 두 에이전트들을 위한 통신을 제공하도록 구성되는 로컬 호스트 연결이다. 일부 예들에서, 로컬 호스트 연결은 HTTP 연결, HTTP/2 연결, 전송 제어 프로토콜(TCP) 연결 등이다. 일부 예들에서, 로컬 호스트 연결은, 캐싱 에이전트(120) 및 비즈니스 로직 에이전트(130)가 에지 노드(110)의 상이한 하드웨어(예를 들어, 상이한 프로세서, 상이한 메모리 등)에 구현되는 실시형태에서는 PCI(peripheral component interconnect) 연결이다. 그러므로, 네트워크(140a)는 인트라-노드 네트워크 연결이다.
본 명세서에서 더 상세히 설명되는 바와 같이, 본 발명은 인증 및 버퍼링-채움 양자 모두를 위하여 캐싱 에이전트(120) 및 비즈니스 로직 에이전트(130) 사이의 네트워크(140a)를 통한 연결을 활용함으로써(leveraging) 듀얼-에이전트 스킴을 개선한다. 클라이언트(102a-102n) 중 하나로부터 서비스 요청 엔진(122)에 의해 수신된 각각의 요청에 대하여 별개의 연결이 오픈된다. 클라이언트(102a-102n) 중 하나로부터 서비스 요청 엔진(122)에 의해 수신된 동일한 요청에 대한 인증 및 버퍼링-채움 프록시를 위한 다수의 요청(예를 들어, 인증 요청, 콘텐츠 요청 등)이 동일한 연결에서 순차적으로 통신되고 서비싱될 수 있다. 다르게 말하면, 이러한 연결은 "활성 상태로 유지된다(kept-alive)". 일부 예들에서, 다수의 인증 요청 및 콘텐츠 요청의 다중화된 서비싱이, 예를 들어 HTTP/2 구현형태의 경우에서와 같이 동일한 연결 상에서 허용될 수 있다.
도 1b는 일부 실시형태에 따르는 콘텐츠 전달 시스템(100b)의 도면이다. 도 1a 및 도 1b를 참조하면, 콘텐츠 전송 시스템(100b)은 오리진 서버(150)에 의하여 제공된 콘텐츠 데이터를 다양한 클라이언트(102a-102n)로 전달하도록 구성된다. 콘텐츠 전송 시스템(100b)은 콘텐츠 전송 시스템(100a)과 유사하지만, 콘텐츠 전송 시스템(100b)에서는 캐싱 에이전트(120) 및 비즈니스 로직 에이전트(130)가 상이한 노드(110 및 111) 상에 제공된다는 점에서는 콘텐츠 전송 시스템(100a)과 다르다. 예를 들어, 캐싱 에이전트(120)는 요청 서비싱 및 캐싱 기능성을 위해서 에지 노드(110) 상에 제공될 수 있고, 비즈니스 로직 에이전트(130)는 비즈니스 로직 기능성을 위해서 다른 노드(111) 상에 제공된다. 노드(111 및 140)는 에지 노드(110)에 대해서 업스트림 노드이다.
캐싱 에이전트(120) 및 비즈니스 로직 에이전트(130)는 네트워크(140b)를 통하여 동작하도록 커플링된다. 네트워크(140b)는 캐싱 에이전트(120) 및 비즈니스 로직 에이전트(130) 사이에서의 데이터, 값, 명령, 메시지 등의 교환을 허용하도록 구성된다. 네트워크(140b)는 임의의 적절한 LAN 또는 WAN 연결일 수 있다. 예를 들어, 네트워크(140b)는 FDMA, TDMA, SONET, DWDM, OTN, CDMA(특히, EVDO), UMTS(특히, TD-SCDMA 또는 TDS WCDMA, LTE, eMBMS, HSDPA 등), UTRA, GSM, 1x, GPRS, PCS, 802.11X, 지그비, 블루투스, Wi-Fi, 임의의 적절한 유선 네트워크, 이들의 조합, 및/또는 기타 등등에 의해서 지원될 수 있다. 그러므로, 네트워크(140b)는 인터-노드 네트워크 연결이다.
하나의 노드(에지 노드(110))가 노드(111)에 연결되는 것으로 도시되지만, 하나 이상의 추가적 에지 노드(예컨대, 비한정적으로 에지 노드(110))도 노드(111)에 연결될 수 있다. 다르게 말하면, 요청 서비싱 및 캐싱을 위해서 구성된 다수의 에지 노드가 비즈니스 로직을 위해서 구성된 동일한 중간 노드에 연결될 수 있다. 이러한 노드 전개는 하드웨어가 효율적으로 할당되게 한다. 예를 들어, 캐싱 에이전트(120)가 있는 에지 노드(110)는 에지 노드(110)가 캐싱과 관련된다면, 더 큰 저장 능력 및 더 적은 계산 능력을 가질 수 있다. 일부 예들에서, 기본적인 연산이 HTTP 처리를 위하여 에지 노드(110)에 제공될 수 있다. 비즈니스 로직 에이전트(130)가 있는 노드(111)는 노드(111)가 비즈니스 로직(예를 들어, 인증, 규칙 체크 등)과 연관된다면 더 큰 계산 능력 및 더 적은 저장 능력을 가질 수 있다.
일부 예들에서, 버퍼링-채움 프록시 엔진(134)은 비즈니스 로직 엔진(132)과 별개일 수 있다. 예를 들어, 버퍼링-채움 프록시 엔진(134) 및 비즈니스 로직 엔진(132)은 동일한 노드에서 동작하는 별개의 프로세스/애플리케이션일 수 있다. 또는, 버퍼링-채움 프록시 엔진(134) 및 비즈니스 로직 엔진(132)은 상이한 노드 상에서 동작하고 적절한 네트워크를 통해 연결된 별개의 프로세스/애플리케이션일 수 있다. 이러한 실시형태에서, 인증/메타데이터만이 요청되는지 여부(예를 들어, 캐싱 엔진(124)이 콘텐츠 데이터의 복제본을 가지고 있음) 또는 콘텐츠 데이터가 역시 취출되어야 하는지 여부(성공적 인증을 가정함)를 표시하는 표시(indication)가 인증 요청 내에 포함될 수 있다.
도 2는 일부 실시형태에 따르는 노드(200)의 블록도이다. 도 1a 내지 도 2를 참조하면, 일부 실시형태들에서 노드(200)는 노드(110, 111, 140), 및 노드(140) 및 오리진 서버(150) 사이의 노드(존재한다면)의 비한정적인 예이다. 도시된 바와 같이, 노드(200)는 처리 회로(210) 및 네트워크 디바이스(220) 중 하나 이상을 포함한다.
처리 회로(210)는 노드(200)에 대해서 본 명세서에 설명된 다양한 기능을 수행하도록 구성된다. 처리 회로(210)는 프로세서(212) 및 메모리(214)를 포함한다. 프로세서(212)는 범용 프로세서, ASIC(Application Specific Integrated Circuit), 하나 이상의 FPGA(Field Programmable Gate Array), DSP(Digital Signal Processor), 처리 컴포넌트들의 그룹, 또는 다른 적절한 전자 처리 컴포넌트로 구현될 수 있다. 메모리(214)는 RAM(Random Access Memory), ROM(Read-Only Memory), NVRAM(Non-Volatile RAM), 플래시 메모리, 하드 디스크 저장소, 또는 다른 적절한 데이터 저장 유닛으로 구현될 수 있다. 메모리(214)는 데이터 및/또는 프로세서(212)에 의해 실행되는 다양한 프로세스를 용이화하기 위한 컴퓨터 코드를 저장한다. 더욱이, 메모리(214)는 유형의(tangible), 비일시적 휘발성 메모리 또는 비-휘발성 메모리이거나 이를 포함한다. 따라서, 메모리(214)는 데이터베이스 컴포넌트, 객체 코드 컴포넌트, 스크립트 컴포넌트, 또는 본 명세서에서 설명된 다양한 기능을 지원하기 위한 임의의 다른 타입의 정보 구조체를 포함한다.
일부 예들에서, 에지 노드(110)(도 1a)의 처리 회로(210)는 캐싱 에이전트(120) 및 비즈니스 로직 에이전트(130)를 에지 노드(110) 상에서 별개의 에이전트로서 구현하도록 구성된다. 에지 노드(110)(도 1a)의 메모리(214)는 별개의 에이전트에 동작하도록 커플링된 별개의 저장소로서 캐시 저장소(126 및 136)를 구현하기 위하여 사용될 수 있다. 일 예에서, 캐시 저장소(126 및 136)는 메모리(214) 상의 별개의 요청(petition)에 대응한다. 다른 예에서, 메모리(214)는, 에지 노드(110)(도 1a)의 다른 컴포넌트에 적절한 내부 버스를 통해서 연결된 별개의 메모리 디바이스를 포함할 수 있다. 캐시 저장소(126)는 별개의 메모리 디바이스 중 첫 번째 것에 구현되고, 캐시 저장소(136)는 별개의 메모리 디바이스 중 두 번째 것에 구현된다.
일부 예들에서, 에지 노드(110)(도 1b)의 처리 회로(210)는 캐싱 에이전트(120)를 구현하도록 구성되고, 노드(111)(도 1b)의 처리 회로(210)는 비즈니스 로직 에이전트(130)를 구현하도록 구성된다. 에지 노드(110)(도 1b)의 메모리(214)는 캐시 저장소(126)를 구현하기 위하여 사용될 수 있고, 노드(111)(도 1b)의 메모리(214)는 캐시 저장소(136)를 구현하기 위하여 사용될 수 있다.
네트워크 인터페이스(220)는 클라이언트(예를 들어, 클라이언트(102a-102n)), 콘텐츠 전송 시스템(100a 또는 100b) 내의 다른 노드, 및/또는 오리진 서버(150)와의 통신을 구축하도록 구성된다. 일부 예들에서, 네트워크 인터페이스(220)는 네트워크(140a 또는 140b)를 구축하도록 구성된다. 네트워크 인터페이스(220)는 이것을 달성하기 위한 하드웨어 및 소프트웨어를 포함한다. 일부 구현형태들에서, 네트워크 인터페이스(220)는 셀룰러 송수신기(셀룰러 표준에 대해서 구성됨), 로컬 무선 네트워크 송수신기(802.11X, 지그비, 블루투스, Wi-Fi, 또는 기타 등등에 대함), 유선 네트워크 인터페이스, 이들의 조합(예를 들어, 셀룰러 송수신기 및 블루투스 송수신기 양자 모두), 및/또는 기타 등등을 포함한다.
도 3a는 다양한 실시형태에 따라서 콘텐츠 전송 시스템(100a 또는 100b)을 위한 캐싱을 관리하기 위한 방법(300a)을 예시하는 흐름도이다. 도 1a 내지 도 3a를 참조하면, 방법(300a)은 비즈니스 로직 에이전트(130)의 캐시 저장소(136)를, 캐싱 에이전트(120)가 캐시 잠금을 하도록 이네이블된 바 있는 콘텐츠 데이터에 대하여, 캐싱 에이전트(120)의 지능적 버퍼링-채움을 위하여 활용하는 것과 관련된다. 방법(300a)은 캐싱 에이전트(120)에 의하여 수행된다.
302에서, 캐싱 에이전트(120)(예를 들어, 서비스 요청 엔진(122))는 콘텐츠 데이터에 대한 요청을 클라이언트(102a)로부터 수신한다. 요청의 일 예는 HTTP 요청이다. 이러한 요청은 클라우드 및/또는 인터넷으로부터 수신될 수 있다. 클라이언트(102a) 란 방법(300a)에 대한 에지 노드(110)로부터 콘텐츠 데이터를 요청하고 있는, 클라이언트(102a-102n) 중 첫 번째 것을 가리킨다.
일부 예들에서, 요청을 수신하는 것에 응답하여, 캐싱 에이전트(120)(예를 들어, 서비스 요청 엔진(122))는 해당 특정 요청에 대응하는 연결을 네트워크(140a 또는 140b) 내에 오픈한다. 예를 들어, 서비스 요청 엔진(122)은 클라이언트(102a)로부터 수신된 요청에 대응하는 포트를 요청-관련 데이터를 비즈니스 로직 에이전트(130)와 통신하기 위해서 로컬 호스트 네트워크(예를 들어, 네트워크(140a)) 내에 오픈할 수 있다. 다른 예에서는, 서비스 요청 엔진(122)은 클라이언트(102a)로부터 수신된 요청에 대응하는 전용 연결을 요청-관련 데이터를 비즈니스 로직 에이전트(130)와 통신하기 위해서 로컬 호스트 네트워크(140b) 내에 오픈할 수 있다.
캐싱 에이전트(120)(예를 들어, 서비스 요청 엔진(122))는 인증 요청을 네트워크(140a)를 통하여(예를 들어, 오픈된 포트를 통하여) 또는 네트워크(140b)를 통하여(예를 들어, 전용 연결을 통하여) 비즈니스 로직 엔진(132)으로 전송하여, 클라이언트(102a)로부터 수신된 요청을 인증한다. 비즈니스 로직 엔진(132)은 클라이언트(102an)에 의하여 요청된 콘텐츠 데이터가 콘텐츠 전송 시스템(100a 또는 100b)의 유효한 고객에게 속하는지 여부, 고객의 규칙이 콘텐츠 데이터가 클라이언트(102a)로 서비싱되게 허용하는지 여부, 콘텐츠 전송 시스템(100a 또는 100b)의 규칙이 콘텐츠 데이터가 클라이언트(102a)로 서비싱되게 허용하는지 여부 등을 결정하도록 구성된다. 서비스 요청 엔진(122)은 인증 응답을 비즈니스 로직 엔진(132)으로부터 수신한다. 인증 응답은 클라이언트(102a)로부터 수신된 요청이 서비싱될 수 있는지 여부(예를 들어, "예" 또는 "아니오")를 서비스 요청 엔진(122)에게 표시한다. 일부 예들에서, 요청이 서비싱될 수 있는지 여부의 표시에 추가하여, 인증 응답은 비한정적으로 서버 식별자(ID), 가입자 ID, 사용할 캐시 키 등과 같은 메타데이터를 포함할 수 있다. 클라이언트(102a)로부터 수신된 요청이 서비싱될 수 없다고 인증 응답에 기반하여 결정하는 것에 응답하여, 서비스 요청 엔진(122)은 클라이언트(102a)에게 이에 상응하여 응답한다.
반면에, 클라이언트(102a)로부터 수신된 요청이 서비싱될 수 있다고 인증 응답에 기반하여 결정하는 것에 응답하여, 캐싱 엔진(124)은 캐싱 에이전트(120)가 콘텐츠 데이터를 채울 필요가 있는지 여부를 결정한다. 예를 들어, 304에서, 캐싱 엔진(124)은 요청된 콘텐츠 데이터가 캐시 저장소(126) 내에 캐싱되는지 여부를 결정한다. 콘텐츠 데이터가 캐시 저장소(126) 내에 캐싱된다고 결정하는 것(304: 예)에 응답하여, 캐싱 에이전트(120)는 306에서 콘텐츠 데이터를 캐싱 에이전트(120)의 캐시 저장소(126)로부터 클라이언트(102a)로 제공한다.
반면에, 콘텐츠 데이터가 캐시 저장소(126) 내에 캐싱되지 않는다고 결정하는 것(304: 아니오)에 응답하여, 캐싱 에이전트(120)(예를 들어, 캐싱 엔진(124))는 310에서, 캐싱 에이전트(120)가 클라이언트(102a)에 대한 콘텐츠 데이터를 요청하고 있다는 것을 표시하는 콘텐츠 요청을 버퍼-채움 프록시 엔진(134)에 전송한다. 콘텐츠 요청은 인증을 위하여 포트 또는 네트워크(140a 또는 140b) 내에 구축된 연결(클라이언트(102a)로부터의 요청에 대해서 전용임)을 통하여 전송될 수 있다.
일부 예들에서, 콘텐츠 요청은 콘텐츠 데이터의 어드레스 및 그로부터 콘텐츠 데이터가 수신/취출될 업스트림 노드의 어드레스를 포함한다. 일부 예들에서, 콘텐츠 데이터의 어드레스는 범용 리소스 로케이터(URL)이다. 업스트림 노드는 호스트(102a)에 의해 요청된 콘텐츠 데이터의 복제본을 저장하는 노드를 참조한다. 업스트림 노드의 예는 노드(140) 및 오리진 서버(150)를 포함한다. 캐싱 엔진(124)은 업스트림 노드를 선택할 수 있다. 캐싱 엔진(124)은 비한정적으로, 업스트림 노드 선택 툴(예를 들어, 일관적인 해싱을 통함), 시스템(100a 또는 100b)의 노드의 건강(예를 들어, 레이턴시, 용량 등)을 추적하기 위한 건강 상태 정보 등을 포함하는 적절한 캐싱 툴을 가진다. 캐싱 엔진(124) 콘텐츠 데이터의 복제본을 현재 저장하고 있는 건강한 업스트림 노드를, 예를 들어 콘텐츠 데이터의 복제본의 이용가능성, 레이턴시, 에지 노드(110)(예를 들어, 시스템(100a 및 100b) 내에 있음)로의 근접성, 노드(111)(예를 들어, 시스템(100b) 내의에 있음)로의 근접성, 레이턴시, 이용가능성/건강 등에 기반하여 식별하기 위해서 이러한 캐싱 툴을 사용할 수 있다. 업스트림 노드의 어드레스는 노드/서버 ID, IP 어드레스 등일 수 있다.
일부 예들에서, 버퍼-채움 프록시 엔진(134)은 캐싱 에이전트(120)에는 "투명(transparent)"하게 보이게 된다. 예를 들어, 비록 캐싱 에이전트(120)가 업스트림 노드로 전송될(업스트림 노드의 IP 어드레스에 따라서) 콘텐츠 요청을 구성하지만, 그 대신에 버퍼-채움 프록시 엔진(134)의 공지된 IP 어드레스를 사용하여 버퍼-채움 프록시 엔진(134)에 연결하게끔 프로토콜이 캐싱 에이전트(120)를 구성하도록, 캐싱 에이전트(120)(예를 들어, 캐싱 엔진(124))에서 프로토콜이 구현될 수 있다. 다르게 말하면, 프로토콜은 버퍼-채움 프록시 엔진(134)으로의 콘텐츠 요청 내의 업스트림 노드의 어드레스를 유지하는 반면에, 업스트림 노드의 어드레스로부터의 어드레스를 버퍼-채움 프록시 엔진(134)의 공지된 어드레스로 변환한다. 버퍼-채움 프록시 엔진(134)은, 캐싱 에이전트(120)가 이미 이용가능한 캐싱 툴을 가진다면 노드 선택을 수행하지 않는다.
312에서, 캐싱 엔진(124)은 캐시 저장소(126)에 콘텐츠 데이터를 채우는 것을 시작하고, 콘텐츠 데이터에 대해서 캐시 저장소(126) 내에 캐시 잠금을 이네이블한다. 일부 실시형태들에서, 콘텐츠 요청을 수신하는 것에 응답하여, 버퍼-채움 프록시 엔진(134)은 콘텐츠 요청에서 식별된 업스트림 노드에 연결되고, 업스트림 노드로부터 콘텐츠 데이터를 수신한다. 버퍼-채움 프록시 엔진(134)은 캐시 저장소(136) 내에 콘텐츠 데이터를 채움 시작하고, 콘텐츠 데이터를 네트워크(140a 또는 140b)의 포트 또는 연결을 통하여 캐싱 에이전트(120)에 릴레이한다. 따라서, 캐시 저장소(126)는 버퍼-채움 프록시 엔진(134)을 통하여 업스트림 노드로부터의 콘텐츠 데이터로 채워지고 있으며, 이것은 업스트림 노드 및 에지 노드(110) 사이의 프록시 또는 릴레이로서의 역할을 하고 있다. 캐시 저장소(126)가 콘텐츠 데이터로 채워지는 동안에, 콘텐츠 데이터에 대한 캐시 잠금이 이네이블된다. 캐시 저장소(126)가 콘텐츠 데이터로 채워지고 있는 때에, 클라이언트(102a)가 콘텐츠 데이터를 획득하기 전에 콘텐츠 데이터 전부가 캐시 저장소(126) 내에 채워질 때까지 대기할 필요가 없도록, 콘텐츠 데이터가 클라이언트(102a)로 전송될 수 있다. 그러나, 다른 클라이언트로부터의 동일한 콘텐츠 데이터에 대한 임의의 추가적 요청은 캐시 잠금이 이네이블되는 한 캐시 저장소(126)로부터 서비싱될 수 없다.
314에서, 캐싱 에이전트(120)는 동일한 콘텐츠 데이터에 대한 추가적 요청을 추가적 클라이언트(102b)로부터 수신한다. 이러한 요청(예를 들어, HTTP 요청)에 기반하여, 캐싱 에이전트(120)는 추가적 요청이 동일한 콘텐츠에 대한 것이지만 상이한 클라이언트로부터 온 것이라고 결정할 수 있다.
일부 예들에서, 추가적 요청을 수신하는 것에 응답하여, 캐싱 에이전트(120)(예를 들어, 서비스 요청 엔진(122))는 해당 특정 요청에 대응하는 연결을 네트워크(140a 또는 140b) 내에 오픈한다. 예를 들어, 서비스 요청 엔진(122)은 클라이언트(102b)로부터 수신된 요청에 대응하는 포트를 데이터를 비즈니스 로직 에이전트(130)와 통신하기 위해서 로컬 호스트 네트워크(예를 들어, 네트워크(140a)) 내에 오픈할 수 있다. 포트는 302에서 수신된 요청에 대해서 오픈된 포트와 다르다. 다른 예에서는, 서비스 요청 엔진(122)은 클라이언트(102b)로부터 수신된 요청에 대응하는 전용 연결을 데이터를 비즈니스 로직 에이전트(130)와 통신하기 위해서 로컬 호스트 네트워크(140b) 내에 오픈할 수 있다. 전용 연결은 302에서 수신된 요청에 대해서 오픈된 전용 연결과 다르다.
일부 실시형태들에서, 캐싱 에이전트(120)(예를 들어, 서비스 요청 엔진(122))는 302에서 수신된 요청에 대해서 설명된 것과 유사한 방식으로, 클라이언트(102b)로부터 수신된 요청을 인증하라는 인증 요청을 네트워크(140a 또는 140b)를 통하여 비즈니스 로직 엔진(132)으로 전송한다. 서비스 요청 엔진(122)은 비즈니스 로직 엔진(132)으로부터 인증 응답을 수신하고, 여기에서 인증 응답은 클라이언트(102b)로부터 수신된 요청이 서비싱될 수 있는지 여부를 서비스 요청 엔진(122)에 표시한다. 설명된 바와 같이, 인증 응답은 비한정적으로, 서버 ID, 가입자 ID, 사용할 캐시 키와 같은 메타데이터를 더 포함할 수 있다. 클라이언트(102b)로부터 수신된 요청이 서비싱될 수 없다고 인증 응답에 기반하여 결정하는 것에 응답하여, 서비스 요청 엔진(122)은 클라이언트(102b)에게 이에 상응하여 응답한다.
반면에, 클라이언트(102b)로부터 수신된 요청이 서비싱될 수 있다고 인증 응답에 기반하여 결정하는 것에 응답하여, 캐싱 엔진(124)은 316에서, 캐시 저장소(126)에서 콘텐츠 데이터를 채우는 것이 완료되었는지 여부(예를 들어, 캐시 잠금이 디스에이블되거나 릴리스되었는지 여부)를 결정한다. 채움이 완료되고 및/또는 캐시 잠금이 디스에이블되거나 릴리스되었다고 결정하는 것(316: 예)에 응답하여, 캐싱 엔진(124)은 318에서 캐시 저장소(126)를 사용하여 콘텐츠 데이터를 클라이언트에게 제공한다.
반면에, 채움이 완료되지 않고 및/또는 캐시 잠금이 디스에이블되거나 릴리스되지 않았다고 결정하는 것(316: NO)에 응답하여, 캐싱된 콘텐츠 데이터는 버퍼-채움 프록시 엔진(134)에 의해서 추가적 클라이언트(102b)로 제공된다. 캐싱된 콘텐츠 데이터는, 캐시 저장소(126)가 콘텐츠 데이터로 채워지고 있는 동안에 버퍼-채움 프록시 엔진(134)에 의하여 클라이언트(102b)로 제공된다. 예시적인, 채움이 완료되지 않고 및/또는 캐시 잠금이 디스에이블되거나 릴리스되지 않았다고 결정하는 것(316: 아니오)에 응답하여, 캐싱 엔진(124)은 320에서 추가적인 콘텐츠 데이터를 버퍼-채움 프록시 엔진(134)에 전송하도록 구성된다. 추가적 콘텐츠 요청은 인증을 위하여 포트 또는 네트워크(140a 또는 140b) 내에 구축된 연결(클라이언트(102a)에 대해서 전용임)을 통하여 전송될 수 있다. 캐싱 엔진(124)은 이러한 추가적 요청에 대한 업스트림 노드를 설명된 방식으로 선택할 수 있다. 310에서 전송된 콘텐츠 요청과 유사하게, 추가적인 콘텐츠 요청은 콘텐츠 데이터의 어드레스 및 그로부터 콘텐츠 데이터가 수신/취출될 업스트림 노드의 어드레스를 포함한다. 설명된 바와 같이, 추가적 콘텐츠 요청에 대해서, 버퍼-채움 프록시 엔진(134)은 캐싱 에이전트(120)에 대해서 설명된 방식으로 "투명"하게 나타난다.
일부 구현형태들에서, 시스템(100a 및 100b)은 큰 객체 슬라이싱을 채용할 수 있다. 리소스의 크기가 수 기가바이트 이상일 수 있기 때문에, 리소스는 효율, 레이턴시, 및 대역폭 이슈를 절감하기 위해서 다수의 부분 또는 슬라이스로 분해되거나 슬라이싱될 수 있다. 슬라이스의 크기는 동일하도록 표준화될 수 있다. 주어진 리소스를 구성하는 슬라이스는 HTTP 범위에 대응할 수 있다. 다르게 말하면, 콘텐츠 데이터의 어드레스(예를 들어, URL)가 콘텐츠 데이터의 특정 슬라이스를 특정하지 않는다면, HTTP 범위는 콘텐츠 데이터의 특정 슬라이스를 더 식별한다. 따라서, 콘텐츠 요청은 콘텐츠 데이터의 어드레스에 추가하여 콘텐츠 데이터의 범위를 더 포함할 수 있다. 범위는 콘텐츠 요청에 있는 범위 헤더 내에 규정될 수 있다. 버퍼-채움 프록시 엔진(134)은 범위 헤더를 314에서 수신된 요청이 동일한 콘텐츠 데이터에 대응하는지 여부를 판정하기 위한 키의 일부로서 사용한다. 다르게 말하면, 버퍼-채움 프록시 엔진(134)은 추가적 콘텐츠 요청 중 임의의 것이 동일한 콘텐츠 데이터를 요청하고 있는지 여부를 어드레스 및 HTTP 범위에 기반하여 결정할 수 있다. 콘텐츠 데이터가 여러 슬라이스/범위를 가지는 경우, 버퍼-채움 프록시 엔진(134)이 이미 콘텐츠 데이터의 풀 버전(콘텐츠 데이터의 어드레스에 의하여 식별됨)을 캐시 저장소(136)에 채우거나 저장하고 있는 일 예에서, 320에서 수신된 콘텐츠 요청은 콘텐츠 데이터의 특정 슬라이스를 식별하는 범위 헤더를 포함한다. 버퍼-채움 프록시 엔진(134)은 특정 슬라이스를 범위 헤더에 기반하여 식별하고, 해당 콘텐츠 데이터의 슬라이스를 캐시 저장소(136)에 저장된 풀 버전으로부터 설명된 방식으로 서비싱할 수 있다.
322에서, 콘텐츠 데이터가 버퍼-채움 프록시 엔진(134)을 통하여 추가적 클라이언트(102b)에 제공된다. 추가적 콘텐츠 요청이 동일한 업스트림 노드를 식별하는 예에서, 버퍼-채움 프록시 엔진(134)은 클라이언트(102a)에 대한 제 1 콘텐츠 요청을 처리하기 위하여 업스트림 노드와의 연결을 이미 구축했다. 버퍼-채움 프록시 엔진(134) 및 업스트림 노드 사이의 동일한 연결이, 동일한 콘텐츠 데이터를 클라이언트(102b)로부터의 추가적인 요청에 서비싱하기 위해서 활용될 수 있다. 콘텐츠 요청이 상이한 업스트림 노드를 식별하는 예에서, 버퍼-채움 프록시 엔진(134)은 콘텐츠 데이터를 수신하기 위하여 상이한 업스트림 노드와의 연결을 구축하도록 구성된다.
일부 실시형태들에서, 블록(322)은 314에서 수신된 요청을 타이밍하는 것을 포함하고, 클라이언트(102b)에게 캐시 잠금이 캐시 저장소(126)에서 이네이블된 동안에 캐시 저장소(136)로부터 콘텐츠 데이터를 수신하는 대신에 버퍼-채움 프록시 엔진(134)에 연결하도록 지시한다. 예를 들어, 채움이 완료되지 않고 및/또는 캐시 잠금이 디스에이블되거나 릴리스되지 않았다고 결정하는 것(316: NO)에 응답하여, 서비스 요청 엔진(122)은 314에서 수신된 요청을 타임아웃하고(예를 들어, 타임아웃 = 0으로 설정함), 클라이언트(102b)에게 콘텐츠 데이터를 수신하기 위해서 버퍼-채움 프록시 엔진(134)에 연결하라는 것을 표시하고 버퍼-채움 프록시 엔진(134)의 어드레스(예를 들어, IP 어드레스)가 있는 메시지를 클라이언트(102b)에게 전송한다. 클라이언트(102b)는 버퍼-채움 프록시 엔진(134)에 연결할 수 있고 캐시 저장소(136) 내에 저장된 콘텐츠 데이터를 수신한다.
대안적인 실시형태들에서, 블록(322)은 콘텐츠 데이터를 인증하고 클라이언트(102b)로 릴레이하기 위하여 네트워크(140a 또는 140b) 내에서 구축된 포트 또는 연결(클라이언트(102b)에 대해 전용임)을 통하여 캐싱 에이전트(120)가 콘텐츠 데이터를 수신하는 것을 포함한다. 일부 예들에서는, 인증을 위해 구축된 포트 또는 연결을 통하여 그리고 캐싱 에이전트(120)를 거쳐서, 전용 터널이 버퍼-채움 프록시 엔진(134)으로부터 클라이언트(102b)까지 구축될 수 있다. 콘텐츠 데이터는 버퍼-채움 프록시 엔진(134)으로부터 클라이언트(102b)로 전용 터널을 통해 전달될 수 있다.
방법(300a)은 클라이언트(102a-102n) 중 추가적인 클라이언트들로부터의 추가적 요청이 설명된 방식으로 캐싱 에이전트(120)에 의하여 수신될 때 블록(314)으로 복귀한다. 본 명세서에서 더 상세히 설명되는 바와 같이, 수신되고 있는 주어진 콘텐츠에 대한 요청이 존재하는 한, 버퍼-채움 프록시 엔진(134)은 콘텐츠 데이터의 복제본을 캐시 저장소(136) 내에 유지하고, 업스트림 노드로의 업스트림 연결을 유지한다. 동일한 콘텐츠 데이터에 대한 추가적 요청이 수신되지 않고 있다는 결정에 응답하여, 콘텐츠 데이터는 캐시 저장소(136)로부터 비워질 수 있고, 버퍼-채움 프록시 엔진(134)으로부터 업스트림 노드로의 연결이 종결될 수 있다.
도 3b는 다양한 실시형태에 따라서 콘텐츠 전송 시스템(100a 또는 100b)을 위한 캐싱을 관리하기 위한 방법(300b)을 예시하는 흐름도이다. 도 1a 내지 도 3b를 참조하면, 방법(300b)은 캐싱 에이전트(120)가 캐시 잠금을 이네이블한 바 있는 콘텐츠 데이터에 대하여, 캐싱 에이전트(120)에 대한 지능적 버퍼링-채움을 위하여 버퍼-채움 프록시 엔진(134)의 캐시 저장소(136)를 활용하는 것과 관련된다. 방법(300b)은 비즈니스 로직 에이전트(130)에 의하여 수행되고, 방법(300a)에 대응한다.
설명된 바와 같이, 비즈니스 로직 에이전트(130)(예를 들어, 비즈니스 로직 엔진(132))는 인증 요청을 캐싱 에이전트(120)(예를 들어, 서비스 요청 엔진(122))로부터 네트워크(140a)를 통하여(예를 들어, 오픈된 포트를 통하여) 또는 네트워크(140b)를 통하여(예를 들어, 전용 연결을 통하여) 수신할 수 있다. 비즈니스 로직 엔진(132)은 클라이언트(102an)에 의하여 요청된 콘텐츠 데이터가 콘텐츠 전송 시스템(100a 또는 100b)의 유효한 고객에게 속하는지 여부, 고객의 규칙이 콘텐츠 데이터가 클라이언트(102a)로 서비싱되게 허용하는지 여부, 콘텐츠 전송 시스템(100a 또는 100b)의 규칙이 콘텐츠 데이터가 클라이언트(102a)로 서비싱되게 허용하는지 여부 등을 결정한다. 비즈니스 로직 엔진(132)은 인증 응답을 서비스 요청 엔진(122)에 전송한다. 인증 응답은 클라이언트(102a)로부터 수신된 요청이 서비싱될 수 있는지 여부(예를 들어, "예" 또는 "아니오")를 서비스 요청 엔진(122)에게 표시한다. 일부 예들에서, 요청이 서비싱될 수 있는지 여부의 표시에 추가하여, 인증 응답은 비한정적으로 서버 ID, 가입자 ID, 사용할 캐시 키 등과 같은 메타데이터를 포함할 수 있다.
캐싱 에이전트(120)가 콘텐츠 데이터의 복제본을 캐시 저장소(126) 내에 저장하지 않는 반면에, 비즈니스 로직 에이전트(예를 들어, 버퍼-채움 프록시 엔진(134))는 캐싱 에이전트(120)로부터 캐싱 에이전트(120)가 클라이언트(102)에 대한 콘텐츠 데이터를 요청하고 있다는 것을 표시하는 콘텐츠 요청을 352에서 수신한다. 일부 예들에서, 콘텐츠 요청은 콘텐츠 데이터의 어드레스 및 그로부터 콘텐츠 데이터가 수신/취출될 업스트림 노드의 어드레스를 포함한다.
354에서, 버퍼-채움 프록시 엔진(134)은 콘텐츠 데이터를 캐시 저장소(136) 내에 채운다. 콘텐츠 데이터는 그 어드레스가 콘텐츠 요청 내에 있는 업스트림 노드로부터 수신된다. 예를 들어, 콘텐츠 요청을 수신하는 것에 응답하여, 버퍼-채움 프록시 엔진(134)은 콘텐츠 요청에서 식별된 업스트림 노드에 연결되고, 업스트림 노드로부터 콘텐츠 데이터를 수신한다.
356에서, 버퍼-채움 프록시 엔진(134)은 캐싱된 콘텐츠 데이터를 캐싱 에이전트(120)(예를 들어, 캐싱 엔진(124))에 제공한다. 버퍼-채움 프록시 엔진(134)은 콘텐츠 데이터를 캐시 저장소(136) 내에 채움 시작하고(예를 들어, 354에서), 콘텐츠 데이터를 네트워크(140a 또는 140b)의 포트 또는 연결을 통하여 캐싱 에이전트(120)로 릴레이한다. 따라서, 캐시 저장소(126)는 버퍼-채움 프록시 엔진(134)을 통하여 업스트림 노드로부터의 콘텐츠 데이터로 채워지고 있으며, 이것은 업스트림 노드 및 에지 노드(110) 사이의 프록시 또는 릴레이로서의 역할을 하고 있다.
캐시 저장소(126)가 콘텐츠 데이터로 채워지는 동안에, 비즈니스 로직 에이전트(134)(예를 들어, 버퍼-채움 프록시 엔진(134))는 캐싱 에이전트(120)로부터 추가적 콘텐츠 요청을 수신하는 것에 응답하여 캐싱된 콘텐츠 데이터를 캐시 저장소(136) 내에 유지한다. 추가적 콘텐츠 요청은 캐싱 에이전트(120)가 추가적 클라이언트에 대하여 동일한 콘텐츠 데이터를 요청하고 있다는 것을 표시한다.
하나의 예시적인 구현형태에서는, 358에서 비즈니스 로직 에이전트(134)(예를 들어, 버퍼-채움 프록시 엔진(134))가 추가적 콘텐츠 요청이 캐싱 에이전트(120)로부터 수신되었는지 여부를 결정한다. 일부 예들에서, 358에서의 결정은 동일한 콘텐츠 데이터에 대한 마지막 콘텐츠 요청이 버퍼-채움 프록시 엔진(134)에 의해 수신된 이후의 미리 결정된 시간 기간에 기반한다. 다르게 말하면, 캐싱된 콘텐츠 데이터는, 추가적 콘텐츠 요청 중 두 개의 연속한 요청들이 미리 결정된 시간 간격 안에 수신된다는 것, 또는 352에서 수신된 콘텐츠 요청 및 추가적 콘텐츠 요청이 미리 결정된 시간 간격 안에 수신된다고 결정하는 것에 응답하여 캐시 저장소(136) 내에 유지된다. 미리 결정된 시간 간격의 예는 비한정적으로 1s, 5s, 10s, 30s, 1m, 2m, 10m 등을 포함한다.
미리 결정된 시간 간격을 구현하면, 캐시 저장소(136)를 사용한 채움이 완료되고, 캐싱 엔진(124)이 캐시 잠금을 아직 릴리스하지 않은 상황(예를 들어, 캐시 저장소(126)를 사용한 채움이 완료되지 않은 상황)을 수반하는 "경주 문제(race problem)"가 해결된다. 즉, 캐시 저장소(126 및 136)를 사용한 채움이 상이한 시간에 끝날 수 있다. 이러한 상황에서, 버퍼-채움 프록시 엔진(134)이 채움이 완료된 직후에 캐시 저장소(136)로부터 콘텐츠 데이터를 릴리스하면, 버퍼-채움 프록시 엔진(134)은 업스트림 노드와 새로운 연결을 구축하고 캐시 저장소(136)를 다시 채울 필요가 있을 수 있다. 따라서, 미리 결정된 시간 간격은 버퍼-채움 프록시 엔진(134)이 캐싱된 복제본을 릴리스하기 이전의 지연 시간(linger time)에 대응하고, 따라서 가능한 많은 추가적 콘텐츠 요청을 서비싱하기 위하여 캐싱된 복제본을 효율적으로 사용할 수 있게 한다.
동일한 콘텐츠 데이터에 대한 추가적 콘텐츠 요청이 수신되지 않는다고 결정하는 것(358: NO)에 응답하여, 360에서 비즈니스 로직 에이전트(134)(예를 들어, 버퍼-채움 프록시 엔진(134))는 캐싱된 콘텐츠 데이터를 캐시 저장소(136)에서 릴리스한다. 즉, 새로운 추가적 콘텐츠 요청이 추가적 콘텐츠 요청 중 가장 최근의 것이 수신된 이후에 미리 결정된 시간 간격 동안 수신되지 않았다고 결정하는 것에 응답하여, 360에서 비즈니스 로직 에이전트(134)(예를 들어, 버퍼-채움 프록시 엔진(134))는 캐싱된 콘텐츠 데이터를 캐시 저장소(136)로부터 릴리스할 수 있다.
반면에, 동일한 콘텐츠 데이터에 대한 추가적 콘텐츠 요청(클라이언트(102b)로부터의 요청에 대응함)이 수신되었다고 결정하는 것(358: 예)에 응답하여, 362에서 비즈니스 로직 에이전트(134)(예를 들어, 버퍼-채움 프록시 엔진(134))는 캐싱된 콘텐츠 데이터를 유지한다. 즉, 새로운 추가적 콘텐츠 요청이 추가적 콘텐츠 요청 중 가장 최근의 것이 수신된 이후에 미리 결정된 시간 간격 동안 수신되었다고 결정하는 것에 응답하여, 362에서 비즈니스 로직 에이전트(134)(예를 들어, 버퍼-채움 프록시 엔진(134))는 캐싱된 콘텐츠 데이터를 유지한다.
설명된 바와 같이, 각각의 추가적 콘텐츠 요청에 대하여, 해당 특정 요청에 대응하는 연결(포트 또는 전용 연결)이 네트워크(140a 또는 140b) 내에 구축된다. 일부 예들에서, 마지막 포트 또는 전용 연결이 오픈된 이후에 새로운 포트 또는 전용 연결이 미리 결정된 시간 간격 내에 오픈되기만 하면, 버퍼-채움 프록시 엔진(134)은 캐싱된 콘텐츠 데이터를 캐시 저장소(136) 내에 유지한다. 각각의 새로운 포트 또는 전용 연결은 설명된 방식으로 인증하기 위하여 캐싱 에이전트(120) 및 비즈니스 로직 에이전트(130) 사이에서 데이터를 통신하기 위하여 사용될 수 있다. 블록(362)은 성공적인 인증에 응답하여 수행된다. 추가적 콘텐츠 요청이 인증을 위하여 구축된 동일한 포트 또는 전용 연결을 사용하여 수신될 수 있다.
캐싱된 콘텐츠 데이터는, 캐시 저장소(126)가 콘텐츠 데이터로 채워지고 있는 동안에 364에서 버퍼-채움 프록시 엔진(134)에 의하여 클라이언트(102b)로 제공된다. 352에서 수신된 콘텐츠 요청과 유사하게, 추가적인 콘텐츠 요청은 콘텐츠 데이터의 어드레스 및 그로부터 콘텐츠 데이터가 수신/취출될 업스트림 노드의 어드레스를 포함한다. 일부 예들에서, 추가적 콘텐츠 요청은 콘텐츠 데이터 내의 슬라이스를 설명된 방식으로 구별하기 위한 범위 헤더를 더 포함할 수 있다. 콘텐츠 데이터의 어드레스, 업스트림 노드의 어드레스, 및 범위 헤더(존재한다면)를 사용하면, 버퍼-채움 프록시 엔진(134)은 콘텐츠 데이터(또는 그 일부) 및 노드를 식별하여 추가적 콘텐츠 요청을 사용하여 콘텐츠 데이터를 취출할 수 있다.
추가적 콘텐츠 요청이 동일한 업스트림 노드를 식별하는 예에서, 버퍼-채움 프록시 엔진(134)은 클라이언트(102a)에 대한 제 1 콘텐츠 요청을 처리하기 위하여 업스트림 노드와의 연결을 이미 구축했다. 버퍼-채움 프록시 엔진(134) 및 업스트림 노드 사이의 동일한 연결이, 동일한 콘텐츠 데이터를 클라이언트(102b)로부터의 추가적인 요청에 서비싱하기 위해서 활용될 수 있다. 콘텐츠 요청이 상이한 업스트림 노드를 식별하는 예에서, 버퍼-채움 프록시 엔진(134)은 콘텐츠 데이터를 수신하기 위하여 상이한 업스트림 노드와의 연결을 구축하도록 구성된다.
일부 실시형태들에서, 블록(364)은 클라이언트(102b)에 직접적으로 연결하는 것(예를 들어, 캐싱 에이전트(120)를 통해서 릴레이하지 않고 직접 네트워크 연결을 통하여), 그리고 캐시 잠금이 캐시 저장소(126)에서 이네이블된 동안에 캐시 저장소(136)로부터의 콘텐츠 데이터를 클라이언트(102b)로 전송하는 것을 포함한다. 대안적인 실시형태들에서, 블록(364)은 콘텐츠 데이터를 네트워크(140a 또는 140b) 내에서 인증을 위하여 구축된 포트 또는 연결을 통하여(클라이언트(102b)에 전용임) 캐싱 에이전트(120)로 전송함으로써, 캐싱 에이전트(120)가 콘텐츠 데이터를 클라이언트(102b)로 릴레이할 수 있게 하는 것을 포함한다. 일부 예들에서는, 인증을 위해 구축된 포트 또는 연결을 통하여 그리고 캐싱 에이전트(120)를 거쳐서, 전용 터널이 버퍼-채움 프록시 엔진(134)으로부터 클라이언트(102b)까지 구축될 수 있다. 콘텐츠 데이터는 버퍼-채움 프록시 엔진(134)으로부터 클라이언트(102b)로 전용 터널을 통해 전달될 수 있다.
방법(300b)은 임의의 추가적 콘텐츠 요청이 수신되었는지 여부를 결정하기 위하여 블록(358)으로 복귀한다.
일부 경우에, 다른 "경주 문제"가 생길 수 있다. 이러한 "경주 문제"는, 캐시 저장소(126)를 사용한 채움이 완료되고(예를 들어, 클라이언트(102a)에 의한 요청을 서비싱하는 것이 캐싱 에이전트(120)에 의하여 완료됨), 버퍼링-채움 프록시 엔진(134)이 콘텐츠 데이터를 아직 릴리스하지 않은(예를 들어, 클라이언트(102a-102n) 중 다른 하나에 의한 요청을 서비싱하기 위하여 캐시 저장소(136)를 사용하여 채움하는 것이 완료되지 않음) 상황에 관련된다. 이러한 시점에서, 캐시 저장소(126)에 저장된 캐싱된 콘텐츠 데이터는 만료될 수 있고, 무효화될 수 있으며, 다른 적절한 이유에 기인하여 업데이트/리프레시될 필요가 있을 수 있다. 이러한 경우에, 버퍼-채움 프록시 엔진(134)이 이미 수행하고 있는 채움을 위해서 캐싱 에이전트(120)가 새로운 콘텐츠 요청을 버퍼-채움 프록시 엔진(134)으로 전송하지 않는 것을 보장하기 위한 메커니즘이 필요하다. 즉, 버퍼-채움 프록시 엔진(134)이 새로운 콘텐츠 요청을 해결하기 위해서 콘텐츠 데이터의 만료된/무효화된 복제본을 사용하는 것을 방지하기 위한 메커니즘이 필요하다.
이와 같이, 버퍼-채움 프록시 엔진(134)에 의해 수신된 콘텐츠 요청은 일부 실시형태들에서 채움 ID를 포함한다. 채움 ID는, 캐싱 에이전트(120)가 현재 기한이 지난 복제본을 가지고 있기 때문에 콘텐츠 데이터의 새로운, 신규의 만료되지 않고 유효한 복제본이 캐싱 에이전트(120)에 의하여 요청된다는 것을 표시한다. 채움 ID는 콘텐츠 요청 내의 헤더일 수 있다. 첫 번째 채움 ID는 콘텐츠 데이터의 새로운 복제본이 아니더라도 임의의 복제본이 사용될 수 있다는 것을 나타낸다. 두 번째 채움 ID는 버퍼-채움 프록시 엔진(134)이 콘텐츠 데이터의 새로운 복제본을 업스트림 노드로의 새로운 연결을 사용하여 그로부터 취출할 필요가 있도록, 콘텐츠 데이터의 새로운 복제본이 사용되어야 한다는 것을 나타낸다. 이와 같이, 버퍼-채움 프록시 엔진(134)은 콘텐츠 데이터의 새로운 복제본이 필요하다는 것을 채움 ID에 기반하여 결정할 수 있다. 버퍼-채움 프록시 엔진(134)은 새로운 복제본이 필요하다고 결정하는 것에 응답하여 콘텐츠 데이터의 새로운 복제본을 캐시 저장소(136) 내에 채운다.
일부 예들에서, 버퍼-채움 프록시 엔진(134)은 채움 ID 헤더를 사용함으로써, 자기 자신의의 임의의 만료 로직을 구현할 필요가 없다. 이것은 버퍼-채움 프록시 엔진(134)이 매우 단기인 캐싱을 구현하고 있는지 여부와 무관하게 참이다. 버퍼-채움 프록시 엔진(134)이 장기 캐싱을 수행하고 있는 경우에도, 요청된 콘텐츠 데이터를 구별하기 위하여 채움 ID 헤더를 사용한다는 것은, 콘텐츠 데이터가 만료되면, 버퍼-채움 프록시 엔진(134)이 콘텐츠 데이터의 새로운 복제본을 요청하고(새로운 채움 ID를 수신하는 것에 기반하여), 과거의(종래의 채움 ID) 콘텐츠 데이터는 과거의 콘텐츠 데이터가 더 이상 요청되지 않고 있다면 캐시 저장소(136)로부터 사라지게 될 것이라는 것을 의미한다. 그러므로, 채움 ID 헤더는 경주를 해결할 뿐만 아니라, 버퍼-채움 프록시 엔진(134)이 HTTP 만료를 이해할 필요성을 제거함으로써 버퍼-채움 프록시 엔진(134) 내에서의 처리를 단순화한다.
일부 실시형태들에서, 조건부 요청 헤더(또는 조건부 헤더)는 키 연산의 일부로서 사용될 수 있다. 예를 들어, 콘텐츠 복제본이 캐시 저장소(126) 내에 저장되는 동안에 만료되는 것에 응답하여, 캐싱 엔진(124)은 콘텐츠 데이터에 대한 조건부 업스트림 요청을 수행한다. 조건부 요청은, 콘텐츠 데이터가 만료되었다는 것, 및 콘텐츠 데이터가 만료된 이후에 변경되었다면 콘텐츠 데이터의 새로운 복제본이 필요하다는 것, 및 콘텐츠 데이터가 변경되지 않았다면 이것을 표시하는 응답이 요청된다는 것(동일한 것을 사용할 수 있도록)을 표시하는 HTTP 헤더를 운반한다. 전통적으로는, 캐시 잠금이 디스에이블되고 캐싱 에이전트(120)가 동일한 콘텐츠 데이터의 여러 복제본을 수신하고 있기 때문에, 캐싱 에이전트(120)는 여러 조건부 요청을 해당 콘텐츠 데이터에 대해서 전송한다.
본 발명에서는, 업스트림 채움들을 구별하기 위해서 버퍼-채움 프록시 엔진(134)에 대한 키 로직 내에 조건부 요청 헤더가 포함되어, 콘텐츠 데이터가 변경되지 않았다는 응답을 캐싱 에이전트(120)가 버퍼-채움 프록시 엔진(134)으로부터 수신할 수 있도록 보장한다. 버퍼-채움 프록시 엔진(134)이 콘텐츠 데이터의 풀 버전이 이미 채워지고 있다고 결정하는 것, 및 조건부 요청이 콘텐츠 요청의 일부로서 수신된다고 결정하는 것에 응답하여, 버퍼-채움 프록시 엔진(134)은 캐시 저장소(136) 내에 현재 저장된 콘텐츠 데이터의 복제본을 사용하여 설명된 방식으로 콘텐츠 요청에 응답한다. 버퍼-채움 프록시 엔진(134)이 콘텐츠 데이터가 채워지는 중이 아니라고 결정하는 것, 및 조건부 요청이 콘텐츠 요청의 일부로서 수신된다고 결정하는 것에 응답하여, 버퍼-채움 프록시 엔진(134)은 이제 조건부 요청을 키(또는 키 연산의 일부)로서 사용한다.
키는 버퍼-채움 프록시 엔진(134)이 다수의 리소스에 대한 다수의 콘텐츠 요청을 구별하기 위해서 사용된다. 예를 들어, 버퍼-채움 프록시 엔진(134)은 수신된 각각의 콘텐츠 요청에 대하여 키를 계산한다. 키는 다양한 파라미터(비한정적으로, 콘텐츠 데이터가 취출될 타겟 업스트림 노드, 콘텐츠 데이터를 요청한 호스트/클라이언트, 콘텐츠 데이터의 어드레스(예를 들어, URL), 채움 ID, 초기 헤더 등)를 적절한 키-생성 함수를 통해 실행함으로써 결정될 수 있다.
따라서, 콘텐츠 요청은 조건부 요청 헤더를 포함한다. 버퍼-채움 프록시 엔진(134)은 콘텐츠 요청에 대응하는 키를 조건부 요청 헤더에 기반하여 결정한다.
본 명세서에서 설명되는 실시형태는 도면을 참조하여 설명된 바 있다. 도면은 본 명세서에서 설명되는 시스템, 방법 및 프로그램을 구현하는 특정한 실시형태의 특정 세부사항을 예시한다. 그러나, 실시형태를 도면을 사용하여 기술하는 것은 도면에 존재할 수 있는 임의의 한정을 명세서에 부과하는 것으로 해석되어서는 안 된다.
본 발명의 청구 요소는 이러한 엘리먼트가 "하기 위한 수단"이라는 문구를 사용하여 명백하게 인용되지 않는 한 미국 특허법 §112(f)의 규정에 따라서 해석되어야 한다는 것이 이해되어야 한다.
본 명세서에서 사용될 때, "회로"라는 용어는 본 명세서에서 설명된 기능을 실행하도록 구성된 하드웨어를 포함할 수 있다. 일부 실시형태들에서, 각각의 개별 "회로"는 본 명세서에서 설명된 기능을 실행하기 위하여 하드웨어를 구성하기 위한 머신-판독가능 매체를 포함할 수 있다. 이러한 회로는 비한정적으로 처리 회로부, 네트워크 인터페이스, 주변 디바이스, 입력 디바이스, 출력 디바이스, 센서 등을 포함하는 하나 이상의 회로 컴포넌트로서 구현될 수 있다. 일부 실시형태들에서, 회로는 하나 이상의 아날로그 회로, 전자 회로(예를 들어, 집적 회로(IC)), 이산 회로, 시스템 온 칩(SOC) 회로 등), 원격 통신 회로, 하이브리드 회로, 및 임의의 다른 타입의 "회로"의 형태를 취할 수 있다. 이러한 관점에서, "회로"는 본 명세서에서 설명되는 동작을 달성하는 것을 완수하거나 가능하게 하기 위한 임의의 타입의 컴포넌트를 포함할 수 있다. 예를 들어, 본 명세서에서 설명된 바와 같은 회로는 하나 이상의 트랜지스터, 로직 게이트(예를 들어, NAND, AND, NOR, 또는, XOR, NOT, XNOR 등), 저항, 멀티플렉서, 등록, 커패시터, 인덕터, 다이오드, 배선 등을 포함할 수 있다.
"회로"는 하나 이상의 메모리 또는 메모리 디바이스에 통신하도록 커플링된 하나 이상의 프로세서를 더 포함할 수 있다. 이러한 관점에서, 하나 이상의 프로세서는 메모리 내에 저장된 명령을 실행할 수 있거나 하나 이상의 프로세서에 다른 방식으로 액세스가능한 명령을 실행할 수 있다. 일부 실시형태들에서, 하나 이상의 프로세서는 다양한 방식으로 구현될 수 있다. 하나 이상의 프로세서는 본 명세서에서 설명되는 동작을 적어도 수행하기에 충분한 방식으로 구성될 수 있다. 일부 실시형태들에서, 하나 이상의 프로세서는 다수의 회로에 의하여 공유될 수 있다(예를 들어, 회로 A 및 회로 B는 일부 예시적인 실시형태에서 저장되거나 메모리의 상이한 영역을 통하여 다르게 액세스가능한 명령을 실행할 수 있는 동일한 프로세서를 포함하거나 다른 방식으로 공유할 수 있다). 대안적으로 또는 추가적으로, 하나 이상의 프로세서는 어떤 동작을 하나 이상의 코-프로세서와 독립적으로 수행하거나 다른 방식으로 실행하도록 구성될 수 있다. 다른 예시적인 실시형태에서, 두 개 이상의 프로세서가 버스를 통해서 커플링되어, 독립적, 병렬적, 파이프라인형(pipelined), 또는 멀티-쓰레디드(multi-threaded) 명령 실행을 가능하게 할 수 있다. 각각의 프로세서는 하나 이상의 범용 프로세서, ASIC, FPGA, DSP, 또는 메모리에 의해 제공되는 명령을 실행하도록 구성되는 다른 적절한 전자 데이터 처리 컴포넌트로서 구현될 수 있다. 하나 이상의 프로세서는 단일 코어 프로세서, 멀티코어 프로세서(예를 들어, 듀얼 코어 프로세서, 트리플 코어 프로세서, 쿼드 코어 프로세서 등), 마이크로프로세서 등의 형태를 취할 수 있다. 일부 실시형태들에서, 하나 이상의 프로세서는 장치의 외부에 있을 수 있고, 예를 들어 하나 이상의 프로세서는 원격 프로세서(예를 들어, 클라우드 기반 프로세서)일 수 있다. 대안적으로 또는 추가적으로, 하나 이상의 프로세서는 장치 내부에 있거나 및/또는 장치에 대해 국지적일 수 있다. 이러한 관점에서, 주어진 회로 또는 그 컴포넌트는 국지적으로(예를 들어, 로컬 서버, 로컬 컴퓨팅 시스템 등의 일부로서) 또는 원격으로(예를 들어, 클라우드 기반 서버와 같은 원격 서버의 일부로서) 배치될 수 있다. 이러한 목적을 위하여, 본 명세서에서 설명된 바와 같은 "회로"는 하나 이상의 위치에 걸쳐서 분산되는 컴포넌트들을 포함할 수 있다.
전체 시스템 또는 실시형태의 일부를 구현하기 위한 예시적인 시스템은 컴퓨터의 형태이고 처리 유닛, 시스템 메모리, 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 처리 유닛에 커플링하는 시스템 버스를 포함하는 범용 컴퓨팅 컴퓨터를 포함할 수 있다. 각각의 메모리 디바이스 비일시적 휘발성 저장 매체, 비-휘발성 저장 매체, 비-일시적 저장 매체(예를 들어, 하나 이상의 휘발성 및/또는 비-휘발성 메모리) 등을 포함할 수 있다. 일부 실시형태들에서, 비-휘발성 매체는 ROM, 플래시 메모리(예를 들어, NAND, 3D NAND, NOR, 3D NOR 등과 같은 플래시 메모리), EEPROM, MRAM, 자기 저장소, 하드 디스크, 광 디스크 등의 형태를 취할 수 있다. 다른 실시형태들에서, 휘발성 저장 매체는 RAM, TRAM, ZRAM 등의 형태를 취할 수 있다. 앞에서 언급한 것들의 조합들도 범위 머신-판독가능 매체의 플래시 메모리 내에 속한다. 이러한 관점에서, 머신-실행가능한 명령은, 예를 들어 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 처리 머신이 특정 기능 또는 기능들의 그룹을 수행하게 하는 명령 및 데이터를 포함한다. 각각의 개별 메모리 디바이스는, 본 명세서에서 설명되는 예시적인 실시형태에 따른 프로세서 명령 및 관련된 데이터(예를 들어, 데이터베이스 컴포넌트, 객체 코드 컴포넌트, 스크립트 컴포넌트 등)를 포함하는, 하나 이상의 연관된 회로에 의해 수행되는 동작에 관련되는 정보를 유지하거나 그렇지 않으면 저장하도록 동작가능할 수 있다.
"입력 디바이스"라는 용어는 본 명세서에서 설명될 때, 비한정적으로 키보드, 키패드, 마우스, 조이스틱 또는 유사한 기능을 수행하는 다른 입력 디바이스를 포함하는 임의의 타입의 입력 디바이스를 포함할 수 있다는 것에도 역시 주의해야 한다. 비교하여, "출력 디바이스"라는 용어는 본 명세서에서 설명될 때, 비한정적으로 컴퓨터 모니터, 프린터, 팩시밀리 머신, 또는 유사한 기능을 수행하는 다른 출력 디바이스를 포함하는 임의의 타입의 출력 디바이스를 포함할 수 있다는 것에도 역시 주의해야 한다.
본 명세서의 도면이 방법 단계들의 특정한 순서 및 조합을 나타낼 수 있지만, 이러한 단계의 순서가 도시된 것과 다를 수 있다는 것에 주의해야 한다. 예를 들어, 두 개 이상의 단계는 동시에 또는 부분적으로 동시에 수행될 수 있다. 또한, 이산 단계로서 수행되는 일부 방법 단계는 결합될 수 있고, 결합된 단계로서 수행되는 단계들은 이산 단계로 분리될 수 있으며, 특정 프로세스의 시퀀스는 반전되거나 그렇지 않으면 변경될 수 있고, 이산 프로세스의 성질 및 개수는 개조되거나 변동될 수 있다. 임의의 요소 또는 장치의 시퀀스의 순서는 대안적인 실시형태에 따라서 변하거나 치환될 수 있다. 따라서, 이러한 변형예들은 첨부된 청구항에 규정된 본 발명의 범위 내에 속하게 되도록 의도된다. 이러한 변형예들은 선택되고 설계자가 선택된 머신-판독가능 매체 및 하드웨어 시스템에 의존할 것이다. 이러한 변형예 모두가 본 발명의 범위에 속한다는 것이 이해된다. 이와 유사하게, 본 발명의 소프트웨어 및 웹 구현형태는 규칙 기반 로직 및 다양한 데이터베이스 검색 단계, 상관 단계, 비교 단계 및 결정 단계를 실행하기 위한 다른 로직이 있는 표준 프로그래밍 기법으로써 달성될 수 있다.
실시형태들에 대한 앞선 설명은 예시 및 설명을 위해서 제공되었다. 이것은 망라적이거나 본 발명을 개시된 특정 형태로 한정하려고 의도되지 않고, 전술된 교시 내용에 비추어 수정예 및 변형예가 가능하거나 본 명세서로부터 획득될 수 있다. 실시형태들은 당업자가 다양한 실시형태 및 고찰되는 특정 용도에 적합한 다양한 변경예를 활용할 수 있게 하기 위해서 본 발명의 원리 및 그 실용적 적용예를 설명하기 위해서 선택되고 설명되었다. 첨부된 청구항에 표현된 본 발명의 범위에서 벗어나지 않으면서 실시형태의 디자인, 동작 조건 및 구현에 있어서 다른 치환, 변경, 변화 생략이 이루어질 수 있다.

Claims (26)

  1. 콘텐츠 전송 시스템을 위한 캐싱을 관리하기 위한 방법으로서,
    비즈니스 로직 에이전트에 의하여 캐싱 에이전트로부터, 상기 캐싱 에이전트가 클라이언트에 대한 콘텐츠 데이터를 요청하고 있다는 것을 표시하는 콘텐츠 요청을 수신하는 단계 - 상기 비즈니스 로직 에이전트 및 캐싱 에이전트는 네트워크를 통하여 동작하도록 커플링됨 -;
    상기 비즈니스 로직 에이전트에 의하여, 콘텐츠 데이터를 상기 비즈니스 로직 에이전트의 제 1 캐시 저장소 내에 채우는 단계 - 상기 콘텐츠 데이터는 상기 콘텐츠 전송 시스템의 업스트림 노드로부터 수신됨 -;
    상기 비즈니스 로직 에이전트에 의하여, 캐싱된 콘텐츠 데이터를 상기 캐싱 에이전트에게 제공하는 단계; 및
    상기 캐싱 에이전트의 제 2 캐시 저장소가 콘텐츠 데이터로 채워지는 동안에, 상기 비즈니스 로직 에이전트에 의하여, 상기 캐싱 에이전트로부터 추가적 콘텐츠 요청을 수신하는 것에 응답하여 캐싱된 콘텐츠 데이터를 유지하는 단계 - 상기 추가적 콘텐츠 요청은 상기 캐싱 에이전트가 추가적 클라이언트에 대하여 동일한 콘텐츠 데이터를 요청하고 있다는 것을 표시함 -를 포함하는, 캐싱 관리 방법.
  2. 제 1 항에 있어서,
    상기 콘텐츠 전송 시스템은 콘텐츠 전송 네트워크(content delivery network; CDN)이고,
    상기 비즈니스 로직 에이전트 및 캐싱 에이전트는 CDN의 동일한 에지 노드 상에 있으며,
    상기 업스트림 노드는 콘텐츠 데이터를 저장하는 오리진 서버이거나 콘텐츠 데이터를 저장하는 상기 CDN 내의 상기 에지 노드와 상기 오리진 노드(origin node) 사이의 노드이고,
    상기 네트워크는 로컬 호스트 연결(local host connection)인, 캐싱 관리 방법.
  3. 제 2 항에 있어서,
    상기 로컬 호스트 연결은 하이퍼텍스트 전송 프로토콜(HTTP) 연결 및 HTTP/2 연결 중 적어도 하나를 거치는, 캐싱 관리 방법.
  4. 제 1 항에 있어서,
    상기 콘텐츠 전송 시스템은 콘텐츠 전송 네트워크(CDN)이고,
    상기 캐싱 에이전트는 CDN의 에지 노드 상에 있으며,
    상기 비즈니스 로직 에이전트는 CDN의 중간 노드 상에 있고, 상기 중간 노드는 상기 에지 노드와 다르며,
    상기 업스트림 노드는 콘텐츠 데이터를 저장하는 오리진 서버이거나 콘텐츠 데이터를 저장하는 상기 CDN 내의 상기 에지 노드와 오리진 노드 사이의 노드인, 캐싱 관리 방법.
  5. 제 1 항에 있어서,
    상기 캐싱 에이전트는 상기 클라이언트로부터 수신된 HTTP 요청에 서비스를 제공하도록 구성되는 하이퍼텍스트 전송 프로토콜(HTTP) 서비스 엔진을 포함하고,
    상기 캐싱 에이전트는 캐싱 엔진을 포함하며, 상기 캐싱 엔진은 제 2 캐시 저장소를 포함하는, 캐싱 관리 방법.
  6. 제 1 항에 있어서,
    상기 방법은,
    상기 비즈니스 로직 에이전트에 의하여 상기 캐싱 에이전트로부터, 상기 콘텐츠 요청이 수신되기 이전에 인증 요청을 수신하는 단계;
    상기 콘텐츠 데이터가 상기 콘텐츠 전송 시스템의 고객에 의하여 제공된다고 인증하는 단계; 및
    상기 비즈니스 로직 에이전트에 의하여 상기 캐싱 에이전트로, 상기 콘텐츠 데이터가 상기 고객에 의해 제공된다고 인증하는 것에 응답하여 인증 응답을 전송하는 단계 - 상기 인증 응답은 인가(authorization)를 포함함 -를 더 포함하는, 캐싱 관리 방법.
  7. 제 1 항에 있어서,
    상기 콘텐츠 요청은 상기 업스트림 노드를 식별하고,
    상기 비즈니스 로직 에이전트는 상기 콘텐츠 요청에 기반하여 상기 업스트림 노드로부터 콘텐츠 데이터를 수신하는, 캐싱 관리 방법.
  8. 제 1 항에 있어서,
    상기 콘텐츠 요청은 상기 업스트림 노드로 어드레싱되는, 캐싱 관리 방법.
  9. 제 1 항에 있어서,
    상기 콘텐츠 요청은 상기 콘텐츠 데이터의 어드레스 및 상기 콘텐츠 데이터의 범위를 포함하고,
    상기 콘텐츠 데이터의 어드레스는 범용 리소스 로케이터(Uniform Resource Locator; URL)를 포함하며,
    상기 비즈니스 로직 에이전트는, 상기 추가적 콘텐츠 요청 중 임의의 것이 상기 콘텐츠 요청에 의하여 요청된 것과 동일한 콘텐츠 데이터를 요청하고 있는지 여부를 상기 어드레스 및 범위에 기반하여 결정하는, 캐싱 관리 방법.
  10. 제 1 항에 있어서,
    상기 콘텐츠 요청은 채움 식별자(fill ID)를 포함하고,
    상기 방법은,
    상기 채움 ID에 기반하여, 상기 비즈니스 로직 에이전트에 의하여 상기 콘텐츠 데이터의 새로운 복제본이 필요하다고 결정하는 단계; 및
    상기 비즈니스 로직 에이전트에 의하여, 새로운 복제본이 필요하다고 결정하는 것에 응답하여 상기 콘텐츠 데이터의 새로운 복제본을 제 1 캐시 저장소 내에 채우는 단계를 더 포함하는, 캐싱 관리 방법.
  11. 제 1 항에 있어서,
    상기 콘텐츠 요청은 조건부 요청 헤더를 포함하고,
    상기 방법은,
    상기 조건부 요청 헤더에 기반하여, 상기 비즈니스 로직 에이전트에 의하여 상기 콘텐츠 요청에 대응하는 키를 결정하는 단계를 더 포함하는, 캐싱 관리 방법.
  12. 제 1 항에 있어서,
    상기 캐싱 에이전트의 제 2 캐시 저장소가 상기 콘텐츠 데이터로 채워지고 있는 동안에, 상기 캐싱된 콘텐츠 데이터를 유지하는 단계는,
    추가적 콘텐츠 요청들 중 두 개의 연속된 요청이 미리 결정된 시간 간격 안에 수신된다고 결정하는 것에 응답하여 상기 캐싱된 콘텐츠 데이터를 유지하는 것을 포함하는, 캐싱 관리 방법.
  13. 제 1 항에 있어서,
    상기 방법은,
    추가적 콘텐츠 요청 중 가장 최근 요청이 수신된 이후에, 미리 결정된 시간 간격 동안 새로운 추가적 콘텐츠 요청이 수신되지 않았다고 결정하는 단계를 더 포함하는, 캐싱 관리 방법.
  14. 콘텐츠 전송 시스템을 위한 캐싱을 관리하기 위한 방법으로서,
    캐싱 에이전트에 의하여 클라이언트로부터, 콘텐츠 데이터에 대한 요청을 수신하는 단계;
    상기 캐싱 에이전트에 의하여, 상기 캐싱 에이전트가 콘텐츠 데이터를 채울 필요가 있다고 결정하는 단계;
    상기 캐싱 에이전트에 의하여 비즈니스 로직 에이전트로, 상기 캐싱 에이전트가 클라이언트에 대한 콘텐츠 데이터를 요청하고 있다는 것을 표시하는 콘텐츠 요청을 전송하는 단계 - 상기 비즈니스 로직 에이전트 및 캐싱 에이전트는 네트워크를 통하여 동작하도록 커플링되고, 상기 비즈니스 로직 에이전트는 상기 콘텐츠 요청에 응답하여 상기 비즈니스 로직 에이전트의 제 1 캐시 저장소에 콘텐츠 데이터를 채움 -;
    상기 캐싱 에이전트에 의하여, 업스트림 노드로부터의 콘텐츠 데이터를 상기 캐싱 에이전트의 제 2 캐시 저장소에 채우는 단계;
    상기 캐싱 에이전트에 의하여, 추가적 콘텐츠 요청을 추가적 클라이언트로부터 수신하는 단계 - 상기 추가적 콘텐츠 요청은 상기 추가적 클라이언트에 의하여 동일한 콘텐츠 데이터가 요청된다는 것을 표시함 -; 및
    상기 제 2 캐시 저장소가 콘텐츠 데이터로 채워지고 있는 동안에, 캐싱된 콘텐츠 데이터가 상기 비즈니스 로직 에이전트에 의하여 상기 추가적 클라이언트에 제공되는 단계를 포함하는, 캐싱 관리 방법.
  15. 제 14 항에 있어서,
    상기 콘텐츠 전송 시스템은 콘텐츠 전송 네트워크(CDN)이고,
    상기 비즈니스 로직 에이전트 및 캐싱 에이전트는 CDN의 동일한 에지 노드 상에 있으며,
    상기 업스트림 노드는 콘텐츠 데이터를 저장하는 오리진 서버이거나 콘텐츠 데이터를 저장하는 상기 CDN 내의 상기 에지 노드와 상기 오리진 노드 사이의 노드이고,
    상기 네트워크는 로컬 호스트 연결인, 캐싱 관리 방법.
  16. 제 15 항에 있어서,
    상기 로컬 호스트 연결은 하이퍼텍스트 전송 프로토콜(HTTP) 연결 및 HTTP/2 연결 중 적어도 하나를 거치는, 캐싱 관리 방법.
  17. 제 14 항에 있어서,
    상기 콘텐츠 전송 시스템은 콘텐츠 전송 네트워크(CDN)이고,
    상기 캐싱 에이전트는 CDN의 에지 노드 상에 있으며,
    상기 비즈니스 로직 에이전트는 CDN의 중간 노드 상에 있고, 상기 중간 노드는 상기 에지 노드와 다르며,
    상기 업스트림 노드는 콘텐츠 데이터를 저장하는 오리진 서버이거나 콘텐츠 데이터를 저장하는 상기 CDN 내의 상기 에지 노드와 오리진 노드 사이의 노드인, 캐싱 관리 방법.
  18. 제 14 항에 있어서,
    상기 캐싱 에이전트는 상기 클라이언트로부터 수신된 HTTP 요청에 서비스를 제공하도록 구성되는 하이퍼텍스트 전송 프로토콜(HTTP) 서비스 엔진을 포함하고,
    상기 캐싱 에이전트는 캐싱 엔진을 포함하며, 상기 캐싱 엔진은 제 2 캐시 저장소를 포함하는, 캐싱 관리 방법.
  19. 제 14 항에 있어서,
    상기 방법은,
    상기 캐싱 에이전트에 의하여 상기 비즈니스 로직 에이전트로, 상기 콘텐츠 요청이 전송되기 전에 인증 요청을 전송하는 단계; 및
    상기 캐싱 에이전트에 의하여 상기 비즈니스 로직 에이전트로부터, 인증 응답을 수신하는 단계 - 상기 인증 응답은 인가를 포함함 -를 더 포함하는, 캐싱 관리 방법.
  20. 제 14 항에 있어서,
    상기 방법은,
    상기 캐싱 에이전트에 의하여, 상기 업스트림 노드를 선택하는 단계를 더 포함하고,
    상기 콘텐츠 요청은 상기 업스트림 노드를 식별하는, 캐싱 관리 방법.
  21. 제 14 항에 있어서,
    상기 콘텐츠 요청이 상기 업스트림 노드로 어드레싱된, 캐싱 관리 방법.
  22. 제 14 항에 있어서,
    상기 콘텐츠 요청은 상기 콘텐츠 데이터의 어드레스 및 상기 콘텐츠 데이터의 범위를 포함하고,
    상기 콘텐츠 데이터의 어드레스는 범용 리소스 로케이터(URL)를 포함하며,
    상기 비즈니스 로직 에이전트는, 상기 추가적 콘텐츠 요청 중 임의의 것이 상기 콘텐츠 요청에 의하여 요청된 것과 동일한 콘텐츠 데이터를 요청하고 있는지 여부를 상기 어드레스 및 범위에 기반하여 결정하는, 캐싱 관리 방법.
  23. 제 14 항에 있어서,
    상기 콘텐츠 요청은 채움 식별자(ID)를 포함하고,
    상기 채움 ID는 콘텐츠 데이터의 새로운 복제본이 상기 비즈니스 로직 에이전트의 제 1 캐시 저장소 내에서 채워질 필요가 있는지 여부를 표시하는, 캐싱 관리 방법.
  24. 제 14 항에 있어서,
    상기 콘텐츠 요청은 조건부 요청 헤더를 포함하고,
    상기 콘텐츠 요청에 대응하는 키는 상기 조건부 요청 헤더에 기반하여 상기 비즈니스 로직 에이전트에 의하여 결정된, 캐싱 관리 방법.
  25. 콘텐츠 전송 시스템의 노드로서,
    네트워크를 제공하는 네트워크 디바이스;
    비즈니스 로직 에이전트 및 캐싱 에이전트를 구현하는 적어도 하나의 프로세서 - 상기 비즈니스 로직 에이전트 및 캐싱 에이전트는 상기 네트워크를 통하여 동작하도록 커플링됨 -; 및
    상기 비즈니스 로직 에이전트의 제 1 캐시 저장소 및 상기 캐싱 에이전트의 제 2 캐시 저장소를 구현하는 적어도 하나의 메모리를 포함하고,
    상기 적어도 하나의 프로세서는,
    상기 캐싱 에이전트를 사용하여 상기 비즈니스 로직 에이전트로, 상기 캐싱 에이전트가 클라이언트에 대한 콘텐츠 데이터를 요청하고 있다는 것을 표시하는 콘텐츠 요청을 전송하고,
    상기 비즈니스 로직 에이전트를 사용하여 상기 콘텐츠 데이터를 상기 콘텐츠 전달 시스템의 업스트림 노드로부터 수신하며,
    상기 비즈니스 로직 에이전트를 사용하여, 상기 제 1 캐시 저장소 내에 콘텐츠 데이터를 채우고,
    상기 비즈니스 로직 에이전트를 사용하여, 캐싱된 콘텐츠 데이터를 클라이언트에게 제공하며,
    상기 제 2 캐시 저장소가 콘텐츠 데이터로 채워지는 동안에, 상기 비즈니스 로직 에이전트를 사용하여, 상기 비즈니스 로직 에이전트가 상기 캐싱 에이전트로부터 추가적 콘텐츠 요청을 수신하는 것에 응답하여, 캐싱된 콘텐츠 데이터를 유지하고,
    상기 추가적 콘텐츠 요청은 상기 캐싱 에이전트가 추가적 클라이언트에 대하여 동일한 콘텐츠 데이터를 요청하고 있다는 것을 표시하는, 콘텐츠 전송 시스템의 노드.
  26. 컴퓨터-판독가능 명령을 포함하는 비-일시적 컴퓨터-판독가능 매체로서,
    상기 컴퓨터-판독가능 명령은 실행될 때, 콘텐츠 전송 시스템의 노드의 프로세서가,
    캐싱 에이전트를 사용하여 비즈니스 로직 에이전트로, 상기 캐싱 에이전트가 클라이언트에 대한 콘텐츠 데이터를 요청하고 있다는 것을 표시하는 콘텐츠 요청을 전송하고,
    상기 비즈니스 로직 에이전트를 사용하여 상기 콘텐츠 데이터를 콘텐츠 전달 시스템의 업스트림 노드로부터 수신하며,
    상기 비즈니스 로직 에이전트를 사용하여, 제 1 캐시 저장소 내에 콘텐츠 데이터를 채우고,
    상기 비즈니스 로직 에이전트를 사용하여, 캐싱된 콘텐츠 데이터를 클라이언트에게 제공하며,
    상기 제 2 캐시 저장소가 콘텐츠 데이터로 채워지는 동안에, 상기 비즈니스 로직 에이전트를 사용하여, 상기 비즈니스 로직 에이전트가 상기 캐싱 에이전트로부터 추가적 콘텐츠 요청을 수신하는 것에 응답하여, 캐싱된 콘텐츠 데이터를 유지하게
    하도록 하고,
    상기 추가적 콘텐츠 요청은 상기 캐싱 에이전트가 추가적 클라이언트에 대하여 동일한 콘텐츠 데이터를 요청하고 있다는 것을 표시하는, 비-일시적 컴퓨터-판독가능 매체.
KR1020217041034A 2019-05-14 2020-03-12 콘텐츠 전달 시스템에서의 캐시 관리 KR20220007699A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962847890P 2019-05-14 2019-05-14
US62/847,890 2019-05-14
PCT/US2020/022490 WO2020231502A1 (en) 2019-05-14 2020-03-12 Cache management in content delivery systems

Publications (1)

Publication Number Publication Date
KR20220007699A true KR20220007699A (ko) 2022-01-18

Family

ID=70228813

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217041034A KR20220007699A (ko) 2019-05-14 2020-03-12 콘텐츠 전달 시스템에서의 캐시 관리

Country Status (9)

Country Link
US (6) US11146848B2 (ko)
EP (1) EP3970344B1 (ko)
JP (1) JP2022532493A (ko)
KR (1) KR20220007699A (ko)
AU (1) AU2020274472A1 (ko)
CA (1) CA3140109A1 (ko)
PL (1) PL3970344T3 (ko)
SG (1) SG11202112137PA (ko)
WO (1) WO2020231502A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11508467B2 (en) 2014-04-22 2022-11-22 Cerner Innovation, Inc. Aggregation, partitioning, and management of healthcare data for efficient storage and processing
US10319469B2 (en) * 2014-04-22 2019-06-11 Cerner Innovation, Inc. Rule-based low-latency delivery of healthcare data
US11146848B2 (en) 2019-05-14 2021-10-12 Level 3 Communications, Llc Cache management in content delivery systems
CN113973135A (zh) * 2021-10-19 2022-01-25 北京沃东天骏信息技术有限公司 数据缓存处理方法、装置、缓存网格平台和存储介质
US11880303B2 (en) * 2021-12-30 2024-01-23 Yahoo Ad Tech Llc Content cache invalidation using cache tags

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7240100B1 (en) * 2000-04-14 2007-07-03 Akamai Technologies, Inc. Content delivery network (CDN) content server request handling mechanism with metadata framework support
US20020162109A1 (en) * 2001-04-26 2002-10-31 Koninklijke Philips Electronics N.V. Distributed storage on a P2P network architecture
US9167036B2 (en) * 2002-02-14 2015-10-20 Level 3 Communications, Llc Managed object replication and delivery
EP1517469A1 (en) 2003-09-18 2005-03-23 Comptel Corporation Method, system and computer program product for online charging in a communications network
US8806045B2 (en) * 2006-09-01 2014-08-12 Microsoft Corporation Predictive popular content replication
WO2011096865A1 (en) 2010-02-05 2011-08-11 Telefonaktiebolaget Lm Ericsson (Publ) Method and node entity for enhancing content delivery network
US11290912B2 (en) * 2011-12-14 2022-03-29 Seven Networks, Llc Mobile device configured for operating in a power save mode and a traffic optimization mode and related method
US9456053B2 (en) * 2011-12-14 2016-09-27 Level 3 Communications, Llc Content delivery network
US9880936B2 (en) 2014-10-21 2018-01-30 Sybase, Inc. Distributed cache framework
US10728319B2 (en) * 2017-10-05 2020-07-28 Level 3 Communications Llc CDN-based client messaging
US11146848B2 (en) 2019-05-14 2021-10-12 Level 3 Communications, Llc Cache management in content delivery systems

Also Published As

Publication number Publication date
CA3140109A1 (en) 2020-11-19
PL3970344T3 (pl) 2024-01-22
US12003808B2 (en) 2024-06-04
US20200366954A1 (en) 2020-11-19
US20230043476A1 (en) 2023-02-09
US20230035033A1 (en) 2023-02-02
WO2020231502A1 (en) 2020-11-19
EP3970344B1 (en) 2023-08-23
SG11202112137PA (en) 2021-11-29
US20230034398A1 (en) 2023-02-02
AU2020274472A1 (en) 2021-11-25
US20220030297A1 (en) 2022-01-27
JP2022532493A (ja) 2022-07-15
US20230040213A1 (en) 2023-02-09
EP3970344A1 (en) 2022-03-23
US11146848B2 (en) 2021-10-12

Similar Documents

Publication Publication Date Title
KR20220007699A (ko) 콘텐츠 전달 시스템에서의 캐시 관리
US9253278B2 (en) Using entity tags (ETags) in a hierarchical HTTP proxy cache to reduce network traffic
US11750694B2 (en) CDN-based client messaging
US11743120B2 (en) Tiered updating of configuration data in a content delivery network
US9781222B2 (en) Method, system and server device for transmitting a digital resource in a client-server communication system
US11991259B2 (en) Uniformity of instructions for content requests and responses in a content delivery network
US20230026912A1 (en) Systems and methods for storing content items in secondary storage