KR20190073358A - 헤더 수정을 사용한 프리페치 캐시 관리 - Google Patents

헤더 수정을 사용한 프리페치 캐시 관리 Download PDF

Info

Publication number
KR20190073358A
KR20190073358A KR1020197009139A KR20197009139A KR20190073358A KR 20190073358 A KR20190073358 A KR 20190073358A KR 1020197009139 A KR1020197009139 A KR 1020197009139A KR 20197009139 A KR20197009139 A KR 20197009139A KR 20190073358 A KR20190073358 A KR 20190073358A
Authority
KR
South Korea
Prior art keywords
content
cache
item
directive
cache directive
Prior art date
Application number
KR1020197009139A
Other languages
English (en)
Inventor
엘리 데이비드 벤
나봇 고렌
다니엘 옐린
로이 펠레드
시몬 모샤비
Original Assignee
텐세라 네트워크스 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 텐세라 네트워크스 리미티드 filed Critical 텐세라 네트워크스 리미티드
Publication of KR20190073358A publication Critical patent/KR20190073358A/ko

Links

Images

Classifications

    • 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
    • H04L67/2847
    • 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
    • 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/40Support for services or 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/50Network services
    • H04L67/535Tracking the activity of the user

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

장치(24, 60)는 네트워크 인터페이스(64) 및 하나 이상의 프로세서(44, 68)를 포함한다. 네트워크 인터페이스는 통신 네트워크(32)를 통해 통신하도록 구성된다. 하나 이상의 프로세서는 콘텐츠 아이템 중 적어도 하나의 콘텐츠 아이템이 콘텐츠 소스에 의해 규정된 캐시 지시문을 포함하는, 콘텐츠 아이템을 통신 네트워크를 통해 콘텐츠 소스(28)로부터 사용자 디바이스(24)의 캐시 메모리(52)로 프리페치하고, 콘텐츠 소스에 의해 규정된 캐시 지시문을 수정하고, 그리고 수정된 캐시 지시문을 갖는 콘텐츠 아이템을 사용자 디바이스에서 실행중인 사용자 애플리케이션(36)에 제공하여, 사용자 애플리케이션이 수정된 캐시 지시문에 응답하여 콘텐츠 아이템을 처리하게 만들도록 구성된다.

Description

헤더 수정을 사용한 프리페치 캐시 관리
본 발명은 일반적으로 사용자 디바이스에 대한 콘텐츠의 프리페치(prefetch)에 관한 것이며, 더 구체적으로는 프리페치 캐시 관리 방법 및 시스템에 관한 것이다.
당해 기술 분야에서 사용자 디바이스로 콘텐츠를 프리페치하기 위한 다양한 기술이 알려져 있다. 예를 들어, 그 개시 내용이 본원에 참조로서 통합된 미국 특허 출원 공개 제2016/0021211호는 보장 프리페치 모드(guaranteed prefetching mode)를 정의하는 것을 포함하는 콘텐츠 전달 방법을 기술하며, 여기서, 콘텐츠는 사용자의 콘텐츠 소스로부터 콘텐츠 소스로 동기화되도록 콘텐츠 소스로부터 콘텐츠 단말기로 지속적으로 프리페치된다. 사용자가 주어진 콘텐츠에 접근할 것으로 예상되는 하나 이상의 시간 인터벌(time-of-day interval)이 식별된다. 식별된 시간 인터벌 동안, 주어진 콘텐츠는 보장 프리페치 모드를 사용하여 콘텐츠 소스로부터 통신 단말기로 프리페치된다.
본 명세서에 기술된 본 발명의 일 실시예는 네트워크 인터페이스 및 하나 이상의 프로세서를 포함하는 장치를 제공한다. 네트워크 인터페이스는 통신 네트워크를 통해 통신하도록 구성된다. 하나 이상의 프로세서는 콘텐츠 아이템 중 적어도 하나의 콘텐츠 아이템이 콘텐츠 소스에 의해 규정된 캐시 지시문을 포함하는, 콘텐츠 아이템을 통신 네트워크를 통해 콘텐츠 소스로부터 사용자 디바이스의 캐시 메모리로 프리페치하고, 콘텐츠 소스에 의해 규정된 캐시 지시문을 수정하고, 그리고 수정된 캐시 지시문을 갖는 콘텐츠 아이템을 사용자 디바이스에서 실행중인 사용자 애플리케이션에 제공하여, 사용자 애플리케이션이 수정된 캐시 지시문에 응답하여 콘텐츠 아이템을 처리하게 만들도록 구성된다.
일부 실시예에서, 캐시 지시문은 콘텐츠 아이템이 프리페치되어 있는 애플리케이션-계층 프로토콜의 메시지의 헤더 내에 규정되어 있고, 프로세서는 헤더를 수정함으로써 캐시 지시문을 수정하도록 구성된다. 일 실시예에서, 애플리케이션-계층 프로토콜은 HTTP(Hypertext Transfer Protocol)이다. 예시적인 실시예에서, 캐시 지시문은 "max-age", "expires" 타임스탬프, "no-store" 및 "no-cache"로 이루어진 그룹에서 선택된다. 일부 실시예에서, 콘텐츠 소스에 의해 규정된 캐시 지시문은 콘텐츠 아이템이 최신이 아님을 나타내고, 프로세서는 콘텐츠 아이템이 최신임을 나타내도록 캐시 지시문을 수정하도록 구성된다.
일부 실시예에서, 프로세서는 보장 프리페치 모드(guaranteed prefetching mode)로 동작하는 동안에만 캐시 지시문을 수정하고, 베스트-에포트 프리페치 모드(est-effort prefetching mode)로 동작하는 동안에는 수정하지 않는다. 일 실시예에서, 프로세서는 현재 프리페치 모드가 보장 프리페치 모드인지 또는 베스트-에포트 프리페치 모드인지에 적어도 부분적으로 기초로 하여 캐시 지시문을 수정할지 여부를 결정하도록 구성된다. 다른 실시예에서, 프로세서는 프리페치된 콘텐츠 아이템을 사용자에게 제공하고, 그리고 동시에 제공된 콘텐츠 아이템이 최신인지 여부를 통신 네트워크를 통해 검증하도록 구성된다. 개시된 실시예에서, 프로세서는 콘텐츠 소스상의 콘텐츠 아이템에 대한 변경을 추적하고, 추적된 변경에 기초하여 캐시 지시문을 수정하도록 구성된다.
일 실시예에서, 프로세서 중 적어도 하나는 사용자 디바이스의 프로세서이다. 예시적인 실시예에서, 프로세서는 사용자 디바이스의 운영 체제에서 실행중인 소프트웨어 컴포넌트를 적어도 부분적으로 사용하여 캐시 지시문을 수정하도록 구성된다. 예시적인 실시예에서, 일 실시예에서, 프로세서 중 적어도 하나는 사용자 디바이스 외부의 네트워크 측 노드의 프로세서이다. 예시적인 실시예에서, 프로세서는 네트워크 측 노드에서 실행중인 소프트웨어 컴포넌트를 적어도 부분적으로 사용하여 캐시 지시문을 수정하도록 구성된다.
일 실시예에서, 프로세서는 캐시 지시문을 제거하거나 콘텐츠 아이템을 전달하는 메시지의 헤더의 적어도 일부를 제거함으로써 캐시 지시문을 수정하도록 구성된다. 다른 실시예에서, 프로세서는 캐시 지시문을 교체하거나 콘텐츠 아이템을 전달하는 메시지의 헤더의 적어도 일부를 교체함으로써 캐시 지시문을 수정하도록 구성된다. 또 다른 실시예에서, 프로세서는 콘텐츠 아이템을 전달하는 메시지의 헤더에 "no-store" 또는 "no-cache" 캐시 지시문을 추가함으로써 캐시 지시문을 수정하도록 구성된다.
일부 실시예에서, 프로세서는 사용자 디바이스의 캐시 메모리 내에 프리페치된 콘텐츠 아이템을 캐싱하기 전에 캐시 지시문을 수정하도록 구성된다. 다른 실시예에서, 프로세서는 프리페치된 콘텐츠 아이템이 사용자 디바이스의 캐시 메모리에 상주하는 동안 캐시 지시문을 수정하도록 구성된다. 또 다른 실시예에서, 프로세서는 사용자 애플리케이션에 제공하기 위해 사용자 디바이스의 캐시 메모리로부터 프리페치된 콘텐츠 아이템을 검색한 후 캐시 지시문을 수정하도록 구성된다.
또한, 본 발명에 따른 일 실시예에 따라 콘텐츠 아이템을 통신 네트워크를 통해 콘텐츠 소스로부터 사용자 디바이스의 캐시 메모리로 프리페치하는 단계를 포함하는 방법이 제공된다. 콘텐츠 아이템들 중 적어도 하나의 콘텐츠 아이템은 콘텐츠 소스에 의해 규정된 캐시 지시문을 포함한다. 콘텐츠 소스에 의해 규정된 캐시 지시문이 수정되고, 수정된 캐시 지시문을 갖는 콘텐츠 아이템은 사용자 디바이스에서 실행중인 사용자 애플리케이션에 제공되어, 사용자 애플리케이션이 수정된 캐시 지시문에 응답하여 콘텐츠 아이템을 처리하게 한다.
본 발명은 도면과 함께 본 발명의 실시예들의 아래의 상세한 설명을 읽음으로써 더 잘 이해될 것이다.
도 1은 본 발명의 일 실시예에 따른, 콘텐츠 전달 시스템을 개략적으로 도시하는 블록도이고, 그리고
도 2는 본 발명의 일 실시예에 따른, 콘텐츠 프리페치 방법을 개략적으로 도시한 흐름도이다.
(개요)
여기에 기술된 본 발명의 실시예들은 사용자 디바이스로의 콘텐츠 전달을 위한 개선된 방법 및 시스템을 제공한다. 특히, 개시된 기술은 사용자 애플리케이션에 의해 캐싱된 콘텐츠의 처리를 향상시킨다.
일부 실시예에서, 사용자 디바이스는 통신 네트워크를 통해 하나 이상의 콘텐츠 소스에 의해 제공되는 콘텐츠 아이템을 소비하는 하나 이상의 사용자 애플리케이션("앱")을 실행한다. 대기 시간(latency)을 줄이고 사용자 경험을 향상시키기 위해, 콘텐츠 전달 시스템은 선택된 콘텐츠 아이템을 네트워크를 통해 사용자 디바이스의 캐시 메모리로 프리페치한다.
콘텐츠 아이템들 중 적어도 일부에 대해, 콘텐츠 소스는 사용자 디바이스에게 콘텐츠 아이템들의 캐싱을 어떻게 처리할지 지시하는 캐시 지시문을 규정한다. 캐시 지시문은, 예를 들어, IETF(Internet Engineering Task Force)에 의해, 참조로서 본 명세서에 통합된 "Hypertext Transfer Protocol(HTTP/1.1):Caching", RFC(Request for Comments) 7234, 2014년 6월에 규정되어 있다. 한 가지 유형의 캐시 지시문은, 예를 들어, 캐싱된 콘텐츠 아이템이 여전히 최신으로 간주되어 사용 가능한 최대 유효기간(maximal age)을 규정한다. 다른 유형의 캐시 지시문은 만료 시간을 규정하는데, 만료 시간 이후에는 캐싱된 콘텐츠 아이템은 오래되어 사용 불가능한 것으로 간주된다. RFC 7234에 규정된 캐시 지시문은 콘텐츠 소스에서 사용자 디바이스로 콘텐츠 아이템을 전달하는 HTTP 응답 헤더에서 전송된다.
사용자 애플리케이션("앱")이 특정 콘텐츠 아이템을 요청하면, 요청된 콘텐츠 아이템은 일반적으로, 아마도 하나 이상의 캐시 지시문을 포함하는 HTTP 응답 헤더와 함께 앱에 제공된다. 그 다음, 앱은 일반적으로 캐시 지시문(규정된 경우)에 따라 콘텐츠 아이템을 처리한다. 예를 들어, 지시문이 콘텐츠 아이템이 최신이라고 나타내면, 앱은 일반적으로 그것을 소비한다, 예컨대, 그 콘텐츠를 사용자에게 디스플레이 한다. 지시문이 콘텐츠 아이템이 최신 버전이 아니라고 나타내면, 앱은 일반적으로 콘텐츠 소스로부터 콘텐츠 아이템의 최신 버전을 요청하거나 또는 적어도 그 콘텐츠 아이템의 유효성을 재평가하도록 콘텐츠 소스에 요청을 보낼 것이다.
일부 경우에, 콘텐츠 전달 시스템은 콘텐츠 소스에 의해 규정된 캐시 지시문에 의해 전달되는 정보보다는 캐싱된 콘텐츠 아이템의 유효성에 대한 더 정확한 정보를 가진다. 예를 들어, 콘텐츠 아이템은 오래 전에 경과된 만료 시간 지시문을 통해 사용자 디바이스에 캐시 될 수 있다. 그러나, 콘텐츠(올 콘텐츠) 전달 시스템은 콘텐츠 아이템이 실제로 최신이라는 것, 즉, 콘텐츠 소스에서 사용 가능한 최신 버전과 여전히 동일하다는 것을 나타내는 보다 정확한 정보를 가질 수 있다.
일부 실시예에서, 콘텐츠 전달 시스템은 적절할 때 캐시 지시문을 오버라이드(override)하여, 사용자 앱이 보다 정확한 정보에 따라 작동할 수 있도록 한다. 일 실시예에서, 콘텐츠 전달 시스템은 더 정확한 유효성 정보를 반영하기 위해, 선택된 콘텐츠 아이템의 HTTP 헤더를 수정하는 헤더 수정 모듈을 포함한다. 수정된 헤더를 갖는 콘텐츠 아이템은 앱에 제공되고, 그 다음 앱은 수정된 헤더에 따라 콘텐츠 아이템을 처리한다.
이러한 방식으로, 헤더 수정 모듈은 콘텐츠 소스에 의해 규정된 캐시 지시문 또는 지시문들에 따르기보다는 앱이 콘텐츠 전달 시스템에 사용 가능한 정확한 유효성 정보에 따라 콘텐츠 아이템을 처리하게 한다. 동시에, 앱과 콘텐츠 전달 시스템 간의 모든 통신은 앱 측에서의 수정을 필요로 하지 않고 기존의 애플리케이션-계층 프로토콜(예컨대, HTTP)과 호환된다.
헤더 수정 모듈은 임의의 적절한 방식으로, 예를 들어, 캐시 지시문에 규정된 만료 시간 또는 최대 유효기간을 연장하거나 규정된 캐시 지시문을 모두 삭제함으로써 헤더를 수정할 수 있다. 또 다른 예로, 헤더 수정 모듈은 헤더에 "no-store" 캐시 지시문을 추가하여 앱에 그 콘텐츠 아이템을 내부적으로 캐싱하지 않아야 함을 나타낼 수 있다.
헤더 수정 모듈은 사용자 디바이스 내에 및/또는 클라우드 서버와 같은 콘텐츠 전달 시스템의 네트워크 측 노드 내에 구현될 수 있다. 헤더 수정 모듈은 콘텐츠 전달 프로세스의 다양한 단계에서, 예컨대, 콘텐츠 아이템이 캐시 메모리 내에 배치되기 전에, 콘텐츠 아이템이 캐시 메모리로부터 검색되고 앱에 제공되기 전에, 또는 콘텐츠 아이템이 캐시 메모리에 상주하는 동안, 콘텐츠 아이템의 헤더를 수정할 수 있다.
개시된 기술들은 개시된 기술이 없었다면 네트워크를 통해 콘텐츠 아이템들을 재 페치하거나 재 검증할 필요가 있었을 시나리오에서도, 사용자 디바이스가 캐시로부터 국부적으로 콘텐츠 아이템들을 제공하는 것을 가능하게 한다. 이와 같이, 개시된 기술들은 콘텐츠 전달의 평균 대기 시간을 감소시키고, 사용자 경험을 향상시키며, 또한 사용자 디바이스의 운영 비용 및 전력 소비를 감소시키는 것을 돕는다.
(시스템 설명)
도 1은 본 발명의 일 실시예에 따른 콘텐츠 전달 시스템(20)을 개략적으로 도시하는 블록도이다. 시스템(20)은 네트워크(32)를 통해 하나 이상의 콘텐츠 소스(28)에 의해 제공되는 콘텐츠 아이템을 액세스 및 소비하는 사용자 디바이스(24)를 포함한다. 디바이스(24)는, 예를 들어, 휴대 전화, 자동차 휴대 전화 또는 스마트 폰, 무선 가능 랩톱 또는 태블릿 컴퓨터, 데스크탑 개인용 컴퓨터, 스마트 텔레비전 세트(TV), 웨어러블 장치, 또는 네트워크를 통해 통신할 수 있고 콘텐츠를 사용자에게 제시할 수 있는 임의의 다른 적절한 유형의 사용자 디바이스와 같은, 임의의 적합한 무선 또는 유선 장치를 포함할 수 있다.
사용자 디바이스(24)는 임의의 적절한 소프트웨어를 사용하여, 예를 들어, 다양한 사용자 애플리케이션("앱")(36)을 사용하거나 또는 범용 브라우저를 사용하여 콘텐츠를 소비할 수 있다. 현재 상황에서, 브라우저는 일종의 사용자 앱으로 간주된다. 도면은 명확성을 위해 단일 사용자 디바이스(24)를 도시한다. 실생활 시스템은 일반적으로 다양한 종류의 많은 수의 사용자 디바이스를 포함한다.
네트워크(32)는, 예를 들어, 인터넷과 같은 WAN(Wide Area Network), LAN(Local Area Network), 셀룰러 네트워크 또는 무선 LAN(WLAN)과 같은 무선 네트워크, 또는 임의의 다른 적절한 네트워크 또는 네트워크들의 조합을 포함할 수 있다.
콘텐츠 소스(28)는, 예를 들어, 웹 콘텐츠 서버, 또는 임의의 다른 적절한 콘텐츠 소스를 포함할 수 있다. 단지 몇 가지 예를 들자면, 개시된 기술은 웹 페이지, 오디오 또는 비디오 클립, HTML 파일, 자바 스크립트 및/또는 CSS 파일과 같은 임의의 적합한 유형의 콘텐츠 아이템과 함께 사용될 수 있다.
일부 실시예에서, 시스템(20)은 사용자 디바이스(24) 로의 콘텐츠 아이템의 프리페치를 수행한다. 본 예에서, 사용자 디바이스(24)는 사용자 디바이스의 다양한 처리 작업을 수행하는 프로세서(44)를 포함한다. 다른 작업 중에서, 프로세서(44)는 사용자 앱(36)을 실행하고, 추가로 앱(36)에 대한 콘텐츠 아이템의 프리페치를 처리하는 프리페치 에이전트(prefetch agent)(48)로 지칭되는 소프트웨어 컴포넌트를 실행한다. 또한, 사용자 디바이스(24)는 프리페치된 콘텐츠 아이템을 캐싱하기 위한 콘텐츠 캐시(52)를 포함한다. 캐시(52)는 전형적으로 프리페치 에이전트(48)에 의해 관리된다.
전형적으로, 프리페치 에이전트(48)는 프리페치된 콘텐츠 아이템들을 수신하고 그것들을 콘텐츠 캐시(52)에 저장한다. 프리페치 에이전트(48)는 콘텐츠 아이템에 접근하기 위한 사용자 요청을 가로 채고, 요청된 아이템이 이미 캐시에 상주 하는지 여부를 판정할 수 있다. 그러하다면, 프리페치 에이전트는 요청된 콘텐츠 아이템을 콘텐츠 캐시로부터 검색할 수 있다. 그렇지 않으면, 프리페치 에이전트는 일반적으로 요청된 콘텐츠 아이템을 네트워크(32)를 통해 콘텐츠 소스(28)로부터 검색할 것이다. 일 실시예에서, 프리페치 에이전트(48)는 또한 히스토리 사용 패턴 및 콘텐츠에 대한 프리페치 정책을 규정하기 위한 입력으로 사용될 수 있는 사용자 디바이스와 관련된 기타 관련 데이터를 추적하는 것을 도울 수 있다.
또한, 사용자 디바이스(24)는 통상적으로 네트워크(32)에 접속하기 위한 적절한 네트워크 인터페이스(도시되지 않음)를 포함한다. 이 네트워크 인터페이스는 유선(예컨대, 이더넷 네트워크 인터페이스 컨트롤러-NIC) 또는 무선(예컨대, 셀룰러 모뎀 또는 Wi-Fi 모뎀)일 수 있다. 전형적으로, 사용자 디바이스(24)는 적용 가능한 프리페치 정책과 같은 관련 정보를 저장하기 위해 사용되는 몇몇 내부 메모리(도시되지 않음)를 더 포함한다.
본 예에서, 프로세서(44)는 헤더 수정 모듈(40)로 지칭되는 소프트웨어 모듈을 더 실행한다. 모듈(40)은 선택된 애플리케이션-프로토콜(예를 들어, HTTP) 응답의 헤더를 수정하여, 콘텐츠 소스(28)에 의해 규정된 캐시 지시문을 수정한다. 모듈(40)의 기능은 이하에서 상세히 설명된다. 또한 아래에 설명한 바와 같이, 헤더 수정 모듈(40)이 사용자 디바이스(24)에 상주하는 구성은 하나의 예시적인 구성일 뿐이다. 대안으로서, 모듈(40)의 기능은 시스템(20)의 임의의 다른 요소 또는 요소들에 의해 적어도 부분적으로 수행될 수 있다.
도 1의 실시예에서, 시스템(20)은 네트워크 측에서 다양한 콘텐츠 프리페치 관련 작업을 수행하는 프리페치 서브 시스템(60)을 더 포함한다. 서브 시스템(60)은 네트워크(32)를 통해 통신하기 위한 네트워크 인터페이스(64), 및 프리페치 서브 시스템의 다양한 처리 작업을 수행하는 것을 돕는 프로세서(68)를 포함한다. 본 예에서, 프로세서(68)는 콘텐츠 프리페치를 수행하는 콘텐츠 프리페치 제어 유닛(CPC)(72)을 실행한다.
일 예시적인 실시예에서, CPC(72)는 콘텐츠가 사용자 디바이스(24)로 프리페치되는 방법을 규정하는 프리페치 정책을 정의한다. 예를 들어, CPC(72)는 사용자가 콘텐츠 아이템을 요청할 가능성에 기초하여, 어떤 콘텐츠 아이템이 콘텐츠 소스(28)로부터 콘텐츠 캐시(52)로 프리페치 되어야 하는지 결정할 수 있다. CPC는, 예를 들어, 사용자가 그들을 요청할 것으로 예상되는 시간의 예측 및/또는 통신 리소스의 이용 가능성에 기초하여, 콘텐츠 아이템을 프리페치하기 위한 적절한 시간을 결정할 수 있다. CPC는 콘텐츠 아이템들이, 예를 들어, Wi-Fi 또는 셀룰러 접속을 통한 것과 같이, 캐시(52)로 전달되는 방법을 결정할 수 있다. 또 다른 예로서, CPC는 콘텐츠 아이템이 사용자 디바이스로 전달될 포맷(예를 들어, 압축 여부 및 압축 수행 방법, 이미 프리페치된 경우에 변동사항만 전달(예를 들어, 차동 프리페치 업데이트)할 것인지 여부 및 그 전달 방법)을 결정할 수 있다.
다양한 실시예에서, 프리페치 정책을 적용하는 것의 일부로서, CPC(72)는 각 콘텐츠 아이템에 대해 사용자 디바이스(24)의 사용자가 콘텐츠 아이템에 대한 접근을 요청할 가능성을 추정할 수 있다. 그러한 가능성 메트릭(metric)은 사용자 디바이스(24)로 전송될 수 있고, 상이한 콘텐츠 아이템에 대한 프리페치 우선 순위를 정할 때 프리페치 에이전트(48)에 의해 사용될 수 있다. CPC(72)에서의 가능성 추정은 다양한 인자를 고려할 수 있다. 몇몇 인자는 사용자 관련(예컨대, 성별, 지리적 위치, 관심사 및/또는 최근 및 과거 인터넷 활동)일 수 있다. 다른 인자는 환경 관련(예컨대, 시각, 도로 교통 상황, 날씨, 현재 이벤트 및/또는 스포츠 행사)일 수 있다. 또 다른 인자는 콘텐츠 관련(예컨대, 콘텐츠 주제 또는 카테고리, 콘텐츠 키워드, 콘텐츠 소스의 식별정보 및/또는 콘텐츠의 현재 인기 또는 순위)일 수 있다.
일부 실시예에서, CPC(72)는 다양한 콘텐츠 아이템의 프리페치 우선 순위 및/또는 프리페치의 타이밍을 결정하는 것을 돕기 위해 사용자가 콘텐츠 아이템에 접근할 가능성이 있는 시간을 추정한다. 이러한 시간 추정치는 디바이스로 전송된 프리페치 정책의 일부로 별도로 규정될 수도 있고, 또는 가능성 메트릭 자체에 통합될 수도 있다. 예를 들어, 한 시간 이내에 접근될 가능성이 있는 콘텐츠 아이템은 적어도 두 시간 동안 필요하지 않은 콘텐츠 아이템보다 높은 가능성 메트릭을 받을 수 있다.
사용자가 콘텐츠에 접근할 가능성에 부가적으로 또는 대안으로서, 프리페치 정책을 규정할 때 CPC(72)가 고려할 수 있는 다른 인자들은 전력 소비 고려사항(예를 들어, Wi-Fi 접속 또는 강한 셀룰러 접속이 이용 가능한 동안 프리페치에 대한 선호도), 전송 비용 고려사항(예컨대, 저비용 데이터 전송 시간에 대한 선호도), 네트워크 정체 및 서버 로드 고려사항(예컨대, 트래픽이 피크가 아닌 시간 동안의 프리페치에 대한 선호도), 및/또는 기타 사용자 관련 또는 네트워크 관련 고려사항을 포함할 수 있다.
부가적으로 또는 대안으로서, 프리페치 정책을 규정함에 있어서, CPC(72)는 특정 시각을 각각의 프리페치 우선순위 레벨과 연관시킬 수 있다. 이러한 연관은 각각의 앱 또는 콘텐츠 소스에 대하여 개별적으로 수행될 수도 있고, 또는 복수의 앱 또는 콘텐츠 소스에 대해 공동으로 수행될 수도 있다. 프리페치 우선순위 레벨을 결정하는데 있어 한 예시적인 인자는 사용자가 다양한 시각에 다른 앱이나 콘텐츠 소스에 접근할 추정된 가능성이다. 한 프리페치 동작에 높은 우선순위를 할당하는 것은 일반적으로 그 프리페치 동작이 발생할 가능성이 높다는 것을 의미한다(아마도 특정 제약 또는 제한 조건에 따라 달라질 수 있다).
서브 시스템(60) 및 에이전트(48)에 의해 사용될 수 있는 콘텐츠 프리페치 및 콘텐츠 프리페치 스킴의 특정 양태는 상기 인용된 미국 특허 출원 공개 제2016/0021211호에 언급되어 있다. 예를 들어, CPC(72)는 다양한 프리페치 모드, 예를 들어 보장 프리페치 모드와 최선형 프리페치 모드 중 하나를 선택할 수 있다. 예를 들어, CPC(72)는 다양한 프리페치 모드 중에서, 예를 들어, 보장 프리페치 모드와 베스트-에포트 프리페치 모드 중 하나를 선택할 수 있다. 보장 프리페치 모드에서, CPC(72)는(예컨대, 미리 정의된 추적 인터벌로) 콘텐츠 소스(28)상의 콘텐츠의 변화를 지속적으로 추적하고, (예컨대, 사전 정의된 보장 모드 프리페치 인터벌로) 사용자 디바이스(24) 내의 콘텐츠 캐시(52)가 콘텐츠 소스들과 동기화되도록 프리페치함으로써 정기적으로 갱신되는 것을 보장한다. 베스트-에포트 모드에서, CPC는 일반적으로 사용 가능한 리소스를 사용하여 실현 가능한 만큼만 프리페치를 수행한다.
예를 들어, 베스트-에포트 모드에서, 프리페치는 사용자 디바이스의 모뎀이 어떤식으로든 활성화된 시나리오, 특히 견고한 네트워크 연결이 존재하는 시나리오, 또는 비계량(non-metered) 연결(예컨대 Wi-Fi, 이동 통신은 아님)을 포함하는 시나리오로 제한될 수 있다. 보장 프리페치 모드는 사용자가 콘텐츠 소스에 접근할 가능성이 높다고 예측된 하나 이상의 시간 인터벌 동안 사용될 수 있다. 보장 모드와 베스트-에포트 모드 간의 선택에 영향을 줄 수 있는 다른 고려사항은 다양한 프리페치 정책 고려사항, 예컨대, 전력 소비, 전송 비용, 네트워크 정체 및/또는 서버 부하를 기초로 할 수 있다. 모드의 선택은 또한 상이한 애플리케이션 및/또는 콘텐츠 소스에 대해 개별적으로 행해질 수 있다.
일부 실시예에서, CPC(72)는 콘텐츠 소스(28)를 정기적으로 모니터링하고 프리페치에 이용 가능한 콘텐츠 아이템의 카탈로그인 "프리페치 카탈로그"를 생성한다. 각 콘텐츠 아이템은 식별자(ID) 및 버전 번호 표시에 의해 카탈로그에 표시된다. 버전 번호는 CPC(72) 및/또는 프리페치 에이전트(48)가, 예를 들어, 사용자 디바이스(24)의 캐시(52)에 캐싱된 버전에 대해 특정 콘텐츠 아이템이 변경되었는지 여부를 판정하는 것을 가능하게 해준다. 카탈로그는 또한 상술된 가능성 메트릭, 콘텐츠 아이템이 검색될 수 있는 링크 또는 어드레스, 및/또는 임의의 다른 관련 정보를 포함할 수 있다. 카탈로그는 CPC(72)에서 정의된 다른 프리페치 규칙, 전략, 임계값 또는 기타 정책 사항과 함께 프리페치 정책의 일부로 간주된다.
도 1에 도시된 시스템(20) 및 그것의 다양한 요소들의 구성은 개념적 명료성을 위해 단순하게 선택된 구성 예이다. 대안의 실시예에서, 임의의 다른 적절한 구성이 사용될 수 있다. 예를 들어, 프리페치 서브 시스템(60), 에이전트(48) 및 모듈(40)의 기능은 임의의 원하는 수의 프로세서를 사용하여 구현될 수 있고, 또는 심지어 단일 프로세서 내에 구현될 수도 있다. 서브 시스템(60), 에이전트(48) 및 모듈(40)의 다양한 기능들은 임의의 적절한 방식으로 프로세서들 사이에서 분할될 수 있다. 다른 실시예에서, 서브 시스템(60)의 일부 또는 모든 기능은 사용자 디바이스(24)에서 에이전트(48)에 의해 수행될 수 있다.
다른 예로서, 프리페치 에이전트(48) 및/또는 헤더 수정 모듈(40)은 프로세서(44)상에서 실행되는 소프트웨어 모듈 내에, 프로세서(44)상에서 실행되는 애플리케이션 내에, 프로세서(44)상에서 실행되는 애플리케이션에 내장된 소프트웨어 개발 키트(SDK) 내에, 프로세서(44)상에서 실행되는 운영 시스템(OS)에 의해, 또는 임의의 다른 적절한 방식으로 구현될 수 있다. 일 실시예에서, 프로세서(44)는 프리페치 에이전트(48)에 의해 제어되고 착신 및 발신 트래픽에 노출되는 프록시 서버를 실행할 수 있다.
다른 대안으로서, 프리페치 에이전트(48) 및/또는 헤더 수정 모듈(40)의 기능은 사용자 디바이스(24)상의 에이전트 없이 네트워크 측에서 전적으로 구현될 수 있다. 다른 대안으로서, 프리페치 에이전트(48) 및/또는 헤더 수정 모듈(40)의 기능 중 일부는 사용자 디바이스 측에서 구현될 수 있고, 프리페치 에이전트(48) 및/또는 헤더 수정 모듈(40)의 다른 기능은 네트워크 측에서 구현될 수 있다. 예를 들어, 클라우드 기반 프리페치 서버는 콘텐츠 소스(28)상의 콘텐츠 아이템들을 추적할 수 있고, 콘텐츠의 변경을(아마도 사용자 디바이스 운영 체제에 상주하는) 사용자 디바이스 내의 프리페치 에이전트에 보고할 수 있다.
일반적으로, 여기에 기술된 상이한 시스템 요소들(예를 들어, 프리페치 에이전트, 헤더 수정 모듈, 서브 시스템(60)의 콘텐츠 소스 및 요소)의 기능들은 임의의 다른 적절한 방법으로 분할될 수 있다. 따라서, 본 특허 출원의 맥락에서 및 청구 범위에서, 개시된 기술은 하나 이상의 프로세서에 의해 수행된다. 이러한 프로세서들은 사용자 디바이스(24) 내에 및/또는 서브 시스템(60) 및/또는 콘텐츠 소스(28)와 같은 네트워크 측상에 상주할 수 있다.
여기에 설명된 실시예는 주로 인간 사용자를 지칭하지만, "사용자"라는 용어는 기계 사용자 또한 지칭한다. 기계 사용자는, 예를 들어, 다양한 IoT(Internet-of-Things) 애플리케이션에서와 같이 무선 통신을 사용하는 다양한 호스트 시스템을 포함할 수 있다.
시스템(20)의 각각의 요소들은 적절한 소프트웨어를 사용하여, 적절한 하드웨어를 사용하여, 예를 들어, 하나 이상의 ASIC(Application-Specific Integrated Circuits) 또는 FPGA(Field-Programmable Gate Arrays)를 사용하여, 또는 하드웨어와 소프트웨어 요소의 조합을 사용하여 구현될 수 있다. 캐시(52)는 임의의 적합한 유형의 하나 이상의 메모리 또는 저장 장치를 사용하여 구현될 수 있다. 일부 실시예에서, 에이전트(48), 모듈(40) 및/또는 서브 시스템(60)은 여기에 설명된 기능을 수행하도록 소프트웨어로 프로그래밍되는 하나 이상의 범용 프로세서를 사용하여 구현 될 수 있다. 소프트웨어는, 예를 들어, 네트워크를 통해 전자 형태로 프로세서에 다운로드 될 수 있고 또는 대안으로서 또는 추가적으로 자기, 광학 또는 전자 메모리와 같은 일시적 유형의 매체에 제공 및/또는 저장 될 수 있다.
(헤더 수정을 이용한 사용자 애플리케이션에 의해 캐싱된 콘텐츠의 처리 제어)
일부 실시예에서, 사용자 디바이스(24) 내의 앱(36)은 HTTP 요청을 콘텐츠 소스(28)에 전송함으로써 콘텐츠 아이템을 요청한다. 콘텐츠 소스는 요청된 콘텐츠 아이템을 각각의 HTTP 응답으로 보낸다. 이들 실시예에서, 프리페치 에이전트(48) 및 프리페치 서브 시스템(60) 역시 HTTP 요청 및 응답을 사용하여 콘텐츠 아이템을 프리페치한다. HTTP는 콘텐츠를 전달하는 데 사용할 수 있는 애플리케이션-계층 프로토콜의 한 예일 뿐이다. 대안의 실시예에서, 개시된 기술은 전달된 콘텐츠에 대한 캐시 지시문을 지원하는 임의의 다른 적절한 애플리케이션-계층 프로토콜과 함께 사용될 수 있다. 그러나, 아래 설명은 명확성을 위해 HTTP에 초점을 둔다.
요청된 콘텐츠 아이템을 전달할 때, 콘텐츠 소스(28)는 콘텐츠 아이템들의 캐싱을 어떻게 처리할 것인지를 사용자 디바이스(24)에 명령하는 하나 이상의 캐시 지시문을 규정할 수 있다. 캐시 지시문은 콘텐츠 아이템을 전달하는 HTTP 응답 헤더의 적합한 필드 내에 규정된다. 상기 인용된 RFC 7234에 따른 캐시 지시문의 몇 가지 예는 다음을 포함한다.
■ "Max-age" - 콘텐츠 아이템이 신선한(최신이여서 사용 가능한) 것으로 간주될, 콘텐츠 아이템에 대한 요청 시간으로부터의 최대 지속 시간을 규정하는 지시문.
■ "Expires" - 콘텐츠 아이템이 새로운 것으로 간주되지 않게 되는 만료 시간(일반적으로 날짜 및 시간)을 지정하는 지시문.
■ "No-cache" - 콘텐츠 아이템이 캐싱된 경우 그것이 재사용되기 전에 발생 콘텐츠 소스를 통해 재검증되어야 한다는 것을 규정하는 지시문.
■ "No-store" - 반환된 콘텐츠 아이템을 포함하여, HTTP 응답과 관련하여 아무 것도 캐시되어서는 안된다는 것을 규정하는 지시문.
사용자 앱(36)이 특정 콘텐츠 아이템을 요청할 때, 요청된 콘텐츠 아이템은 아마도 캐시 지시문을 포함하는 HTTP 응답 헤더와 함께(캐시(52)로부터 국부적으로 또는 네트워크(32)를 통해) 일반적으로 앱에 제공된다. 그 다음, 앱은 일반적으로 캐시 지시문에 따라 콘텐츠 아이템을 처리한다. 따라서, 콘텐츠 아이템을 프리페치할 때, 프리페치 에이전트(48)는 일반적으로 캐시(52)에 콘텐츠와 함께 그 아이템의 HTTP 응답 헤더를 저장하여 헤더가 앱에 제공될 수 있게 한다.
사용자 디바이스(24)의 캐시(52)에 캐싱되는 일부 콘텐츠 아이템에 대해, 시스템(20)은 콘텐츠 소스(28)에 의해 규정된 캐시 지시문들에 의해 전달된 정보보다 더 정확한 유효성에 관한 정보를 가질 수 있다. 이러한 향상된 지식은 프리페치 서브시스템(60)에 의해 수행되는 콘텐츠 소스(28) 상의 콘텐츠에 대한 변경을 추적하는 프로세스(예컨대, 크롤링(crawling))으로부터 비롯될 수 있다. 이 정보는 네트워크(32)와 같은 임의의 적절한 수단을 사용하여 서브 시스템(60) 및/또는 에이전트(48)에 제공 될 수 있고, 또는 사용자 디바이스들 간의 직접 디바이스-대-디바이스 링크를 통해 다른 사용자 디바이스로부터 제공될 수 있다.
예를 들어, 캐시(52) 내의 특정 콘텐츠 아이템의 HTTP 응답 헤더는 이미 만료된 만료 시간을 갖는 "Expires" 지시문 또는 이미 초과된 유효기간을 갖는 "Max-age" 지시문을 포함할 수 있다. 한편, 프리페치 서브 시스템(60) 또는 프리페치 에이전트(48)는 콘텐츠 아이템이 실제로 신선하다(즉, 콘텐츠 소스(28)에서 이용 가능한 가장 최신의 버전과 동일하다)는 것을 나타내는 정보를 가질 수 있다. 이러한 경우에, 프리페치 서브 시스템(60) 또는 프리페치 에이전트(48)는 헤더 수정 모듈(40)을 트리거하여 해당 콘텐츠 아이템의 HTTP 응답 헤더를 수정할 수 있다. 트리거 될 때, 모듈(40)은 캐시 지시문(또는 캐시 지시문이 없는 것도 가능)이 콘텐츠 아이템이 최신임을 나타내도록 HTTP 응답 헤더를 변경한다.
수정된 헤더를 갖는 콘텐츠 아이템은 캐시(52)로부터 앱(36)으로 제공된다. 따라서, 앱은 콘텐츠 소스에 의해 규정된 원래의 캐시 지시문 대신, 수정된 캐시 지시문에 따라 콘텐츠 아이템을 처리할 것이다. 예를 들어, 수정된 헤더가 콘텐츠 아이템이 최신임을 나타내면, 앱은 일반적으로 콘텐츠를 소비하고 콘텐츠 소스에 대한(vis-a-vis) 재검증을 요청하거나 네트워크를 통해 리-페치(re-fetching)할 것을 요청하지 않는다.
다양한 실시예에서, 헤더 수정 모듈(40)은 콘텐츠 아이템이 여전히 최신이라는 사실을 반영하고, 앱(36)이 콘텐츠 아이템을 계속 사용하게 하기 위해 캐싱된 콘텐츠 아이템의 헤더를 다양한 방식으로 수정할 수 있다.
예를 들어, 모듈(40)은 원래 헤더 내의 "Max-age" 값이 이미 경과하였더라도, HTTP 응답 헤더의 "Max-age" 값을 아직 경과하지 않은 유효기간으로 증가시킬 수 있다. 다른 예로서, 모듈(40)은 원래의 헤더의 "Expires" 타임 스탬프가 이미 만료되었더라도, HTTP 응답 헤더 내의 "Expires" 값을 아직 만료되지 않은 시간 및 날짜로 수정할 수 있다.
또 다른 예로서, 모듈(40)은 HTTP 응답 헤더로부터 "No-cache" 지시문을 제거할 수 있다. 보다 일반적으로, 모듈(40)은 HTTP 응답 헤더의 일부 또는 전부를 삭제하여, 앱(36)이 헤더에 규정된 캐시 지시문을 따르지 않도록 할 수 있다.
또 다른 예에서, 모듈(40)은 HTTP 응답 헤더에 "No-store" 지시문을 추가할 수 있다. 이러한 추가는 앱(36)에게 앱의 로컬 캐시 내에 콘텐츠 아이템을 캐싱하지 못하게 하여, 더블 캐싱(double-caching)(캐싱(52) 및 앱의 내부 캐시 모두에서의 콘텐츠 아이템의 캐싱)을 회피시킨다. 이 특징은 또한 앱(36)이 캐시(52) 내에 캐싱된 콘텐츠 아이템의 버전을 계속 사용하게 만든다.
또한 부가적으로 또는 대안으로서, 헤더 수정 모듈(40)은 임의의 다른 적절한 방법으로 캐싱된 콘텐츠 아이템의 HTTP 응답 헤더를 수정할 수 있다.
본 특허 출원의 맥락 및 청구 범위에서, 용어 "캐시 지시문 수정" 또는 "헤더 수정"은 임의의 종류의 수정, 예컨대, 캐시 지시문의 속성 값을 수정하는 것, 캐시 지시문을 제거하는 것, 캐시 지시문을 다른 것으로 대체하는 것, 및/또는 헤더에 캐시 지시문을 추가하는 것을 포함할 수 있다.
다양한 실시예들에서, 헤더 수정 모듈(40)은 콘텐츠 전달 프로세스의 다양한 단계들에서 콘텐츠 아이템의 HTTP 응답 헤더를 수정할 수 있다. 일부 실시예에서, 모듈(40)은 콘텐츠 아이템이 캐시(52)에 배치되기 전에 헤더를 수정한다. 그 다음, 콘텐츠 아이템은 수정된 헤더와 함께 캐시(52)에 저장된다. 다른 실시예에서, 모듈(40)은 콘텐츠 아이템이 캐시(52)로부터 검색된 후 그리고 그것이 앱(36)에 제공되기 전에 헤더를 수정한다.
또 다른 실시예에서, 모듈(40)은 콘텐츠 아이템이 캐시(52) 내에 상주하는 동안, 즉, 캐시(52) 내에 콘텐츠 아이템을 저장하는 시간과 앱(36)에 제공하기 위해 캐시(52)로부터 콘텐츠 아이템을 추출하는 시간 사이의 임의의 시간에 헤더를 수정한다. 후자의 옵션은, 예를 들어, 유효성, 예제, 신선도 상태 업데이트에 관한 새로운 정보가 사용 가능해지면 유용할 수 있다.
상술한 바와 같이, 일부 실시예에서, 시스템(20)은 특정 시간에 보장 프리페치 모드로(특정 사용자 디바이스(24)와 관련하여) 동작한다. 다른 시간에, 시스템(20)은 베스트-에포트 프리페치 모드에서 사용자 디바이스에 대해 동작한다. 보w장 프리페치 모드에서, 프리페치 서브 시스템(60)은 콘텐츠 소스(28)상의 콘텐츠의 변화를 연속적으로 추적하고, 캐시(52)에 캐싱된 콘텐츠 아이템이 콘텐츠 소스상의 상응하는 최신 버전과 지속적으로 동기화되고 있음을 보장한다.
이와 같이, 보장 프리페치 모드에서 동작할 때, 서브 시스템(60)은 정확한 유효성 정보를 소유할 특히 높은 확률을 갖는다. 따라서, 개시된 헤더 수정 기술과 보장 프리페치 모드의 조합은 특히 효과적이다. 그럼에도 불구하고, 개시된 헤더 수정 기술은 베스트-에포트 프리페치 모드로 동작할 때에도 적용 가능하다.
일부 실시예에서, 헤더 수정 모듈(40)은 해당 사용자 디바이스에 대한 프리페치가 보장 프리페치 모드를 따를 때 헤더 수정을 수행한다. 일부 실시예에서, 헤더 수정 모듈(40)은 보장 프리페치 모드에서만 헤더 수정을 수행하고, 베스트-에포트 프리페치 모드에서는 수행하지 않는다. 일부 실시예에서, 헤더 수정 모듈(40)은 현재 프리페치 모드가 보장 프리페치 모드인지 또는 베스트-에포트 프리페치 모드인지 여부에 적어도 부분적으로 기초하여 헤더 수정을 수행할지 여부를 결정한다.
일부 시나리오에서, 모듈(40)은 일부 콘텐츠 아이템의 HTTP 응답 헤더를 수정함으로써, 앱(36)이 콘텐츠 아이템을 사용하게 하지만, 콘텐츠 아이템은 실제로 최신의 것은 아니다. 이러한 시나리오는, 예를 들어, (프리페치 서브 시스템의 유효성 정보가 때때로 신뢰할 수 없는) 베스트-에포트 프리페치 모드에서, 또는(예컨대, 사용자 디바이스로 전송된 상태 보고서가 손실된 경우) 보장 프리페치 모드에서 발생할 수 있다. 그러한 경우에, 프로세서(44)는 콘텐츠 아이템을 여전히 사용자에게 제공할 수 있고, 동시에 콘텐츠 아이템의 신선도를 재평가할 수 있다. 이 특징은, 예를 들어, 본 특허 출원의 양수인에게 양도되고 그 개시 내용이 본 명세서에 참조로서 통합된, "Freshness-aware presentation of content in communication terminals"란 제목의 미국 특허 출원 공개 제2017/0111465 호에 기재되어있다.
상술한 바와 같이, 개시된 기술은 사용자 디바이스 내에 및/또는 네트워크 측 상의 하나 이상의 프로세서를 사용하여 구현될 수 있다. 비제한적 실시예에서, 프리페치 서브 시스템(60) 및/또는 헤더 수정 모듈(40)의 기능의 일부 또는 전부는 다음 중 하나 이상에서 구현될 수 있다:
■ 사용자 디바이스에서, 프로세서(44) 상에서 실행되는 운영체제(OS).
■ 프리페치를 지원하는 앱(36) 중 하나에서.
■ 프로세서(44)상에서 실행되고 하나 이상의 다른 앱(36)에 프리페치 및 캐싱 서비스를 제공하는, 하나의 앱에서.
또 다른 예에서, 헤더 수정 모듈(40)은 별도의 엔티티로서가 아니라 프리페치 서브 시스템(60)의 일체로 된 부분으로서 구현될 수 있다. 같은 이유로, 모듈(40)은 동일한 소프트웨어 모듈 내의 프리페치 에이전트(48)와 통합될 수 있다.
도 2는 본 발명의 일 실시예에 따른, 콘텐츠 프리페치 방법을 개략적으로 도시한 흐름도이다. 이 방법은 프리페치 단계(80)에서 프리페치 서브 시스템(60) 및/또는 프리페치 에이전트(48)가 사용자 디바이스(24)의 콘텐츠 소스(28)로부터 캐시(52)로 콘텐츠 아이템을 프리페치하는 것으로 시작한다. 프리페치된 콘텐츠 아이템들 중 적어도 일부는 발생 콘텐츠 소스에 의해 규정된 캐시 지시문을 포함한다. 추적 단계(84)에서, 프리페치 서브 시스템(60)은, 예컨대, 콘텐츠를 크롤링함으로써, 콘텐츠 소스(28)상의 콘텐츠 아이템에 대한 변경을 추적한다.
확인 단계(88)에서, 프리페치 서브 시스템(60) 및/또는 프리페치 에이전트(48)는, 캐시(52)에 캐싱된 어느 콘텐츠 아이템에 대해, 원래의 캐시 지시문이 그 콘텐츠 아이템이 최신이 아님을 나타내지만, 단계(84)의 추적 프로세스는 그 콘텐츠 아이템이 실제로 최신임을 나타내는지 여부를 확인한다.
그렇지 않은 경우, 콘텐츠 아이템은 정상 처리 단계(92)에서 정상적으로 처리된다. 정상 처리 단계에서, 앱(36)이 그 콘텐츠 아이템을 요청할 때, 에이전트(48)는 콘텐츠 소스에 의해 규정된 캐시 지시문과 함께 캐시(52)로부터 콘텐츠 아이템을 제공한다. 앱은 규정된 캐시 지시문에 따라 콘텐츠 아이템을 처리한다.
반면에, 추적 프로세스가 그 콘텐츠 아이템이 최신임을 나타내는 경우, 원래의 캐시 지시문이 그 콘텐츠 아이템이 최신이 아님을 나타내더라도, 헤더 수정 모듈(40)은 헤더 수정 단계(96)에서 콘텐츠 아이템의 HTTP 응답 헤더를 수정한다. 여기에 기술된 임의의 헤더 수정 스킴이 사용될 수 있다.
수정된 제공하는 단계(100)에서, 모듈(40) 또는 에이전트(48)는 수정된 헤더와 함께, 콘텐츠 아이템을 요청한 앱(36)에 제공한다. 소비 단계(104)에서, 앱은 수정된 헤더에 따라 콘텐츠 아이템의 캐싱된 버전을 소비한다.
본 명세서에 기술된 실시예는 주로 프리페치된 콘텐츠의 캐싱을 다루지 만, 여기에 기술된 방법 및 시스템은 또한 캐싱을 채용하는 다른 시스템 및 애플리케이션에 사용될 수 있다. 개시된 기술은, 앱에 대한 어떠한 변경도 요구하지 않고도, 그러한 명령을 제공하기 위해(원래의 캐시 지시문에 비해 개선된) 개선된 캐싱 명령을 앱에 제공할 수 있는, 임의의 적절한 캐싱 시스템을 가능하게 하는데 사용될 수 있다. 따라서, 예를 들어, 캐시 지시문을 수정하는 개시된 방법은 상기 인용된 미국 가출원 제 62/412,864 호 및 제 62/567,267 호에 기술된 보장 캐시 상태 갱신 모드 및/또는 베스트-에포트 캐시 상태 갱신 모드와 함께 구현 될 수 있다.
따라서, 상술 한 실시예들 예시로서 언급되었고, 본 발명은 상기에 구체적으로 도시되고 설명된 것으로 한정되지 않는다는 것을 이해할 것이다. 그보다는, 본 발명의 범위는 상술한 다양한 특징의 조합 및 서브 조합 뿐만 아니라 상술한 설명을 읽었을 때 당업자에게 발생할 수 있고 종래 기술에 개시되지 않은 변형 및 수정을 포함한다. 본 특허 출원에 참조로서 통합된 문헌은 본 명세서에서 명시적으로 또는 암시적으로 이루어진 정의와 상충되는 방식으로 이들 통합된 문서에서 임의의 용어가 정의되는 경우에 본 명세서의 정의가 고려되어야 한다는 것을 제외하고는, 본 출원의 일체 부분으로 간주된다.

Claims (36)

  1. 통신 네트워크를 통해 통신하기 위한 네트워크 인터페이스; 및
    하나 이상의 프로세서를 포함하고,
    상기 하나 이상의 프로세서는:
    콘텐츠 아이템 중 적어도 하나의 콘텐츠 아이템이 상기 콘텐츠 소스에 의해 규정된 캐시 지시문을 포함하는, 상기 콘텐츠 아이템을 상기 통신 네트워크를 통해 콘텐츠 소스로부터 사용자 디바이스의 캐시 메모리로 프리페치하고; 그리고
    상기 콘텐츠 소스에 의해 규정된 캐시 지시문을 수정하고, 상기 수정된 캐시 지시문을 갖는 콘텐츠 아이템을 상기 사용자 디바이스에서 실행중인 사용자 애플리케이션에 제공하여, 상기 사용자 애플리케이션이 상기 수정된 캐시 지시문에 응답하여 상기 콘텐츠 아이템을 처리하게 만들도록 구성되어 있는 것을 특징으로 하는 장치.
  2. 제 1 항에 있어서, 상기 캐시 지시문은 상기 콘텐츠 아이템이 프리페치되어 있는 애플리케이션-계층 프로토콜의 메시지의 헤더 내에 규정되어 있고, 상기 프로세서는 상기 헤더를 수정함으로써 상기 캐시 지시문을 수정하도록 구성된 것을 특징으로 하는 장치.
  3. 제 2 항에 있어서, 상기 애플리케이션-계층 프로토콜은 HTTP(Hypertext Transfer Protocol)를 포함하는 것을 특징으로 하는 장치.
  4. 제 3 항에 있어서, 상기 캐시 지시문은 "max-age", "expires" 타임스탬프, "no-store" 및 "no-cache"로 이루어진 그룹에서 선택된 것을 특징으로 하는 장치.
  5. 제 1 항 또는 제 2 항에 있어서, 상기 콘텐츠 소스에 의해 규정된 상기 캐시 지시문은 상기 콘텐츠 아이템이 최신이 아님을 나타내며, 상기 프로세서는 상기 콘텐츠 아이템이 최신임을 나타내도록 상기 캐시 지시문을 수정하도록 구성된 것을 특징으로 하는 장치.
  6. 제 1 항 또는 제 2 항에 있어서, 상기 프로세서는 보장 프리페치 모드(guaranteed prefetching mode)로 동작하는 동안에만 상기 캐시 지시문을 수정하고 베스트-에포트 프리페치 모드(best-effort prefetching mode)로 동작하는 동안에는 수정하지 않도록 구성된 것을 특징으로 하는 장치.
  7. 제 1 항 또는 제 2 항에 있어서, 상기 프로세서는 적어도 부분적으로 현재 프리페치 모드가 보장 프리페치 모드인지 또는 베스트-에포트 프리페치 모드인지에 기초하여 상기 캐시 지시문을 수정할지 여부를 결정하도록 구성된 것을 특징으로 하는 장치.
  8. 제 1 항 또는 제 2 항에 있어서, 상기 프로세서는 프리페치된 콘텐츠 아이템을 사용자에게 제공하고, 그리고 동시에 제공된 콘텐츠 아이템이 최신인지 여부를 상기 통신 네트워크를 통해 검증하도록 구성된 것을 특징으로 하는 장치.
  9. 제 1 항 또는 제 2 항에 있어서, 상기 프로세서는 콘텐츠 소스상의 콘텐츠 아이템에 대한 변경을 추적하고, 추적된 변경에 기초하여 상기 캐시 지시문을 수정하도록 구성된 것을 특징으로 하는 장치.
  10. 제 1 항 또는 제 2 항에 있어서, 상기 프로세서 중 적어도 하나는 상기 사용자 디바이스의 프로세서인 것을 특징으로 하는 장치.
  11. 제 10 항에 있어서, 상기 프로세서는 상기 사용자 디바이스의 운영 체제에서 실행중인 소프트웨어 컴포넌트를 적어도 부분적으로 사용하여 상기 캐시 지시문을 수정하도록 구성된 것을 특징으로 하는 장치.
  12. 제 1 항 또는 제 2 항에 있어서, 상기 프로세서 중 적어도 하나는 상기 사용자 디바이스 외부의 네트워크 측 노드의 프로세서인 것을 특징으로 하는 장치.
  13. 제 12 항에 있어서, 상기 프로세서는 상기 네트워크 측 노드에서 실행중인 소프트웨어 컴포넌트를 적어도 부분적으로 사용하여 상기 캐시 지시문을 수정하도록 구성된 것을 특징으로 하는 장치.
  14. 제 1 항 또는 제 2 항에 있어서, 상기 프로세서는 상기 캐시 지시문을 제거하거나 상기 콘텐츠 아이템을 전달하는 메시지의 헤더의 적어도 일부를 제거함으로써 상기 캐시 지시문을 수정하도록 구성된 것을 특징으로 하는 장치.
  15. 제 1 항 또는 제 2 항에 있어서, 상기 프로세서는 상기 캐시 지시문을 교체하거나 상기 콘텐츠 아이템을 전달하는 메시지의 헤더의 적어도 일부를 교체함으로써 상기 캐시 지시문을 수정하도록 구성된 것을 특징으로 하는 장치.
  16. 제 1 항 또는 제 2 항에 있어서, 상기 프로세서는 상기 콘텐츠 아이템을 전달하는 메시지의 헤더에 "no-store" 또는 "no-cache" 캐시 지시문을 추가함으로써 캐시 지시문을 수정하도록 구성된 것을 특징으로 하는 장치.
  17. 제 1 항 또는 제 2 항에 있어서, 상기 프로세서는 상기 사용자 디바이스의 상기 캐시 메모리 내에 프리페치된 콘텐츠 아이템을 캐싱하기 전에 상기 캐시 지시문을 수정하도록 구성된 것을 특징으로 하는 장치.
  18. 제 1 항 또는 제 2 항에 있어서, 상기 프로세서는 프리페치된 콘텐츠 아이템이 상기 사용자 디바이스의 상기 캐시 메모리에 상주하는 동안 상기 캐시 지시문을 수정하도록 구성된 것을 특징으로 하는 장치.
  19. 제 1 항 또는 제 2 항에 있어서, 상기 프로세서는 상기 사용자 애플리케이션에 제공하기 위해 상기 사용자 디바이스의 상기 캐시 메모리로부터 프리페치된 콘텐츠 아이템을 검색한 후 상기 캐시 지시문을 수정하도록 구성된 것을 특징으로 하는 장치.
  20. 콘텐츠 아이템을 통신 네트워크를 통해 콘텐츠 소스로부터 사용자 디바이스의 캐시 메모리로 프리페치하는 단계로서, 상기 콘텐츠 아이템들 중 적어도 하나의 콘텐츠 아이템은 상기 콘텐츠 소스에 의해 규정된 캐시 지시문을 포함하는 것인 상기 프리페치하는 단계; 및
    상기 콘텐츠 소스에 의해 규정된 상기 캐시 지시문을 수정하고 수정된 캐시 지문을 갖는 콘텐츠 아이템을 상기 사용자 디바이스에서 실행중인 사용자 애플리케이션에 제공하여, 상기 사용자 애플리케이션이 상기 수정된 캐시 지시문에 응답하여 상기 콘텐츠 아이템을 처리하게 하는 단계를 포함하는 것을 특징으로 하는 방법.
  21. 제 20 항에 있어서, 상기 캐시 지시문은 상기 콘텐츠 아이템이 프리페치되어 있는 애플리케이션-계층 프로토콜의 메시지의 헤더 내에 규정되어 있고, 상기 프로세서는 상기 헤더를 수정함으로써 상기 캐시 지시문을 수정하도록 구성된 것을 특징으로 하는 방법.
  22. 제 21 항에 있어서, 상기 애플리케이션-계층 프로토콜은 HTTP(Hypertext Transfer Protocol)를 포함하는 것을 특징으로 하는 방법.
  23. 제 22 항에 있어서, 상기 캐시 지시문은 "max-age", "expires" 타임스탬프, "no-store" 및 "no-cache"로 이루어진 그룹에서 선택된 것을 특징으로 하는 방법.
  24. 제 20 항 또는 제 21 항에 있어서, 상기 콘텐츠 소스에 의해 규정된 상기 캐시 지시문은 상기 콘텐츠 아이템이 최신이 아님을 나타내며, 상기 캐시 지시문의 수정은 상기 캐시 지시문에 의해 상기 콘텐츠 아이템이 최신임을 나타내는 것을 포함하는 것을 특징으로 하는 방법.
  25. 제 20 항 또는 제 21 항에 있어서, 상기 캐시 지시문의 수정은 보장 프리페치 모드로 동작하는 동안에만 수행되고, 베스트-에포트 프리페치 모드로 동작하는 동안에는 수행되지 않는 것을 특징으로 하는 방법.
  26. 제 20 항 또는 제 21 항에 있어서, 현재 프리페치 모드가 보장 프리페치 모드인지 또는 베스트-에포트 프리페치 모드인지 여부에 적어도 부분적으로 기초하여 상기 캐시 지시문을 수정할지 여부를 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  27. 제 20 항 또는 제 21 항에 있어서, 프리페치된 콘텐츠 아이템을 사용자에게 제공하는 단계, 및 동시에 제공된 콘텐츠 아이템이 최신인지 여부를 상기 통신 네트워크를 통해 검증하는 단계를 포함하는 것을 특징으로 하는 방법.
  28. 제 20 항 또는 제 21 항에 있어서, 상기 캐시 지시문의 수정은 상기 콘텐츠 소스 상의 상기 콘텐츠 아이템에 대한 변경을 추정하고 추적된 변경을 기초로 상기 캐시 지시문을 수정하는 것을 포함하는 것을 특징으로 하는 방법.
  29. 제 20 항 또는 제 21 항에 있어서, 상기 캐시 지시문의 수정은 상기 사용자 디바이스의 운영체제에서 실행되는 소프트웨어 컴포넌트를 사용하여 적어도 부분적으로 수행되는 것을 특징으로 하는 방법.
  30. 제 20 항 또는 제 21 항에 있어서, 상기 캐시 지시문의 수정은 적어도 일부 상기 사용자 디바이스 외부의 네트워크 측 노드에 의해 수행되는 것을 특징으로 하는 방법.
  31. 제 20 항 또는 제 21 항에 있어서, 상기 캐시 지시문의 수정은 상기 캐시 지시문을 제거하는 것 또는 상기 콘텐츠 아이템을 전달하는 메시지의 헤더의 적어도 일부를 제거하는 것을 포함하는 것을 특징으로 하는 방법.
  32. 제 20 항 또는 제 21 항에 있어서, 상기 캐시 지시문의 수정은 상기 캐시 지시문을 교체하는 것 또는 상기 콘텐츠 아이템을 전달하는 메시지의 헤더의 적어도 일부를 교체하는 것을 포함하는 것을 특징으로 하는 방법.
  33. 제 20 항 또는 제 21 항에 있어서, 상기 캐시 지시문의 수정은 상기 콘텐츠 아이템을 전달하는 메시지의 헤더에 "no-store" 또는 "no-cache" 캐시 지시문을 추가하는 것을 포함하는 것을 특징으로 하는 방법.
  34. 제 20 항 또는 제 21 항에 있어서, 상기 캐시 지시문의 수정은 상기 사용자 디바이스의 상기 캐시 메모리 내에 프리페치된 콘텐츠 아이템을 캐싱하기 전에 수행되는 것을 특징으로 하는 방법.
  35. 제 20 항 또는 제 21 항에 있어서, 상기 캐시 지시문의 수정은 프리페치된 콘텐츠 아이템이 상기 사용자 디바이스의 상기 캐시 메모리에 상주하는 동안 수행되는 것을 특징으로 하는 방법.
  36. 제 20 항 또는 제 21 항에 있어서, 상기 캐시 지시문의 수정은 상기 사용자 애플리케이션에 제공하기 위해 상기 사용자 디바이스의 상기 캐시 메모리로부터 프리페치된 콘텐츠 아이템을 검색한 후 수행되는 것을 특징으로 하는 방법.
KR1020197009139A 2016-10-26 2017-10-19 헤더 수정을 사용한 프리페치 캐시 관리 KR20190073358A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662412864P 2016-10-26 2016-10-26
US62/412,864 2016-10-26
US201762567267P 2017-10-03 2017-10-03
US62/567,267 2017-10-03
PCT/IB2017/056492 WO2018078492A1 (en) 2016-10-26 2017-10-19 Prefetch cache management using header modification

Publications (1)

Publication Number Publication Date
KR20190073358A true KR20190073358A (ko) 2019-06-26

Family

ID=62024445

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197009139A KR20190073358A (ko) 2016-10-26 2017-10-19 헤더 수정을 사용한 프리페치 캐시 관리

Country Status (5)

Country Link
US (1) US20190312949A1 (ko)
JP (1) JP2019537085A (ko)
KR (1) KR20190073358A (ko)
CN (1) CN109716315A (ko)
WO (1) WO2018078492A1 (ko)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060069746A1 (en) * 2004-09-08 2006-03-30 Davis Franklin A System and method for smart persistent cache
US8370424B2 (en) * 2007-06-22 2013-02-05 Aol Inc. Systems and methods for caching and serving dynamic content
US8533437B2 (en) * 2009-06-01 2013-09-10 Via Technologies, Inc. Guaranteed prefetch instruction
US8205035B2 (en) * 2009-06-22 2012-06-19 Citrix Systems, Inc. Systems and methods for integration between application firewall and caching
US8595471B2 (en) * 2010-01-22 2013-11-26 Via Technologies, Inc. Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register
US9330196B2 (en) * 2010-11-01 2016-05-03 Seven Networks, Llc Wireless traffic management system cache optimization using http headers
US8595320B2 (en) * 2010-11-22 2013-11-26 International Business Machines Corporation If-none-match for aggregated page distribution
US9055124B1 (en) * 2012-06-19 2015-06-09 Amazon Technologies, Inc. Enhanced caching of network content
US9055118B2 (en) * 2012-07-13 2015-06-09 International Business Machines Corporation Edge caching using HTTP headers
US20140344325A1 (en) * 2013-05-15 2014-11-20 Sap Ag Asynchronous content updates in the background for improved application performance
EP3186935A1 (en) * 2014-08-28 2017-07-05 Interdigital Patent Holdings, Inc. Method and apparatus for capture caching

Also Published As

Publication number Publication date
JP2019537085A (ja) 2019-12-19
WO2018078492A1 (en) 2018-05-03
CN109716315A (zh) 2019-05-03
US20190312949A1 (en) 2019-10-10

Similar Documents

Publication Publication Date Title
CN106796547B (zh) 用于代理缓存智能对象淘汰的方法和***
EP2503473B1 (en) Pre-caching web content for a mobile device
US20180255156A1 (en) Optimization of resource polling intervals to satisfy mobile device requests
US8812651B1 (en) Systems and methods for client cache awareness
US10261938B1 (en) Content preloading using predictive models
GB2500327B (en) Optimization of resource polling intervals to satisfy mobile device requests
US10938935B1 (en) Reduction in redirect navigation latency via speculative preconnection
US20140019577A1 (en) Intelligent edge caching
US20160063577A1 (en) Handling of real-time advertisement with content prefetching
KR102292471B1 (ko) 다이내믹 캐시 할당 및 네트워크 관리
KR102151457B1 (ko) 통신 시스템에서 페이지 로딩 시간 단축 방법 및 장치
US20100088369A1 (en) Accumulator for prefetch abort
WO2017025052A1 (zh) 资源缓存方法及装置
US20160029402A1 (en) Optimization of resource polling intervals to satisfy mobile device requests
US20170111465A1 (en) Freshness-aware presentation of content in communication terminals
US20160212069A1 (en) Cooperative management of client device cache memory in an http session
US10706119B1 (en) Content prefetching to user devices based on rendering characteristics
KR20190073358A (ko) 헤더 수정을 사용한 프리페치 캐시 관리
EP3855707B1 (en) Systems, methods, and storage media for managing traffic on a digital content delivery network
CN113010816A (zh) 网页缓存更新方法、装置、电子设备及存储介质
CN114466032B (zh) 一种cdn***合并回源方法、装置及存储介质
CN112491936B (zh) 多接入边缘计算方法、设备和***
WO2019180516A1 (en) Delivery of location-dependent content in user devices
KR100943996B1 (ko) 웹 브라우저와 웹 서버의 통신 속도 가속 방법 및 그러한 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능 기록 매체
WO2018234949A1 (en) PRE-EXTRACTION OF CONTENT IN PRESENCE OF A / B TEST