KR102128996B1 - 컨텐츠 아이템들 프리페치용 시스템들 및 방법들 - Google Patents

컨텐츠 아이템들 프리페치용 시스템들 및 방법들 Download PDF

Info

Publication number
KR102128996B1
KR102128996B1 KR1020187025143A KR20187025143A KR102128996B1 KR 102128996 B1 KR102128996 B1 KR 102128996B1 KR 1020187025143 A KR1020187025143 A KR 1020187025143A KR 20187025143 A KR20187025143 A KR 20187025143A KR 102128996 B1 KR102128996 B1 KR 102128996B1
Authority
KR
South Korea
Prior art keywords
content
content item
request
application
computing device
Prior art date
Application number
KR1020187025143A
Other languages
English (en)
Other versions
KR20180107213A (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 KR20180107213A publication Critical patent/KR20180107213A/ko
Application granted granted Critical
Publication of KR102128996B1 publication Critical patent/KR102128996B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

컴퓨팅 디바이스들에서 실행되는 애플리케이션들에 의한 디스플레이를 위해 컨텐츠 아이템을 프리페치하는 시스템들 및 방법들이 제공된다. 방법은 애플리케이션의 환경 내에 디스플레이를 위해 컨텐츠에 대한 제1 요청을 전송하는 단계, 컨텐츠에 대한 상기 제1 요청은 디스플레이를 위한 제1 컨텐츠 아이템을 결정하는데 사용될 제1 파라미터를 포함하고; 연관된 메모리 엘리먼트에 상기 제1 파라미터를 저장하는 단계; 컨텐츠에 대한 상기 제1 요청의 상기 검색된 제1 파라미터를 포함하는 컨텐츠에 대한 후속 요청을 전송하는 단계; 컨텐츠에 대한 상기 후속 요청에 응답하여 후속 컨텐츠 아이템을 수신하는 단계; 상기 애플리케이션에 특정적인 로컬 캐시 구조에 상기 후속 컨텐츠 아이템을 저장하는 단계; 컨텐츠에 대한 제2 요청을 전송하는 단계; 상기 제2 요청에 응답하여, 상기 로컬 캐시 구조로부터 상기 후속 컨텐츠 아이템을 검색하는 단계; 및 상기 제2 요청에 응답하여, 상기 컴퓨팅 디바이스 상의 상기 애플리케이션의 상기 환경 내에 상기 후속 컨텐츠 아이템을 디스플레이하는 단계를 포함할 수 있다.

Description

컨텐츠 아이템들 프리페치용 시스템들 및 방법들
본원은 2016년 12월 13일자로 출원된 "컨텐츠 아이템들 프리페치용 시스템들 및 방법들"이라는 제목의 P.C.T. 출원 번호 PCT/US2016/066415의 우선권을 주장하고 그 이익을 향유하며, 전체가 본 명세서에 참조로 포함된다.
인터넷과 같은 컴퓨터 네트워크 환경에서 제3 자 컨텐츠 제공자들은 최종 사용자 컴퓨팅 디바이스들에 디스플레이하기 위한 제3 자 컨텐츠 아이템들을 제공한다. 이 제3 자 컨텐츠 아이템들은 웹 페이지 또는 각 배포자와 연관된 애플리케이션에 디스플레이될 수 있다. 이 제3 자 컨텐츠 아이템들은 컨텐츠 아이템을 제공한 제3 자 컨텐츠 제공자를 식별하는 컨텐츠를 포함할 수 있다.
적어도 하나의 양태는 컨텐츠 아이템들을 예를 들어, 동적으로 로딩된 컨텐츠 아이템들을 프리페치(prefetch)하기 위한 방법에 관한 것이며, 클라이언트 컴퓨팅 디바이스들 상에 실행되는 애플리케이션들에 의한 디스플레이를 위해, 상기 방법은 이상의 데이터 프로세서들을 포함하는 컴퓨팅 디바이스 상에서 실행되는 애플리케이션에 의해, 서버로, 상기 애플리케이션의 환경 내에 디스플레이를 위한 컨텐츠에 대한 제1 요청을 전송하는 단계를 포함하며, 컨텐츠에 대한 상기 제1 요청은 디스플레이를 위한 제1 컨텐츠 아이템을 결정하는데 사용될 제1 파라미터를 포함한다. 상기 방법은 상기 컴퓨팅 디바이스에 의해, 연관된 메모리 엘리먼트(element)에 상기 제1 파라미터를 저장하는 단계를 더 포함할 수 있다. 상기 방법은 상기 컴퓨팅 디바이스에 의해, 상기 제1 컨텐츠 아이템을 수신하는 단계를 더 포함할 수 있다. 상기 방법은 상기 컴퓨팅 디바이스에 의해, 상기 컴퓨팅 디바이스 상에서 실행되는 상기 애플리케이션의 상기 환경 내의 예를 들어, 제1 컨텐츠 슬롯에 상기 제1 컨텐츠 아이템을 디스플레이하는 단계를 더 포함할 수 있다. 상기 방법은 상기 컴퓨팅 디바이스에 의해, 상기 제1 컨텐츠 아이템을 디스플레이함에 응답하여, 상기 메모리 엘리먼트로부터 상기 컨텐츠에 대한 상기 제1 요청의 상기 제1 파라미터를 검색하는 단계를 더 포함할 수 있다. 상기 방법은 상기 컴퓨팅 디바이스에 의해 서버로, 컨텐츠에 대한 상기 제1 요청의 상기 검색된 제1 파라미터를 포함하는 컨텐츠에 대한 후속(follow on) 요청을 전송하는 단계를 더 포함할 수 있다. 상기 방법은 상기 컴퓨팅 디바이스에 의해, 컨텐츠에 대한 상기 후속 요청에 응답하여 후속 컨텐츠 아이템을 수신하는 단계를 더 포함할 수 있다. 상기 방법은 상기 컴퓨팅 디바이스에 의해, 상기 애플리케이션에 특정적인 로컬 캐시 구조에 상기 후속 컨텐츠 아이템을 저장하는 단계를 더 포함할 수 있다. 상기 방법은 상기 컴퓨팅 디바이스에 의해, 상기 애플리케이션의 상기 환경 내에 디스플레이를 위한 컨텐츠에 대한 제2 요청을 전송하는 단계를 더 포함할 수 있다. 상기 방법은 상기 컴퓨팅 디바이스에 의해, 상기 제2 요청에 응답하여, 상기 로컬 캐시 구조로부터 상기 후속 컨텐츠 아이템을 검색하는 단계를 더 포함할 수 있다. 상기 방법은 상기 컴퓨팅 디바이스에 의해, 상기 제2 요청에 응답하여, 상기 컴퓨팅 디바이스 상의 상기 애플리케이션의 상기 환경 내의 예를 들어, 제2 컨텐츠 슬롯에 상기 후속 컨텐츠 아이템을 디스플레이하는 단계를 더 포함할 수 있다. 일부 구현예들에서, 상기 제1 파라미터는 상기 컴퓨팅 디바이스의 위치 또는 상기 컴퓨팅 디바이스에 의해 사용되는 네트워크 연결 유형 중 적어도 하나의 표시를 포함한다.
일부 구현예들에서, 컨텐츠에 대한 상기 후속 요청은 상기 컴퓨팅 디바이스 상의 상기 제1 컨텐츠 아이템의 디스플레이를 끝냄(ending)에 응답하여 전송된다. 일부 구현예들에서, 상기 제1 컨텐츠 아이템은 삭제 상기 컴퓨팅 디바이스 상의 상기 제1 컨텐츠 아이템의 디스플레이가 끝냄에 응답하여 삭제된다. 일부 구현예들에서, 상기 후속 컨텐츠 아이템은 만료 시간이 할당되고, 상기 후속 컨텐츠 아이템은 상기 로컬 캐시 구조로부터 검색되며 상기 후속 컨텐츠 아이템이 만료되지 않았던 경우에만 디스플레이된다. 일부 구현예들에서 상기 만료 시간은 사용자에 의해 구성 가능하다. 일부 구현예들에서, 상기 제1 컨텐츠 아이템은 상기 후속 컨텐츠 아이템과 상이하다.
일부 구현예들에서, 상기 방법은 상기 컴퓨팅 디바이스에 의해 상기 서버로, 상기 애플리케이션이 개시(launch)될 때 초기 컨텐츠 아이템에 대한 초기 요청을 전송하는 단계를 더 포함하고, 상기 초기 컨텐츠 아이템에 대한 상기 초기 요청은 상기 초기 컨텐츠 아이템을 결정하기 위해 상기 서버에 의해 사용될 초기 파라미터를 포함한다. 상기 방법은 상기 컴퓨팅 디바이스에 의해 상기 서버로부터, 상기 초기 컨텐츠 아이템을 수신하는 단계를 더 포함할 수 있다. 상기 방법은 상기 컴퓨팅 디바이스에 의해, 상기 초기 컨텐츠 아이템을 상기 로컬 캐시 구조에 저장하는 단계를 더 포함할 수 있다. 상기 방법은 상기 컴퓨팅 디바이스에 의해, 상기 애플리케이션이 개시된 후 컨텐츠를 디스플레이하라는 초기 요청에 응답하여, 상기 로컬 캐시 구조로부터 상기 초기 컨텐츠 아이템을 검색하는 단계를 더 포함할 수 있다. 상기 방법은 상기 컴퓨팅 디바이스에 의해, 상기 컴퓨팅 디바이스 상의 상기 애플리케이션 환경 내에 상기 초기 컨텐츠 아이템을 디스플레이하는 단계를 더 포함할 수 있다.
일부 구현예들에서, 상기 로컬 캐시 구조는 상기 애플리케이션이 종료될 때 유지된다. 일부 구현예들에서, 상기 로컬 캐시 구조는 상기 애플리케이션에 의해 상기 서버에 전송된 컨텐츠 아이템들에 대한 요청들에 포함된 파라미터들에 따라 분류된 복수의 캐시들을 포함하고, 상기 후속 컨텐츠 아이템은 컨텐츠에 대한 상기 후속 요청에 포함된 상기 제1 파라미터에 따라 분류된 상기 복수의 캐시들 중 하나에 저장된다. 일부 구현예들에서, 상기 로컬 캐시 구조는 하나의 로컬 캐시만 포함한다.
일부 구현예들에서, 상기 로컬 캐시 구조는 상기 컴퓨팅 디바이스 상에 영구적으로 저장되어, 상기 로컬 캐시 구조에 저장된 컨텐츠 아이템들은 상기 애플리케이션 재개시 이후 상기 애플리케이션에 사용 가능하다. 일부 구현예들에서, 상기 애플리케이션은 디스플레이 페이지 상에 복수의 컨텐츠 아이템들의 디스플레이를 지원하도록 구성되고, 각 컨텐츠 아이템은 컨텐츠 아이템 슬롯을 통해 디스플레이되며 그리고 각 컨텐츠 아이템 슬롯은 별도의 로컬 캐시 구조가 할당된다.
적어도 하나의 양태는 컨텐츠 아이템들을 예를 들어, 동적으로 로딩된 컨텐츠 아이템들을 프리페치하기 위한 시스템에 관한 것이다. 상기 시스템은 프로세서 및 프로세서에 결합된 메모리를 포함할 수 있다. 상기 메모리는 컴퓨터로 실행 가능한 명령어들을 저장하며, 상기 명령어들은 상기 프로세서에의해 실행시 상기 프로세서로 하여금 애플리케이션의 환경 내에 디스플레이를 위한 컨텐츠에 대한 제1 요청을 전송하게 하며, 컨텐츠에 대한 상기 제1 요청은 디스플레이를 위한 제1 컨텐츠 아이템을 결정하는데 사용될 제1 파라미터를 포함한다. 상기 컴퓨터로 실행 가능한 명령어들은 상기 포르세서에 의해 실행시 상기 프로세서로 하여금 연관된 메모리 엘리먼트에 상기 제1 파라미터를 더 저장하게 할 수 있다. 상기 컴퓨터로 실행 가능한 명령어들은 상기 포르세서에 의해 실행시 상기 프로세서로 하여금 상기 제1 컨텐츠 아이템을 더 수신하게 할 수 있다. 상기 컴퓨터로 실행 가능한 명령어들은 상기 포르세서에 의해 실행시 상기 프로세서로 하여금 상기 컴퓨팅 디바이스 상에서 실행되는 상기 애플리케이션의 상기 환경 내의 예를 들어, 제1 컨텐츠 슬롯에 상기 제1 컨텐츠 아이템을 더 디스플레이하게 할 수 있다. 상기 컴퓨터로 실행 가능한 명령어들은 상기 포르세서에 의해 실행시 상기 프로세서로 하여금 상기 제1 컨텐츠 아이템을 디스플레이함에 응답하여, 상기 메모리 엘리먼트로부터 상기 컨텐츠에 대한 상기 제1 요청의 상기 제1 파라미터를 더 검색하게 할 수 있다. 상기 컴퓨터로 실행 가능한 명령어들은 상기 포르세서에 의해 실행시 상기 프로세서로 하여금 컨텐츠에 대한 상기 제1 요청의 상기 검색된 제1 파라미터를 포함하는 컨텐츠에 대한 후속 요청을 더 전송하게 할 수 있다. 상기 컴퓨터로 실행 가능한 명령어들은 상기 포르세서에 의해 실행시 상기 프로세서로 하여금 컨텐츠에 대한 상기 후속 요청에 응답하여 후속 컨텐츠 아이템을 더 수신하게 할 수 있다. 상기 컴퓨터로 실행 가능한 명령어들은 상기 포르세서에 의해 실행시 상기 프로세서로 하여금 상기 애플리케이션에 특정적인 로컬 캐시 구조에 상기 후속 컨텐츠 아이템을 더 저장하게 할 수 있다. 상기 컴퓨터로 실행 가능한 명령어들은 상기 포르세서에 의해 실행시 상기 프로세서로 하여금 상기 애플리케이션의 상기 환경 내에 디스플레이를 위한 컨텐츠에 대한 제2 요청을 더 전송하게 할 수 있다. 상기 컴퓨터로 실행 가능한 명령어들은 상기 포르세서에 의해 실행시 상기 프로세서로 하여금 상기 제2 요청에 응답하여, 상기 로컬 캐시 구조로부터 상기 후속 컨텐츠 아이템을 더 검색하게 할 수 있다. 상기 컴퓨터로 실행 가능한 명령어들은 상기 포르세서에 의해 실행시 상기 프로세서로 하여금 상기 제2 요청에 응답하여, 상기 컴퓨팅 디바이스 상의 상기 애플리케이션의 상기 환경 내의 예를 들어, 제2 컨텐츠 슬롯에 상기 후속 컨텐츠 아이템을 더 디스플레이하게 할 수 있다.
이들 및 다른 양태들 및 구현예들이 아래에서 상세히 논의된다. 전술한 정보 및 다음의 상세한 설명은 다양한 양태들 및 구현예들의 예증적인 실시예들을 포함하고 청구된 양태들 및 구현예들의 본질(nature) 및 특성을 이해하기 위한 개요 또는 프레임워크를 제공한다. 도면들은 다양한 양태들 및 구현예들의 예증 및 추가 이해를 제공하며, 본 명세서에 통합되어 본 명세서의 일부를 구성한다. 양태들 및 구현예들이 결합될 수 있고 일 양태의 컨텍스트에 설명된 구성들 또는 구현예들은 다른 양태들의 컨텍스트에서 구현될 수 있음을 이해할 것이다.
첨부 도면은 일정한 비율로 그려지도록 의도되지 않았다. 다양한 도면들에서 동일한 참조 번호들 및 명칭들은 동일한 엘리먼트들을 나타낸다. 명확성을 위해 모든 컴포넌트가 모든 도면에 라벨링(label)되지 않는다. 도면들에서:
도 1은 일부 실시예들에 따라 디스플레이를 위한 컨텐츠 아이템들을 프리페치하기 위한 환경의 예시를 도시한 블록도이다.
도 2는 일부 실시예들에 따라 디스플레이를 위한 컨텐츠 아이템들을 프리페치하기 위한 예시를 도시한 블록도이다.
도 3은 일부 실시예들에 따라 클라이언트 디바이스에서 정보 리소스에 디스플레이하기 위한 컨텐츠 아이템들을 프리페치하는 프로세스를 도시한 순서도이다.
도 4는 일부 실시예들에 따라 디스플레이하기 위한 컨텐츠 아이템들을 프리페치하는 방법을 도시한 흐름도이다.
도 5는 본 명세서에 설명되고 도시된 시스템들 및 방법들의 엘리먼트들을 구현하기 위해 이용(employ)될 수 있는 컴퓨터 시스템에 대한 일반적인 아키텍처의 예시를 도시한 블록도이다.
컴퓨터 디바이스들 상에서 실행되는 애플리케이션들에 의해 디스플레이 하기 위한 컨텐츠 아이템을 프리페치하기 위한 방법들, 장치들 및 시스템들의 실시예들과 관련된 다양한 개념들의 보다 상세한 설명들이 아래에 있다. 기술된 개념들이 임의의 특정한 구현 방식에 제한되지 않기 때문에, 위에서 소개되고 아래에서 보다 상세하게 논의되는 다양한 개념들은 다양한 방식들 중 임의의 방식으로 구현될 수 있다.
본원은 컴퓨팅 디바이스에서 실행되는 애플리케이션의 디스플레이 페이지 내에서 동적으로 로딩된 컨텐츠 아이템들의 낮은 대기(latency) 디스플레이를 위한 기법들에 관한 것이다. 특히, 본원은 애플리케이션으로 하여금 이전 컨텐츠 슬롯의 요청 파라미터들을 사용하여 컨텐츠 슬롯에 대한 컨텐츠를 프리페치하게 하고, 프리페치된 컨텐츠를 애플리케이션의 로컬 캐시에 저장하며, 컨텐츠 슬롯에 컨텐츠를 삽입하라는 표시에 응답하여 로컬 캐시로부터 프리페치된 컨텐츠를 검색함으로써 컴퓨팅 디바이스 상에서 실행되는 애플리케이션의 컨텐츠 슬롯에서 디스플레이하기 위한 컨텐츠 아이템들을 프리페치하는 기술에 관한 것이다. 일부 구현예들에서, 컨텐츠 슬롯들은 컴퓨터 실행 가능 코드들을 포함한다.
휴대용 컴퓨팅 디바이스들에서 실행되는 모바일 애플리케이션들 내에서, 이미지들, 비디오들 또는 다른 디스플레이 가능한 컨텐츠와 같은, 동적으로 로딩된 컨텐츠 아이템들은 전형적으로 디스플레이 페이지 내에 내장되어 애플리케이션의 디스플레이 페이지 상의 다른 컨텐츠 아이템들과 매치하는 일정 룩 앤드 필(look and feel)을 달성한다 (예를 들어, 애플리케이션의 대화형(interactive) 사용자 인터페이스 부분과 함께, 뉴스 피드에 보이는 네이티브 컨텐츠 아이템들 등). 다른 예시들에서, 사용자가 애플리케이션을 사용하는 동안 동적으로 로딩되는 컨텐츠 아이템들이 논리 휴식(logical breaks)시에 삽입될 수 있고, 전체 화면을 인계(take over)하거나 애플리케이션의 일반 사용자 인터페이스를 오버레이할 수 있다. 이러한 경우들에서, 컨텐츠 아이템들이 가능한 한 대기 없이 렌더링되는 것이 중요하다. 예를 들어, 사용자가 컨텐츠 아이템이 아직 로딩되지 않았던 피드의 다른 부분으로 이동하는 경우 사용자 경험에서 임의의 악영향을 피하기 위해 컨텐츠 아이템들이 가능한 빨리 렌더링되어야 한다. 공백 화면 부분이 잠시 보여질 때 망가진 사용자 경험이 발생할 수 있는 오버레이된 또는 삽입 컨텐츠 아이템들에 대해서 동일하게 적용된다. (예를 들어, 모바일 저전력 디바이스들에 대한) 느리고 높은 대기 데이터 연결들로 인해, 모바일 통신 디바이스들 상에 동적으로 로딩된 데이터 아이템들의 신속한 렌더링을 어렵게 하는 기법적 제약들이 존재한다.
따라서, 본 개시의 기법적인 문제점은 모바일 컴퓨팅 디바이스들 상에서 실행되는 애플리케이션들 내에 동적으로 로딩된 컨텐츠 아이템들의 디스플레이의 지연 또는 대기를 감소시키는 기법을 제공하는 것이다.
본 개시는, 제1 컨텐츠 아이템 재생을 마친 후에 또는 제1 컨텐츠 아이템이 렌더링된 후에 제2 컨텐츠 아이템을 요청함으로써 이러한 문제점들을 해결하여, 제2 컨텐츠 아이템이 필요할 때 신속한 검색 및 렌더링을 위해 모바일 디바이스에 국부적으로 캐시될 수 있게 한다. 제2 컨텐츠 아이템을 요청할 때, 제1 컨텐츠 아이템에 대한 요청과 연관된 파라미터들 (예를 들어, 위치, 그 날의 시간, 디바이스가 셀룰러 네트워크를 통해 또는 WiFi를 통해 연결되는지 여부, 이전 컨텐츠 슬롯과 연관된 파라미터들 등)은 제2 컨텐츠 아이템을 요청할 때 반복된다. 애플리케이션이 나중에 (예를 들어, 애플리케이션 내의 컨텐츠 슬롯을 검출함에 응답하여) 컨텐츠 아이템에 대한 필요를 결정할 때, 애플리케이션은 컨텐츠 서버로부터 제2 컨텐츠 아이템을 요청하는 상대적으로 긴 프로세스를 거치는 대신에, 국부적으로 캐시된 제2 컨텐츠 아이템을 검색할 수 있다.
도 1은 컴퓨팅 디바이스 상에서 실행되는 애플리케이션에 의해 디스플레이하기 위한 컨텐츠 아이템들을 프리페치하기 위한 환경의 일 구현예를 도시한 블록도이다. 환경(100)은 적어도 하나의 데이터 프로세싱 시스템(110)을 포함한다. 데이터 프로세싱 시스템(110)은 적어도 하나의 프로세서 (또는 프로세싱 회로) 및 메모리를 포함할 수 있다. 메모리는 프로세서 상에서 실행될 때 프로세서로 하여금 본 명세서에 기술된 하나 이상의 동작들을 수행하게 하는 프로세서로 실행 가능한 명령어들을 저장한다. 프로세서는 마이크로프로세서, 주문형 집적 회로(ASIC), 필드 프로그래밍 가능한 게이트 어레이(FPGA) 등, 또는 이들의 조합을 포함할 수 있다. 메모리는 전자, 광학, 자기 또는 프로세서에 프로그램 명령어들을 제공할 수 있는 임의의 다른 저장 또는 전송 디바이스를 포함할 수 있지만, 이에 제한되는 것은 아니다. 메모리는 플로피 디스크, CD-ROM, DVD, 자기 디스크, 메모리 칩, ASIC, FPGA, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 전자적으로 제거 가능한 ROM(EEPROM), 제거가능 프로그래밍 가능한 ROM(EPROM), 플래시 메모리, 광 매체, 또는 프로세서가 명령어들을 판독할 수 있는 임의의 다른 적절한 메모리를 더 포함할 수 있다. 명령어들은 적절한 컴퓨터 프로그래밍 언어의 코드를 포함할 수 있다. 데이터 프로세싱 시스템(110)은 다양한 기능들을 수행할 수 있는 하나 이상의 컴퓨팅 디바이스들 또는 서버들을 포함할 수 있다. 일부 구현예들에서, 데이터 프로세싱 시스템(110)은 컨텐츠의 선택들을 호스팅하도록 구성된 컨텐츠 선택 시스템을 포함할 수 있다. 일부 구현예들에서, 데이터 프로세싱 시스템(110)은 컨텐츠 선택 시스템을 포함하지 않지만 네트워크(105)를 통해 컨텐츠 선택 시스템과 통신하도록 구성된다.
네트워크(105)는 인터넷, 로컬, 와이드, 메트로 또는 다른 영역 네트워크들과 같은 컴퓨터 네트워크들, 인트라넷들, 위성 네트워크들, 음성 또는 데이터 모바일 폰 통신 네트워크들과 같은 다른 컴퓨터 네트워크들 및 이들의 조합을 포함할 수 있다. 환경(100)의 데이터 프로세싱 시스템(110)은 예를 들어 적어도 하나의 컨텐츠 제공자 컴퓨팅 디바이스(115), 적어도 하나의 컨텐츠 배포자 컴퓨팅 디바이스(120) 또는 적어도 하나의 클라이언트 디바이스(125)와 네트워크(105)를 통해 통신할 수 있다. 네트워크(105)는 클라이언트 디바이스(125), 데이터 프로세싱 시스템(110) 및 하나 이상의 컨텐츠 소스들 예를 들어, 웹 서버들, 광고 서버들 간에 정보를 중계하는 임의의 형태의 컴퓨터 네트워크일 수 있다. 예를 들어, 네트워크(105)는 인터넷 및/또는 근거리 통신망(LAN), 광역 통신망(WAN), 셀룰러 네트워크, 위성 네트워크 또는 다른 유형의 데이터 네트워크들과 같은 다른 유형의 데이터 네트워크들을 포함할 수 있다. 네트워크(105)는 네트워크(105) 내에서 데이터를 수신 및/또는 전송하도록 구성된 임의의 수의 컴퓨팅 디바이스들 (예를 들어, 컴퓨터, 서버들, 라우터들, 네트워크 스위치들 등)을 또한 포함할 수 있다. 네트워크(105)는 임의의 수의 배선 연결들 및/또는 무선 연결들을 더 포함할 수 있다. 예를 들어, 클라이언트 디바이스(125)는 (예를 들어, 광섬유 케이블, CAT5 케이블 등을 통해) 네트워크(105)의 다른 컴퓨팅 디바이스들에 배선된 송수신기와 무선으로 (예를 들어, WiFi, 셀룰러, 라디오 등을 통해) 통신할 수 있다.
컨텐츠 제공자 컴퓨팅 디바이스(115)는 서버들 또는 클라이언트 디바이스(125)에서 정보 리소스들 상에 디스플레이하기 위한 컨텐츠와 같은 컨텐츠 아이템들을 제공하기 위해 컨텐츠 제공자 엔티티에 의해 운영되는 다른 컴퓨팅 디바이스들을 포함할 수 있다. 컨텐츠 제공자 컴퓨팅 디바이스(115)에 의해 제공된 컨텐츠는 주요(primary) 컨텐츠, 예를 들어 컨텐츠 배포자 컴퓨팅 디바이스(120)에 의해 제공된 컨텐츠를 포함하는 웹사이트 또는 웹 페이지와 같은 정보 리소스들 상에 디스플레이하기 위한 제3 자 컨텐츠 아이템들 또는 크리에이티브(creative)들을 포함할 수 있다. 컨텐츠 아이템들은 검색 결과 웹 페이지에 또한 디스플레이될 수 있다. 컨텐츠 제공자 컴퓨팅 디바이스(115)는 회사의 웹 페이지와 같은 컨텐츠 웹 페이지의 컨텐츠 슬롯들에 디스플레이하기 위한 또는 검색 엔진에 의해 또는 정보 피드 내에 제공되는 검색 결과 렌딩 페이지에 디스플레이하기 위한 다른 컨텐츠 아이템들의 소스를 제공하거나 소스일 수 있으며, 웹 페이지의 주요 컨텐츠는 회사에서 제공된다. 컨텐츠 제공자 컴퓨팅 디바이스(115)와 연관된 컨텐츠 아이템들은 (예를 들어, 게임 애플리케이션, GPS 또는 맵 애플리케이션 또는 다른 유형의 애플리케이션들과 같은) 애플리케이션 실행의 일부로써 스마트폰 또는 다른 클라이언트 디바이스(125) 상에 디스플레이된 컨텐츠와 같은 웹 페이지들 이외의 정보 리소스들 상에 디스플레이될 수 있다.
컨텐츠 배포자 컴퓨팅 디바이스(120)는 네트워크(105)를 통해 디스플레이하기 위한 주요 컨텐츠를 제공하기 위해 컨텐츠 배포 엔티티에 의해 운영되는 서버들 또는 다른 컴퓨팅 디바이스들을 포함할 수 있다. 예를 들어, 컨텐츠 배포자 컴퓨팅 디바이스(120)는 웹 페이지 상에 디스플레이하기 위한 주요 컨텐츠를 제공하는 웹 페이지 운영자를 포함할 수 있다. 주요 컨텐츠는 컨텐츠 배포자 컴퓨팅 디바이스(120)에 의해 제공되는 것 이외의 컨텐츠를 포함할 수 있고, 웹 페이지는 컨텐츠 제공자 컴퓨팅 디바이스(115)로부터의 제3 자 컨텐츠 아이템들의 디스플레이를 위해 구성된 컨텐츠 슬롯들을 포함할 수 있다. 예를 들어, 컨텐츠 배포자 컴퓨팅 디바이스(120)는 회사의 웹사이트를 운영할 수 있고, 웹사이트의 웹 페이지들 상에 디스플레이하기 위해 그 회사에 관한 컨텐츠를 제공할 수 있다. 웹 페이지들은 컨텐츠 제공자 컴퓨팅 디바이스(115)의 광고들과 같은 제3 자 컨텐츠 아이템들의 디스플레이를 위해 구성된 컨텐츠 슬롯들을 포함할 수 있다. 일부 구현예들에서, 컨텐츠 배포자 컴퓨팅 디바이스(120)는 검색 엔진 웹사이트를 운영하는 검색 엔진 운영자의 검색 엔진 컴퓨팅 디바이스 (예를 들어, 서버)를 포함한다. 검색 엔진 웹 페이지들 (예를 들어, 결과들 또는 렌딩 웹 페이지)의 주요 컨텐츠는 검색 결과들뿐만 아니라 컨텐츠 제공자 컴퓨팅 디바이스(115)로부터의 컨텐츠 아이템들과 같은 컨텐츠 슬롯들에 디스플레이된 제3 자 컨텐츠 아이템들을 포함한다. 일부 구현예들에서, 컨텐츠 배포자 컴퓨팅 디바이스(120)는 비디오 컨텐츠를 서비스하기 위한 서버를 포함할 수 있다.
클라이언트 디바이스(125)는 컨텐츠 배포자 컴퓨팅 디바이스(120)에 의해 제공된 컨텐츠 (예를 들어, 주요 웹 페이지 컨텐츠 또는 다른 정보 리소스들) 및 컨텐츠 제공자 컴퓨팅 디바이스(115)에 의해 제공된 컨텐츠 (예를 들어, 웹 페이지의 컨텐츠 슬롯에 디스플레이되도록 구성된 제3 자 컨텐츠 아이템들)들과 같은 데이터를 디스플레이하기 위해 네트워크(105)를 통해 통신하도록 구성된 컴퓨팅 디바이스들을 포함할 수 있다. 클라이언트 디바이스(125), 컨텐츠 제공자 컴퓨팅 디바이스(115) 및 컨텐츠 배포자 컴퓨팅 디바이스(120)는 데스크톱 컴퓨터들, 랩톱 컴퓨터들, 태블릿 컴퓨터들, 스마트폰들, 개인 휴대 정보 단말기들, 모바일 디바이스들, 소비자 컴퓨팅 디바이스들, 서버들, 클라이언트들, 디지털 비디오 레코드들, 텔레비전 용 셋톱 박스, 비디오 게임 콘솔, 또는 네트워크(105)를 통해 통신하도록 구성된 임의의 다른 컴퓨팅 디바이스를 포함할 수 있다. 클라이언트 디바이스(125)는 최종 사용자가 컨텐츠를 수신하기 위해 요청들을 제출할 수 있는 통신 디바이스들일 수 있다. 요청들은 검색 엔진에 대한 요청들일 수 있으며 요청들은 검색 쿼리들을 포함할 수 있다. 일부 구현예들에서, 요청들은 웹 페이지에 액세스하는 요청을 포함할 수 있다.
컨텐츠 제공자 컴퓨팅 디바이스(115), 컨텐츠 배포자 컴퓨팅 디바이스(120) 및 클라이언트 디바이스(125)는 프로세서 및 메모리, 즉 프로세싱 회로를 포함할 수 있다. 메모리는 기계 명령어들을 저장하며, 상기 명령어들은 프로세서 상에서 실행시, 프로세서로 하여금 본 명세서에 기술된 하나 이상의 동작들을 수행하게 한다. 프로세서는 마이크로프로세서, 주문형 집적 회로(ASIC), 필드 프로그래밍 가능한 게이트 어레이(FPGA) 등, 또는 이들의 조합을 포함할 수 있다. 메모리는 전자, 광학, 자기 또는 프로세서에 프로그램 명령어들을 제공할 수 있는 임의의 다른 저장 또는 전송 디바이스를 포함할 수 있지만, 이에 제한되는 것은 아니다. 메모리는 플로피 디스크, CD-ROM, DVD, 자기 디스크, 메모리 칩, ASIC, FPGA, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 전자적으로 제거 가능한 ROM(EEPROM), 제거가능 프로그래밍 가능한 ROM(EPROM), 플래시 메모리, 광 매체, 또는 프로세서가 명령어들을 판독할 수 있는 임의의 다른 적절한 메모리를 더 포함할 수 있다. 명령어들은 적절한 컴퓨터 프로그래밍 언어의 코드를 포함할 수 있다.
컨텐츠 제공자 컴퓨팅 디바이스(115), 컨텐츠 배포자 컴퓨팅 디바이스(120) 및 클라이언트 디바이스(125)는 하나 이상의 사용자 인터페이스 디바이스들을 또한 포함할 수 있다. 일반적으로, 사용자 인터페이스 디바이스는 감각 정보 (예를 들어, 디스플레이 상의 시각화, 하나 이상의 사운드들 등)을 생성함으로써 사용자에게 데이터를 전달(convey)하고 및/또는 사용자로부터 수신된 감각 정보를 전자 신호들로 변환하는 임의의 전자 디바이스 (예를 들어, 키보드, 마우스, 포인팅 디바이스, 터치 화면 디스플레이, 마이크로폰 등)을 지칭한다. 하나 이상의 사용자 인터페이스 디바이스들은, 다양한 구현예들에따라, 컨텐츠 제공자 컴퓨팅 디바이스(115), 컨텐츠 배포자 컴퓨팅 디바이스(120) 및 클라이언트 디바이스(125)의 하우징 내부 (예를 들어, 내장 디스플레이, 마이크로폰 등) 또는 컨텐츠 제공자 컴퓨팅 디바이스(115), 컨텐츠 배포자 컴퓨팅 디바이스(120) 및 클라이언트 디바이스(125)의 하우징 외부 (예를 들어, 사용자 컴퓨팅 디바이스(115)에 연결된 모니터, 사용자 컴퓨팅 디바이스(115)에 연결된 스피커 등)에 있을 수 있다. 예를 들어, 컨텐츠 제공자 컴퓨팅 디바이스(115), 컨텐츠 배포자 컴퓨팅 디바이스(120) 및 클라이언트 디바이스(125)는 네트워크(105)를 통해 하나 이상의 컨텐츠 소스들 및/또는 데이터 프로세싱 시스템(110)으로부터 수신된 웹페이지 데이터를 사용하여 웹 페이지를 시각적으로 디스플레이하는 전자 디스플레이를 포함할 수 있다. 일부 구현예들에서, 컨텐츠 배치(placement) 캠페인 관리자 또는 제3 자 컨텐츠 제공자는 컨텐츠 제공자 컴퓨팅 디바이스(115)를 통해 데이터 프로세싱 시스템(110)과 통신할 수 있다. 일부 구현예들에서, 제3 자 컨텐츠 제공자는 컨텐츠 제공자 컴퓨팅 디바이스(115)의 사용자 인터페이스 디바이스들 상에 디스플레이된 사용자 인터페이스를 통해 데이터 프로세싱 시스템(110)과 통신할 수 있다.
데이터 프로세싱 시스템(110)은 적어도 하나의 서버를 포함할 수 있다. 예를 들어, 데이터 프로세싱 시스템(110)은 적어도 하나의 데이터 센터 또는 서버 팜에 위치한 복수의 서버들을 포함할 수 있다. 일부 구현예들에서, 데이터 프로세싱 시스템(110)은 제3 자 컨텐츠 배치 시스템, 예를 들어, 광고 서버 또는 광고 배치 시스템을 포함할 수 있다. 데이터 프로세싱 시스템(110)은 적어도 하나의 컨텐츠 요청 모듈(130), 적어도 하나의 컨텐츠 선택 모듈(135), 적어도 하나의 스크립트 제공자 모듈(140) 및 적어도 하나의 데이터베이스(145)를 포함할 수 있다. 컨텐츠 요청 모듈(130), 컨텐츠 선택 모듈(135) 및 스크립트 제공자 모듈(140)은 각각 적어도 하나의 프로세싱 유닛, 서버, 가상 서버, 회로, 엔진, 에이전트, 기기(appliance) 또는 데이터베이스(145) 및 다른 컴퓨팅 디바이스들 (예를 들어, 컨텐츠 제공자 컴퓨팅 디바이스(115), 컨텐츠 배포자 컴퓨팅 디바이스(120) 또는 클라이언트 디바이스(125))와 네트워크 (105)를 통해 통신하도록 구성된 프로그래밍 가능한 논리 어레이들과 같은 다른 논리 디바이스를 포함할 수 있다.
컨텐츠 요청 모듈(130), 컨텐츠 선택 모듈(135) 및 스크립트 제공자 모듈(140)은 적어도 하나의 컴퓨터 프로그램 또는 적어도 하나의 스크립트를 포함하거나 실행할 수 있다. 컨텐츠 요청 모듈(130), 컨텐츠 선택 모듈(135) 및 스크립트 제공자 모듈(140)은 별도의 컴포넌트들, 단일 컴포넌트 또는 데이터 프로세싱 시스템(110)의 일부일 수 있다. 컨텐츠 요청 모듈(130), 컨텐츠 선택 모듈(135) 및 스크립트 제공자 모듈(140)은 하나 이상의 스크립트들을 실행하도록 구성된 하나 이상의 프로세서들과 같은, 소프트웨어 및 하드웨어의 조합들을 포함할 수 있다.
데이터 프로세싱 시스템(110)은 하나 이상의 컨텐츠 저장소(repository)들 또는 데이터베이스들(145)을 포함할 수 있다. 데이터베이스들(145)은 데이터 프로세싱 시스템(110)에 국부적일 수 있다. 일부 구현예들에서, 데이터베이스들(145)은 데이터 프로세싱 시스템(110)과 멀어질 수 있지만 네트워크(105)를 통해 데이터 프로세싱 시스템(110)과 통신할 수 있다. 데이터베이스들(145)은 클라이언트 디바이스(125)에 서비스하기 위해, 다른 것들 중에서도 웹페이지들, 웹 페이지들의 일부, 제3 자 컨텐츠 아이템들 및 프리페치 스크립트를 포함할 수 있다.
프리페치 스크립트는 컴퓨터로 실행 가능한 명령어들을 포함할 수 있다. 컴퓨터로 실행 가능한 명령어들은 HTML(HyperText Markup Language), XHTML(Extensible HyperText Markup Language), XML(Extensible Markup Language), CSS(Cascading Style Sheets) 및 JavaScript와 같은 스크립트를 포함할 수 있다. 컴퓨터로 실행 가능한 명령어들은 클라이언트 디바이스(125)로 하여금 컨텐츠 요청 모듈(130)에 의해 수신된 컨텐츠에 대한 요청을 전송하게 하는 애플리케이션과 같은, 클라이언트 디바이스(125)의 애플리케이션 내에서 실행될 수 있다. 애플리케이션은 예를 들어, 인터넷 브라우저, 모바일 애플리케이션, 게임 애플리케이션, GPS 애플리케이션, 또는 컴퓨터로 실행 가능한 명령어들을 판독하고 실행할 수 있는 임의의 다른 컴퓨터 프로그램을 포함할 수 있다.
일부 구현예들에서, 프리페치 스크립트는 클라이언트 디바이스(125)로 하여금 후속 사용을 위해 클라이언트 디바이스(125)에서 로컬 저장을 위해 데이터 프로세싱 시스템(110)으로부터 컨텐츠 아이템들을 프리페치하도록 구성된다. 예를 들어, 프리페치 스크립트는 클라이언트 디바이스(125)로 하여금 클라이언트 디바이스 상에 하나 이상의 로컬 캐시들을 제작하게 할 수 있다. 프리페치 스크립트는 클라이언트 디바이스(125)로 하여금 컨텐츠에 대한 하나 이상의 요청들을 생성하게 할 수 있다. 프리페치 스크립트는 클라이언트 디바이스(125)로 하여금 컨텐츠에 대한 요청들에 응답하여 컨텐츠를 수신하고 수신된 컨텐츠를 생성된 로컬 캐시에 저장하게 할 수 있다. 프리페치 스크립트는 클라이언트 디바이스(125)로 하여금, 애플리케이션의 컨텐츠 슬롯을 식별함에 응답하여, 컨텐츠에 대한 후속 요청을 생성하고 컨텐츠 슬롯에 삽입하기 위한 컨텐츠 아이템을 로컬 캐시로부터 검색하게 할 수 있다. 일부 구현예들에서, 로컬 캐시에 저장된 컨텐츠 아이템들은 후속 컨텐츠 슬롯들에서 서비스되도록 저장된다.
일부 구현예들에서, 프리페치 스크립트는 컴퓨터로 실행 가능한 명령어들을 포함하며, 상기 명령어들은 클라이언트 디바이스(125)의 프로세서에 의해 실행시, 클라이언트 디바이스의 애플리케이션으로 하여금: (a) 애플리케이션의 환경 내에 디스플레이를 위한 컨텐츠에 대한 제1 요청을 전송하고, 컨텐츠에 대한 상기 제1 요청은 디스플레이를 위한 제1 컨텐츠 아이템을 결정하는데 사용될 제1 파라미터를 포함하고, (b) 연관된 메모리 엘리먼트에 상기 제1 파라미터를 저장하고, (c) 상기 제1 컨텐츠 아이템을 수신하고, (d) 상기 컴퓨팅 디바이스 상에서 실행되는 상기 애플리케이션의 상기 환경 내의 제1 컨텐츠 슬롯에 상기 제1 컨텐츠 아이템을 디스플레이하며, (e) 상기 제1 컨텐츠 아이템을 디스플레이함에 응답하여, 상기 메모리 엘리먼트로부터 상기 컨텐츠에 대한 상기 제1 요청의 상기 제1 파라미터를 검색하고, (f) 컨텐츠에 대한 상기 제1 요청의 상기 검색된 제1 파라미터를 포함하는 컨텐츠에 대한 후속 요청을 전송하고, (g) 컨텐츠에 대한 상기 후속 요청에 응답하여 후속 컨텐츠 아이템을 수신하고, (h) 상기 애플리케이션에 특정적인 로컬 캐시 구조에 상기 후속 컨텐츠 아이템을 저장하며, (i) 상기 애플리케이션의 상기 환경 내에 디스플레이를 위한 컨텐츠에 대한 제2 요청을 전송하고, (j) 상기 제2 요청에 응답하여, 상기 로컬 캐시 구조로부터 상기 후속 컨텐츠 아이템을 검색하며 그리고 (k) 상기 제2 요청에 응답하여, 상기 컴퓨팅 디바이스 상의 상기 애플리케이션의 상기 환경 내의 제2 컨텐츠 슬롯에 상기 후속 컨텐츠 아이템을 디스플레이하게 할 수 있다. 프리페치 스크립트에 관련된 추가 세부 사항들은 도 2, 3 및 4와 관련하여 본 명세서에 더 제공된다. 프리페치 스크립트와 관련한 시스템의 일례가 도 2에 도시되어있다.
컨텐츠 요청 모듈(130)은 클라이언트 디바이스(125)로부터 컨텐츠 요청을 수신할 수 있다.  컨텐츠에 대한 요청은 정보 리소스에 대한 요청, 하나 이상의 제3 자 컨텐츠 아이템들에 대한 요청, 스크립트 (예를 들어, 프리페치 스크립트)에 대한 요청 또는 이들의 조합을 포함할 수 있다. 일부 구현예들에서, 컨텐츠에 대한 요청은 제3 자 컨텐츠에 대한 요청을 포함할 수 있다. 일부 구현예들에서, 제3 자 컨텐츠에 대한 요청은 제3 자 컨텐츠가 디스플레이될 정보 리소스의 주소 또는 식별자를 포함할 수 있다. 제3 자 컨텐츠에 대한 요청은 하나 이상의 파라미터들을 또한 포함하거나 식별할 수 있으며, 상기 파라미터들은 컨텐츠 요청에 응답하여 제공할 컨텐츠를 결정하기 위해 데이터 프로세싱 시스템(110)에 의해 사용될 수 있다. 예를 들어, 파라미터들은 요청된 컨텐츠를 삽입할 컨텐츠 슬롯의 크기를 식별할 수 있다. 파라미터들은 정보 리소스와 연관된 컨텐츠 유형, 요청된 제3 자 컨텐츠 유형 (예를 들어, 텍스트, 이미지, 비디오 등), 클라이언트 디바이스 정보, 요청된 제3 자 컨텐츠 아이템의 크기 정보, 클라이언트 디바이스(125)와 연관된 네트워크 유형 (예를 들어, 셀룰러 네트워크, WiFi 등), 클라이언트 디바이스(125)에서 애플리케이션과 연관된 애플리케이션 ID, 애플리케이션 ID와 연관된 속성들 (예를 들어, 디바이스 설정들, 클라이언트 디바이스의 유형 등), 클라이언트 디바이스(125)의 현재 또는 과거 위치, 또는 이들의 조합을 식별할 수 있다. 일부 구현예들에서, 요청은 프리페치 스크립트와 같은 스크립트를 식별할 수 있다.
일부 구현예들에서, 컨텐츠에 대한 요청은 정보 리소스에 대한 요청을 포함할 수 있다. 정보 리소스에 대한 요청은 정보 리소스의 주소 또는 식별자를 포함할 수 있다. 예를 들어, 정보 리소스에 대한 요청은 웹페이지 (예를 들어, "http://www.example.com")와 같은 특정 리소스의 URL을 포함할 수 있다. 정보 리소스에 대한 요청은 (디바이스 유형, 디바이스 식별자 또는 이들의 조합과 같은) 클라이언트 디바이스 정보를 또한 포함할 수 있다.
컨텐츠 선택 모듈(135)은 수신된 컨텐츠 요청에 응답하여 클라이언트 디바이스(125)에 전송될 컨텐츠를 결정하도록 구성될 수 있다. 컨텐츠 선택 모듈(135)은 컨텐츠 요청에 포함된 정보 또는 파라미터들에 기초하여 클라이언트 디바이스(125)에 전송될 컨텐츠를 결정할 수 있다. 예를 들어, 정보 리소스에 대한 요청을 수신하면, 컨텐츠 선택 모듈(135)은 컨텐츠에 대한 요청에서 정보 리소스의 주소 또는 식별자를 사용하여 클라이언트 디바이스에 전송할 컨텐츠를 결정할 수 있다. 하나 이상의 제3 자 컨텐츠 아이템들에 대한 요청을 수신하는 경우, 컨텐츠 선택 모듈(135)은 제3 자 컨텐츠 아이템이 제시될 정보 리소스, 정보 리소스에 대한 컨텐츠 유형 정보 (예를 들어, 스포츠, 뉴스, 음악, 영화, 여행 등), 제3 자 컨텐츠 아이템(들)이 디스플레이될 슬롯(들)의 크기 정보, 클라이언트 디바이스 정보 (예를 들어, 디바이스 유형, 디바이스 식별자, 디바이스 위치 등), 정보 리소스와 연관된 컨텐츠 유형, 요청된 제3 자 컨텐츠의 유형 (예를 들어, 텍스트, 이미지, 비디오 등), 클라이언트 디바이스(125)와 연관된 네트워크 유형 (예를 들어, 셀룰러 네트워크, WiFi 등), 클라이언트 디바이스(125)에서 애플리케이션과 연관된 사용자 ID, 클라이언트 ID와 연관된 속성들 (예를 들어, 디바이스 설정들, 클라이언트 디바이스의 유형 등), 클라이언트 디바이스(125)의 현재 또는 과거 위치 또는 이들의 조합에 대한 주소 또는 식별자에 기초하여 제3 자 컨텐츠 아이템(들)을 선택할 수 있다. 일부 구현예들에서, 컨텐츠 선택 모듈(135)은 선택 시스템과 통신할 수 있고 클라이언트 디바이스로부터 수신된 제3 자 컨텐츠 요청에 포함된 컨텐츠 선택 시스템 정보를 제공할 수 있다. 컨텐츠 선택 모듈(135)은 제3 자 컨텐츠에 대한 요청에 포함된 정보를 제공함에 응답하여 컨텐츠 선택 시스템으로부터 하나 이상의 제3 자 컨텐츠 아이템들을 또한 수신할 수 있다. 일부 구현예들에서, 컨텐츠 선택 모듈(135)은 데이터베이스(145)에 액세스하여 클라이언트 디바이스(125)에 송신하기 위한 컨텐츠를 검색할 수 있다.
일부 구현예들에서, 컨텐츠 선택 모듈(135)은 스크립트에 대한 요청에 응답하여 클라이언트 디바이스(125)로 스크립트가 송신될 것인지 여부를 결정하도록 구성될 수 있다. 컨텐츠 선택 모듈(135)은 컨텐츠에 대한 요청 (예를 들어, 정보 리소스에 대한 요청, 제3 자 컨텐츠에 대한 요청 또는 프리페치 스크립트에 대한 요청) 유형, 컨텐츠 요청의 표시자 (예를 들어, 프리페치 스크립트를 표시하는 표시자), 컨텐츠 요청의 정보 리소스 식별자 또는 이들의 조합에 기초하여 스크립트가 클라이언트 디바이스(125) 송신될 것인지 여부를 결정할 수 있다.
일부 구현예들에서, 컨텐츠에 대한 요청은 컨텐츠에 대한 요청을 포함할 수 있다. 컨텐츠에 대한 요청은 컨텐츠를 요청하는 명령어들을 포함하는 컨텐츠 슬롯을 검출함에 응답하여 클라이언트 디바이스에서 생성될 수 있다. 컨텐츠에 대한 요청은 식별자를 포함할 수 있다. 일부 구현예들에서, 디바이스 식별자는 특정한 애플리케이션에 대해 유니크(unique)할 수 있으며 엄밀히 말해서, 특정한 클라이언트 디바이스에 설치된 특정한 애플리케이션에 할당된 유니크 식별자일 수 있다. 일부 구현예들에서, 식별자는 요청이 수신되었던 컴퓨팅 디바이스를 유니크하게 식별하는 디바이스 식별자일 수 있다.
일부 구현예들에서, 컨텐츠 선택 모듈(135)은 식별자를 포함하는 컨텐츠에 대한 요청을 수신하고 그 식별자를 사용하여 프리페치 스크립트를 송신할지 여부를 결정할 수 있다. 컨텐츠 선택 모듈(135)은 프리페치 스크립트를 이전에 수신했었던 애플리케이션 또는 디바이스의 정보를 포함하는 데이터베이스를 유지할 수 있다. 컨텐츠 선택 모듈(135)은 요청에 포함된 식별자를 사용하고 애플리케이션 또는 디바이스가 이전에 프리페치 스크립트를 수신했었는지 여부를 결정하기 위해 식별자를 사용하여 데이터베이스에서 룩업(lookup)을 수행할 수 있다. 컨텐츠 선택 모듈(135) 또는 스크립트 제공자 모듈(140)은 애플리케이션을 실행중인 클라이언트 디바이스로 프리페치 스크립트를 전송함에 응답하여 프리페치 스크립트를 수신했었던 애플리케이션들 또는 디바이스들의 정보를 업데이트하기 위해 데이터베이스를 업데이트할 수 있다.
스크립트가 클라이언트 디바이스(125)로 송신될 것을 결정하면, 컨텐츠 선택 모듈(135)은 컨텐츠에 대한 요청 또는 프리페치 스크립트를 클라이언트 디바이스에 제공하라는 표시를 스크립트 제공자 모듈(140)에 전송할 수 있다. 일부 구현예들에서, 컨텐츠 선택 모듈(135)은 프리페치 스크립트와 같은 스크립트와 함께 클라이언트 디바이스(125)에 송신할 제3 자 컨텐츠 아이템을 선택할 수 있다.
스크립트 제공자 모듈(140)은 프리페치 스크립트를 제공하라는 표시를 수신하고 클라이언트 디바이스(125) (또는 클라이언트 디바이스(125)로 송신하기 위한 다른 엔티티)로 프리페치 스크립트를 전송하도록 구성될 수 있다. 스크립트 제공자 모듈(140)은 메모리 엘리먼트에 프리페치 스크립트를 유지할 수 있다. 스크립트 제공자 모듈(140)은 클라이언트 디바이스에 제공하기 위한 프리페치 스크립트의 호환 가능한 버전을 선택하기 위해 요청들이 수신됐었던 클라이언트 디바이스 및/또는 애플리케이션을 결정할 수 있다. 일부 구현예들에서, 프리페치 스크립트는 특정한 애플리케이션에 특정적일 수 있거나 클라이언트 디바이스들 상에서 실행중인 특정한 운영 체제에 특정적일 수 있다. 스크립트 제공자 모듈(140)은 프리페치 스크립트를 송신할 애플리케이션 및/또는 클라이언트 디바이스에 기초하여 적합한 프리페치 스크립트를 선택할 수 있다.
일부 구현예들에서, 프리페치 스크립트는 제3 자 컨텐츠 아이템과 별도로 또는 함께 클라이언트 디바이스(125)로 전송될 수 있다. 예를 들어, 스크립트 제공자 모듈(140), 컨텐츠 선택 모듈(135) 또는 데이터 프로세싱 시스템(110)의 다른 엔티티는 제3 자 컨텐츠 아이템을 클라이언트 디바이스(125)에 송신하기 전에 제3 자 컨텐츠 아이템에 프리페치 스크립트를 포함할 수 있다. 일부 구현예들에서, 스크립트 제공자 모듈(140), 컨텐츠 선택 모듈(135) 또는 데이터 프로세싱 시스템(110)의 다른 엔티티는 요청된 정보 리소스와 함께 프리페치 스크립트를 클라이언트 디바이스(125)에 송신할 수 있다.
도 2는 일부 구현예들에 따라 컨텐츠를 프리페치하기 위한 시스템(200)의 예시를 도시한 블록도이다. 시스템(200)은 애플리케이션(205), 정보 리소스(210), 애플리케이션 개시 검출 모듈(225), 요청 생성 모듈(230), 로컬 캐시 관리 모듈(235) 및 컨텐츠 아이템 관리 모듈(240)을 포함할 수 있다. 일부 구현예들에서, 애플리케이션 개시 검출 모듈(225), 요청 생성 모듈(230), 로컬 캐시 관리 모듈(235) 및 컨텐츠 아이템 관리 모듈(240)은 프리페치 스크립트(220) 내의 모듈들일 수 있다. 일부 구현예들에서, 애플리케이션 개시 검출 모듈(225), 요청 생성 모듈(230), 로컬 캐시 관리 모듈(235) 및 컨텐츠 아이템 관리 모듈(240)을 포함하는 프리페치 스크립트(220)는 컨텐츠 관리 모듈(215) 내의 모듈들일 수 있다. 컨텐츠 관리 모듈(215)은 본 명세서에 기술된대로, 애플리케이션(205) 내의 모듈일 수 있으며, 그것은 스크립트들, 모듈들, 하위 모듈들 또는 클라이언트 디바이스(125)로 하여금 동작들을 수행하게 하는 애플리케이션(205) 내의 명령어들을 실행하기 위한 데이터 프로세싱 시스템(110)에 의해 공급(supply)되는 것일 수 있다.
일부 구현예들에서, 클라이언트 디바이스(125)의 프리페치 스크립트(220)는 데이터 프로세싱 시스템(110)의 스크립트 제공자 모듈(140)에 의해 제공된다. 프리페치 스크립트(220)는 데이터 프로세싱 시스템(110)에 의해 클라이언트 디바이스(125)로부터 수신된 컨텐츠에 대한 요청에 응답하여 클라이언트 디바이스(125)에 제공될 수 있다. 일부 구현예들에서, 데이터 프로세싱 시스템(110)은 클라이언트 디바이스(125)가 프리페치 스크립트(220)를 포함 하는지 여부를 결정한다. 예를 들어, 데이터 프로세싱 시스템(110)은 데이터 프로세싱 시스템(110)에 저장된 데이터 구조 (예를 들어, 테이블)에서 컨텐츠 요청에 포함된 클라이언트 디바이스(125)의 식별자의 룩업을 수행할 수 있다. 다른 예시로써, 데이터 프로세싱 시스템(110)은 프리페치 스크립트(220)가 클라이언트 디바이스(125)에 존재하는지 여부를 표시하는, 컨텐츠 요청에 포함된 플래그(flag) 또는 다른 표시자를 검출하거나 스캔할 수 있다.
프리페치 스크립트(220)는, 도 6에서 이하에 설명되는 것과 같이, 컴퓨팅 디바이스의 하나 이상의 프로세서들에 의해 작동하거나 그렇지 않으면 실행될 수 있다. 일부 구현예들에서, 애플리케이션 개시 검출 모듈(225), 요청 생성 모듈(230), 로컬 캐시 관리 모듈(235) 및 컨텐츠 아이템 관리 모듈(240) 중 어느 것은 애플리케이션(205), 컨텐츠 관리 모듈(215), 정보 리소스(210) 또는 프리페치 스크립트(220)의 일부일 수 있다.
애플리케이션(205)은 예를 들어, 인터넷 브라우저, 모바일 애플리케이션, 게임 애플리케이션, GPS 애플리케이션, 또는 정보 리소스(210), 어플리케이션 개시 검출 모듈(225), 요청 생성 모듈(230), 로컬 캐시 관리 모듈(235) 및 컨텐츠 아이템 관리 모듈(240)에 포함된 컴퓨터로 실행 가능한 명령어들과 같은 컴퓨터로 실행 가능한 명령어들을 실행하거나 호출할 수 있는 임의의 다른 컴퓨터 프로그램을 포함할 수 있다. 애플리케이션(205)은 컨텐츠 제공자(120)의 서버, 컨텐츠 제공자(115)의 서버 또는 데이터 프로세싱 시스템(110)의 서버와 같은, 정보 리소스를 호스팅하는 서버로부터 정보 리소스(210)을 획득하거나 수신할 수 있다. 예를 들어, 애플리케이션(205)은 정보 리소스(210)의 주소 또는 식별자를 포함하는 요청을 서버에 송신할 수 있고, 이에 응답하여 정보 리소스(210)을 수신할 수 있다. 일부 구현예들에서, 애플리케이션(205)은 클라이언트 디바이스 상에서 실행되는 컨텐츠 배포자의 네이티브 애플리케이션을 포함할 수 있다. 정보 리소스(210)는 하나 이상의 컨텐츠 부분들 (또는 컨텐츠 엘리먼트들)을 포함할 수 있다. 정보 리소스(210)는 하나 이상의 컨텐츠 엘리먼트들의 위치들을 특정할 수 있다. 일부 구현예들에서, 정보 리소스(210)는 주요 컨텐츠에 대한 부분들 및 제3 자 컨텐츠 또는 컨텐츠 아이템들에 대한 부분들을 포함할 수 있다.
이제 도 1 및 도 2를 함께 참조하면, 일부 구현예들에서, 클라이언트 디바이스(125) 상의 애플리케이션(205)에서 실행되는 애플리케이션 개시 검출 모듈(225)은 클라이언트 디바이스(125)로 하여금 애플리케이션(205)이 클라이언트 디바이스(125) 상에서 개시 했었다는 표시를 데이터 프로세싱 시스템(110)에 전송하게 할 수 있다. 일부 구현예들에서, 프리페치 스크립트(220)는 애플리케이션(205)으로 하여금 애플리케이션(205)의 개시시 루틴을 실행하게 하는 명령어들을 포함할 수 있다. 루틴은 애플리케이션(205)이 개시했었다는 표시를 애플리케이션 개시 검출 모듈(225)에 제공하는 명령어들의 집합을 포함할 수 있다. 따라서, 결과적으로, 애플리케이션 개시 검출 모듈(225)은 클라이언트 디바이스(125)로 하여금 애플리케이션(205)이 개시했었다는 표시를 데이터 프로세싱 시스템(110)에 전송하게 할 수 있다.
일부 구현예들에서, 클라이언트 디바이스(125) 상에서 실행되는 요청 생성 모듈(230)은 클라이언트 디바이스(125)로 하여금 데이터 프로세싱 시스템(110)에 전송될 컨텐츠에 대한 요청을 생성하게 할 수 있다. 일부 구현예들에서, 클라이언트 디바이스(125) 상에서 실행되는 로컬 캐시 관리 모듈(235)은 클라이언트 디바이스(125)로 하여금 애플리케이션(205)과 연관된 하나 이상의 로컬 캐시들(245a, 245b, 245c)을 생성, 삭제, 수정 또는 유지하게 할 수 있다. 클라이언트 디바이스(125)에 국부적인 로컬 캐시들(245a, 245b, 245c)은 데이터 프로세싱 시스템(110)으로부터 검색된 하나 이상의 컨텐츠 아이템들을 저장하도록 구성될 수 있다.
일부 구현예들에서, 클라이언트 디바이스(125) 상에서 실행되는 로컬 캐시 관리 모듈(235)은 클라이언트 디바이스(125)로 하여금 애플리케이션(205)과 연관된 로컬 캐시(245a)를 제작하게 할 수 있다. 로컬 캐시(245a)는 애플리케이션(205)과 관련하여 사용을 위해 할당되고 데이터 프로세싱 시스템(110)으로부터 수신된 하나 이상의 컨텐츠 아이템들을 (예를 들어, 일시적으로) 저장하도록 구성된 클라이언트 디바이스의(125)의 저장 엘리먼트일 수 있다. 일부 구현예들에서, 로컬 캐시(245a)는 데이터 프로세싱 시스템(110)에 대한 애플리케이션에 의한 컨텐츠 요청에 응답하여 제작된다. 로컬 캐시 관리 모듈(235)은 클라이언트 디바이스(125)로 하여금 루틴을 실행함으로써 로컬 캐시(245a)를 제작하게 할 수 있어, 로컬 캐시(245a)는 클라이언트 디바이스(125)의 메모리 엘리먼트 내에 제작될 수 있다. 루틴은 로컬 캐시(245a)를 제작할 것을 클라이언트 디바이스(125)의 운영 체제에 명령할 수 있다. 예를 들어, 캐시 관리 모듈(235)은 클라이언트 디바이스(125)로 하여금 로컬 캐시(245a)에 대해 미리 결정된 양의 메모리를 할당하게 할 수 있다. 미리 결정된 양의 메모리는 로컬 캐시 관리 모듈(235)에 의해 지정될 수 있고, 프리페치 스크립트(220)의 코드에 대한 주기적인 업데이트들을 통해 데이터 프로세싱 시스템(110)에 의해 조정될 수 있다. 일부 구현예들에서, 로컬 캐시 관리 모듈(235)은 클라이언트 디바이스(125)로 하여금 각각의 제작된 로컬 캐시의 구성들을 제작시의 파라미터들에 따라 다양하게 하도록 할 수 있다. 예를 들어, 로컬 캐시(245a)가 비디오 컨텐츠 아이템들을 저장하기 위한 것이라면, 로컬 캐시 관리 모듈(235)은 클라이언트 디바이스(125)로 하여금 로컬 캐시(245a)가 정적 이미지들을 저장하기 위한 경우보다 더 많은 메모리를 로컬 캐시(245a)에 할당하게 할 수 있다.
클라이언트 디바이스(125)로 하여금 로컬 캐시(245a)를 제작하게함에 응답하여, 클라이언트 디바이스(125)는 제작된 로컬 캐시(245a)의 로컬 위치를 표시하는 정보를 로컬 캐시 관리 모듈(235)에 송신할 수 있어, 애플리케이션(205)은 후속적으로 로컬 캐시(245a)에 액세스할 수 있다. 일부 구현예들에서, 로컬 캐시(245a)는 영구적이어서, 애플리케이션(205)이 셧다운될 때 로컬 캐시(245a) 및 그것에 저장된 컨텐츠는 클라이언트 디바이스(125)에 의해 로컬 캐시(245a)에 할당된 메모리 엘리먼트에 유지된다.
따라서, 클라이언트 디바이스(125) 상에서 실행되는 로컬 캐시 관리 모듈(235)은 클라이언트 디바이스(125)로 하여금 컨텐츠 요청과 연관된 파라미터들에 기초하여 구성을 로컬 캐시(245a)에 할당하게 할 수 있다. 예를 들어, 하나 이상의 파라미터들 (예를 들어, 컨텐츠 슬롯 ID의 값)을 포함하는 컨텐츠에 대한 요청을 생성할 때, 로컬 캐시 관리 모듈(235)은 클라이언트 디바이스(125)로 하여금 요청 파라미터들에 기초하여 캐시를 구축하고 구성하게 할 수 있다 (예를 들어, 로컬 캐시가 컨텐츠 슬롯 ID의 값을 포함하는 구성을 가져, 컨텐츠 슬롯 ID를 포함하는 후속 수신된 컨텐츠 아이템들이 동일한 컨텐츠 슬롯 ID로 구성된 로컬 캐시에 저장될 수 있다).
로컬 캐시(245a)의 구성은 애플리케이션(205)에 의한 후속 디스플레이를 위해 로컬 캐시(245a)에 저장될 컨텐츠의 유형 및 분류를 결정할 수 있다. 예를 들어, 컨텐츠에 대한 요청이 컨텐츠 아이템이 애플리케이션(205)에 의해 디스플레이되는 특정 컨텐츠 슬롯의 식별자를 포함하는 경우, 로컬 캐시 관리 모듈(235)은 클라이언트 디바이스(125)로 하여금 컨텐츠에 대한 요청에서 식별된 특정한 컨텐츠 슬롯에 대응하는 로컬 캐시를 생성하게 할 수 있다. 이와 같이, 특정한 컨텐츠 슬롯이 애플리케이션(205)에 의해 후속적으로 검출될 때, 컨텐츠 아이템 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 특정한 컨텐츠 슬롯에 대응하는 로컬 캐시에 저장된 컨텐츠 아이템에 액세스하게 하고, 특정 컨텐츠 슬롯에 디스플레이될 프리페치된 컨텐츠 아이템을 검색하게 할 수 있다. 따라서, 애플리케이션(205)은 복수의 로컬 캐시들 (예를 들어, 로컬 캐시들(245a, 245b 및 245c))과 연관될 수 있으며, 각각의 로컬 캐시는 로컬 캐시들에 저장될 컨텐츠 유형을 제어하는 상이한 구성들을 포함한다 (예를 들어, 애플리케이션(205)의 상이한 컨텐츠 슬롯 식별자들은 상이한 로컬 캐시들에 대한 상이한 구성들일 수 있다). 예를 들어, 제1 로컬 캐시(245a)는 제1 컨텐츠 슬롯의 식별자를 포함하는 제1 유형의 컨텐츠 슬롯들과 매치(match)하는 컨텐츠 슬롯들에서 서비스될 컨텐츠 아이템들을 저장하도록 구성될 수 있고, 제2 로컬 캐시(245b)는 제1 컨텐츠 슬롯의 식별자를 포함하는 제2 유형의 컨텐츠 슬롯들과 매치하는 컨텐츠 슬롯들에서 서비스될 컨텐츠 아이템들을 저장하도록 구성될 수 있으며, 그리고 제1 컨텐츠 슬롯과 호환 가능한 컨텐츠 아이템들은 제1 로컬 캐시에 저장되고, 제2 컨텐츠 슬롯과 호환 가능한 컨텐츠 아이템들 제 2 로컬 캐시에 저장된다.
일부 구현예들에서, 로컬 캐시(245a)와 연관된 구성들은 상술한 바와 같이, 컨텐츠 슬롯 식별자 외에 컨텐츠에 대한 요청에 포함되는 임의의 파라미터일 수 있다. 예를 들어, 구성들은 클라이언트 디바이스가 연결된 네트워크 유형 (예를 들어, 셀룰러 네트워크, WiFi 네트워크 등), 클라이언트 디바이스(125)의 특성들 (예를 들어, 디바이스 설정들, 클라이언트 디바이스의 유형 등), 컨텐츠에 대한 요청들과 연관된 키워드 또는 주제 (예를 들어, 스포츠, 정치, 기술 등), 클라이언트 디바이스(125)의 현재 또는 과거 위치, 텍스트 및 애플리케이션들(205)의 상이한 부분들의 시각적 컨텐츠 (예를 들어, 컨텐츠 아이템들이 상이한 부분들에서 애플리케이션에 원활하게 통합될 수 있도록) 등을 포함할 수 있다.
일부 구현예들에서, 로컬 캐시들(245a, 245b, 245c)을 제작할 때. 클라이언트 디바이스(125)는 로컬 캐시들(245a, 245b, 245c) 각각의 위치 정보를 송신할 수 있어, 컨텐츠 아이템 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 로컬 캐시들(245a, 245b, 245c)에 액세스 하거나 그렇지 않으면 로컬 캐시들(245a, 245b, 245c)을 관리하게 할 수 있다. 예를 들어, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 아이템 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 로컬 캐시들(245a, 245b, 245c)로부터 컨텐츠 아이템들을 검색하게 할 수 있다. 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 아이템 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 로컬 캐시들(245a, 245b, 245c)에 저장된 컨텐츠 아이템들을 삭제하게 할 수 있다. 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 아이템 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 (예를 들어, 애플리케이션(205) 내의 컨텐츠 슬롯을 검출함에 응답하여) 언제 검색하고 디스플레이 할지를 결정하게 할 수 있다.
일부 구현예들에서, 다수의 로컬 캐시들 대신, 로컬 캐시 관리 모듈(235) 및 컨텐츠 아이템 관리 모듈(240)은 클라이언트 디바이스(125)롤 하여금 단일 로컬 캐시를 제작하고 관리하게 할 수 있다. 컨텐츠 아이템 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 단일 로컬 캐시에 저장된 하나 이상의 컨텐츠 아이템들을 디스플레이하기 위해 액세스하게 할 수 있다. 일부 구현예들에서, 단일 로컬 캐시는 컨텐츠 아이템들과 연관된 파라미터들에 관계없이 다양한 컨텐츠 아이템들을 저장하도록 구성된다 (예를 들어, 단일 로컬 캐시가 범용 로컬 캐시이다).
일부 구현예들에서, 단일 로컬 캐시는 이전 요청의 파라미터들에 기초하여 컨텐츠 아이템들을 저장하도록 구성된다. 예를 들어, 단일 로컬 캐시는 컨텐츠에 대한 이전 요청의 파라미터들에 대응하는 구성을 포함할 수 있고, 컨텐츠 아이템 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 단일 로컬 캐시로부터 컨텐츠 아이템을 검색한 후에 단일 로컬 캐시를 삭제하게 할 수 있다. 따라서, 로컬 캐시 관리 모듈(235)은 후속적으로 클라이언트 디바이스(125)로 하여금 컨텐츠에 대한 새로운 요청의 파라미터들에 기초하여 새로운 단일 로컬 캐시를 제작하여 이전의 단일 로컬 캐시를 대체하게 할 수 있다. 이와 같이, 적합한 때에 로컬 캐시들을 제작하고 삭제함으로써 클라이언트 디바이스(125)의 로컬 메모리가 보존될 수 있다.
애플리케이션 개시 검출 모듈(225), 요청 생성 모듈(230), 로컬 캐시 관리 모듈(235), 컨텐츠 아이템 관리 모듈(240) 및 로컬 캐시들(245a, 245b, 245c)에 관한 더 상세한 설명들이 이하에 제시된다.
도 3은 일부 실시예들에 따라 애플리케이션(205)이 실행 또는 작동중인 클라이언트 디바이스(125)에서 정보 리소스에 디스플레이하기 위한 컨텐츠 아이템들을 프리페치하는 프로세스를 도시한 순서도이다. 애플리케이션(205)은 연관된 로컬 캐시(245a)와 함께 도시되며, 애플리케이션(205) 및 로컬 캐시(245a)의 다양한 상태들은 후술되는 이벤트들에 응답하여 단계들 A 내지 F에서 설명된다.
일부 구현예들에서, 애플리케이션(205)은 단계(A)에서 클라이언트 디바이스(125) 상에 개시되어 작동될 수 있다. 애플리케이션(205)의 개시에 응답하여, 클라이언트 디바이스(125) 상의 애플리케이션(205)에서 실행중인 애플리케이션 개시 검출 모듈(225)은 클라이언트 디바이스(125)로 하여금 애플리케이션(205)가 클라이언트 디바이스(125) 상에 개시했었다는 표시를 전송하게 할 수 있다. 일부 구현예들에서, 개시 표시를 수신함에 응답하여, 컨텐츠 선택 모듈(135)은 클라이언트 디바이스(125)로 하여금 애플리케이션(205)에서의 후속 디스플레이를 위하여 디바이스(125)에서 (예를 들어, 하나 이상의 로컬 캐시들(245a, 245b, 245c)에) 국부적으로 저장될 하나 이상의 초기 컨텐츠 아이템들을 전송하게 할 수 있다. 일부 구현예들에서, 초기 컨텐츠 아이템들과 연관된 파라미터들은 클라이언트 디바이스(125)의 애플리케이션(205)에 의해 만들어진 이전 요청들의 파라미터들에 기초할 수 있다. 예를 들어, 초기 컨텐츠 아이템과 연관된 파라미터들은 애플리케이션(205)이 마지막으로 종료되기 전에 애플리케이션(205)에 의해 송신된 최종 컨텐츠 아이템 요청의 파라미터들에 대응할 수 있다. 초기 컨텐츠 아이템들과 연관된 파라미터들은 요청하는 클라이언트 디바이스의 유형, 클라이언트 디바이스를 서비스하는 네트워크의 유형, 클라이언트의 마지막으로 알려진 위치, 시간 등과 같은 하지만 이에 제한되지 않는, 다른 또는 추가 파라미터들에 기초할 수 있다.
단계(A)에서, 클라이언트 디바이스(125)는 이미 컨텐츠 아이템들을 저장하기 위해 이전에 제작된 로컬 캐시(245a)를 포함할 수 있다. 일부 구현예들에서, 클라이언트 디바이스(125) 상에서 실행되는 요청 생성 모듈(230)은 클라이언트 디바이스(125)로 하여금 컨텐츠에 대한 제1 요청(301)을 생성하여 네트워크(105)를 통해 데이터 프로세싱 시스템(110)의 컨텐츠 요청 모듈(130)로 전송하게 할 수 있다. 일부 구현예들에서, 컨텐츠에 대한 제1 요청(301)은 클라이언트 디바이스(125)에 의해 수신될 컨텐츠 아이템의 유형을 표시하는 하나 이상의 파라미터들을 포함한다. 컨텐츠에 대한 제1 요청(301)의 파라미터들은 요청된 컨텐츠를 삽입할 컨텐츠 슬롯의 크기를 식별할 수 있다. 파라미터들은 정보 리소스와 연관된 컨텐츠 유형, 요청된 제3 자 컨텐츠 유형 (예를 들어, 텍스트, 이미지, 비디오 등), 클라이언트 디바이스 정보, 요청된 제3 자 컨텐츠 아이템의 크기 정보, 클라이언트 디바이스(125)에 연관된 네트워크 유형 (예를 들어, 셀룰러 네트워크, WiFi 등), 클라이언트 디바이스(125)에서 애플리케이션과 연관된 애플리케이션 ID, 애플리케이션 ID와 연관된 속성들 (예를 들어, 디바이스 설정들, 클라이언트 디바이스의 유형, 등), 클라이언트 디바이스(125)의 현재 또는 과거 위치, 또는 이들의 조합을 더 식별할 수 있다.
컨텐츠에 대한 제1 요청(301)에 응답하여, 데이터 프로세싱 시스템(110)의 컨텐츠 선택 모듈(135)은 컨텐츠에 대한 제1 요청(301)에서 수신된 파라미터들을 사용하여 제1 컨텐츠 아이템(302)을 선택하고 제1 컨텐츠 아이템(302)을 클라이언트 디바이스(115)로 전송한다. 제1 컨텐츠 아이템(302)은 그 후 애플리케이션(205)에 의한 후속 검색을 위해 로컬 캐시(245a)에 국부적으로 저장될 수 있다. 예를 들어, 애플리케이션(205)은 클라이언트 디바이스(125)로 하여금 제1 컨텐츠 아이템(302)을 수신하고 (예를 들어, 컨텐츠에 대한 제1 요청(301)의 요청 식별자를 제1 컨텐츠 아이템(302)에 포함된 응답 식별자와 매치시킴으로써 또는 컨텐츠에 대한 제1 요청(301)의 컨텐츠 슬롯 식별자를 제2 컨텐츠 아이템(302)에 포함된 컨텐츠 슬롯 식별자와 매치시킴으로써) 제1 컨텐츠 아이템(302)이 컨텐츠에 대한 제1 요청(301)과 매치하는 것을 식별하게 하도록 구성된 명령어들을 포함할 수 있다. 예를 들어, 컨텐츠에 대한 제1 요청(301)을 송신함에 있어, 요청 생성 모듈(230)은 클라이언트 디바이스(125)로 하여금 컨텐츠에 대한 요청(301)이 생성된 컨텐츠 슬롯의 컨텐츠 슬롯 식별자를 요청에 포함하게 할 수 있다. 이어서, 컨텐츠 아이템 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 수신된 제1 컨텐츠 아이템(302)의 컨텐츠 슬롯 식별자를 결정하게 하고, 상기 식별자를 그 특정 컨텐츠 슬롯 식별자에 대해 구성된 로컬 캐시의 구성과 매치하게 할 수 있다. 일단 매치되면, 컨텐츠 아이템 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 수신된 제1 컨텐츠 아이템(302)을 매치하는 컨텐츠 슬롯 식별자를 갖는 로컬 캐시에 저장하게 할 수 있다. 일부 구현예들에서, 클라이언트 디바이스에 전송되는 컨텐츠 아이템을 포함하는 컨텐츠에 대한 요청에 대한 응답은 몇몇 식별 데이터를 포함할 수 있으며, 클라이언트 디바이스 또는 컨텐츠 아이템 관리 모듈(240)은 컨텐츠 아이템을 저장할 로컬 캐시를 결정하는데 상기 식별 데이터를 사용할 수 있다. 일부 구현예들에서, 클라이언트 디바이스는, 컨텐츠에 대한 요청에, 컨텐츠 아이템을 저장할 로컬 캐시를 식별하는 로컬 캐시 식별자를 포함하도록 구성될 수 있다. 이러한 방식으로, 데이터 프로세싱 시스템(110)은, 컨텐츠 아이템 관리 모듈(240)이 저장을 위해 로컬 캐시 식별자에 대응하는 로컬 캐시로 컨텐츠 아이템을 라우팅할 수 있도록, 로컬 캐시 식별자를 응답에 포함할 수 있다. 일부 구현예들에서, 응답은 응답이 대응하는 요청을 식별할 수 있고, 컨텐츠 아이템 관리 모듈(240)은 컨텐츠 아이템 관리 정책에 따라 컨텐츠 아이템이 저장되어야하는 로컬 캐시를 요청으로부터 결정할 수 있다.
단계(B)에서, 클라이언트 디바이스(125)의 로컬 캐시(245a)는 애플리케이션(205)에 의한 검색을 위해 제1 컨텐츠 아이템(302)을 저장한다. 일부 구현예들에서, 로컬 캐시(245a)는 클라이언트 디바이스(125) 상에서 실행되는 로컬 캐시 관리 모듈(235)이 클라이언트 디바이스(125)로 하여금 로컬 디바이스(245a) 내의 제1 컨텐츠 아이템(302)을 삭제하게 하기 전에 제1 컨텐츠 아이템(302)을 미리 결정된 기간 동안 저장하도록 구성된다. 일부 구현예들에서, 미리 결정된 기간은 원하는대로 구성 가능하며, 예를 들어 20분으로 설정될 수 있다. 예를 들어, 미리 결정된 기간은 클라이언트 디바이스(125) 상에서 실행되는 로컬 캐시 관리 모듈(235)이 클라이언트 디바이스(125)로 하여금 로컬 캐시(245a)에 저장된 제1 컨텐츠 아이템(302)에 기인(attribute)하도록 하는 참신성 점수(freshness score)에 기초할 수 있다. 일부 구현예들에서, 점수는 시간에 기초할 수 있고 (예를 들어, 제1 컨텐츠 아이템(302)가 로컬 캐시(245a)에 더 오래 저장될수록, 참신성 점수는 감소한다), 제1 컨텐츠 아이템(302)이 포함하는 데이터의 유형에 기초할 수 있으며, 예를 들어, 국부적으로 캐시된 컨텐츠 아이템의 참신성 점수의 감소율은 제1 컨텐츠 아이템(302)이 포함하는 데이터의 유형에 기초하여 상이할 수 있다 (예를 들어, 기상 정보는 로컬 캐시(245a)에 상대적으로 더 오랜 시간 저장되도록 허용될 수 있는 반면, 주가 정보는 주식들의 휘발성으로 인해 상대적으로 적은 시간이 허용될 수 있다). 일부 구현예들에서, 클라이언트 디바이스(125) 상에서 실행되는 로컬 캐시 관리 모듈(235)은 클라이언트 디바이스(125)로 하여금 제1 컨텐츠 아이템(302)의 참신성 점수를 클라이언트 디바이스(125)에 저장된 임계 값과 비교함으로써 로컬 캐시(245a)로부터 제1 컨텐츠 아이템(302)을 삭제하게 한다. 예를 들어, 참신성 점수가 임계 값이거나 그 이하이면, 제1 컨텐츠 아이템(302)은 삭제될 수 있다.
일부 구현예들에서, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 애플리케이션(205) 내의 제1 컨텐츠 슬롯(310)의 존재를 검출하게 할 수 있다. 제1 컨텐츠 슬롯(310)은 제1 컨텐츠 슬롯(310) 내에 디스플레이될 컨텐츠 아이템을 수신하도록 구성된 애플리케이션(205)의 디스플레이 내의 위치를 포함할 수 있다. 제1 컨텐츠 슬롯(310)의 검출에 응답하여, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 로컬 캐시(245a)로부터 저장된 제1 컨텐츠 아이템(302)을 검색하고 클라이언트 디바이스(125)에 의한 디스플레이를 위해 제1 컨텐츠 슬롯(310)에 제1 컨텐츠 아이템(302)을 삽입하게 할 수 있다. 일부 구현예들에서, 로컬 캐시(245a)는 컨텐츠에 대한 제1 요청(301)에 포함된 파라미터들 예를 들어, 제1 컨텐츠 슬롯(310)의 식별자에 대응하는 파라미터들, 에 대응하는 구성들을 포함하도록 구성된다. 따라서, 일부 구현예들에서, 로컬 캐시(245a)에 저장된 컨텐츠 아이템들은 제1 컨텐츠 슬롯(310)과 호환 가능한 것들 (예를 들어, 제1 컨텐츠 슬롯(310)의 식별자와 매치하는 슬롯 식별자를 포함하는 아이템들)일 수 있다.
단계(C)에서, 일부 구현예들에서, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 제1 컨텐츠 슬롯(310)의 로컬 캐시(245a)에 저장된 제1 컨텐츠 아이템(302)을 삽입하여 디스플레이하게 할 수 있다. 일부 구현예들에서, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 관리 모듈(240)은 제1 컨텐츠 슬롯(310)에 디스플레이되고 있는 때 또는 디스플레이됨에 응답하여, 클라이언트 디바이스(125)로 하여금 로컬 캐시(245a)로부터 제1 컨텐츠 아이템(302)을 삭제하게 할 수 있다. 또한, 일부 구현예들에서, 제1 컨텐츠 아이템(302)이 제1 컨텐츠 슬롯(310)에 디스플레이되고 있는 때 또는 디스플레이됨에 응답하여, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 컨텐츠에 대한 제2 또는 후속 요청(303)을 전송하게 할 수 있으며, 이는 전술한 컨텐츠에 대한 제1 요청(301)의 전송과 유사할 수 있다. 일부 구현예들에서, 컨텐츠의 제2 요청(303)은, 컨텐츠 아이템 슬롯의 검출에 응답하여 통상적으로 행해지는 것 대신에, 제1 컨텐츠 슬롯(310)에서의 제1 컨텐츠 아이템(302)의 디스플레이에 응답하여 전송된다.
일부 구현예들에서, 컨텐츠에 대한 제2 요청(303)은 컨텐츠에 대한 제1 요청(301)의 것과 동일한 또는 유사한 파라미터들을 포함하고, 따라서, 컨텐츠에 대한 제2 요청(303)에 응답하여 데이터 프로세싱 시스템(110)으로부터 수신된 컨텐츠 아이템은 제1 컨텐츠 아이템(302)과 유사한 특성들을 가질 수 있다 (예를 들어, 유사한 주제, 유사한 시각적 특성들, 유사한 크기 등). 일부 구현예들에서, 클라이언트 디바이스(125)가 컨텐츠에 대한 제1 요청(301)을 네트워크(105)로 전송할 때, 클라이언트 디바이스(125)는 컨텐츠에 대한 제2 요청(303)과 관련하여 사용될 그리고 컨텐츠에 대한 제2 요청(303)을 전송할 때 검색을 위한 컨텐츠에 대한 제1 요청(301)과 연관된 하나 이상의 파라미터들을 저장할 수 있다. 일부 구현예들에서, 컨텐츠에 대한 제1 요청(301)의 하나 이상의 파라미터들은 클라이언트 디바이스(125)의 개별 메모리 엘리먼트에 저장될 수 있다.
요청에 응답하여, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 (예를 들어, 네트워크(105)를 통해 데이터 프로세싱 시스템(110)으로부터) 제2 컨텐츠 아이템(304)을 수신하게 할 수 있다. 제2 컨텐츠 아이템(304)은 애플리케이션(205)에 의해 호출될 때 검색될 프리페치된 컨텐츠 아이템으로써 로컬 캐시(245a)에 저장된다. 컨텐츠에 대한 제1 요청(301) 및 컨텐츠에 대한 제2 요청(303)은 동일하거나 유사한 파라미터들을 포함하기 때문에, 제1 컨텐츠 아이템(302) 및 제2 컨텐츠 아이템(304)은 유사한 특성들을 가질 수 있다. 예를 들어, 제1 컨텐츠 아이템(302) 및 제2 컨텐츠 아이템(304) 둘 모두는 동일한 컨텐츠 슬롯 (예를 들어, 컨텐츠 슬롯(310))과 호환 가능하고, 유사한 주제 (예를 들어, 스포츠, 정치 등)으로 유도될 수 있고, 동일한 크기를 가질 수 있으며, 사용자 유형 (예를 들어, 남성, 나이든, 전문가 등), 이들의 조합 등으로 유도될 수 있다. 일부 구현예들에서, 제1 컨텐츠 아이템(302) 및 제2 컨텐츠 아이템(304)이 애플리케이션(205)의 동일한 섹션의 텍스트 및 외관(appreance)으로 원활하게 통합될 수 있도록, 컨텐츠에 대한 요청의 파라미터들은 애플리케이션 디스플레이 환경의 텍스트 및 시각적 컨텐츠에 기초한다.
일부 구현예들에서, 클라이언트 디바이스(125)는 다수의 컨텐츠 아이템이 로컬 캐시(245a)에 저장되도록 컨텐츠에 대한 다수의 요청들을 한 번에 전송할 수 있다. 예를 들어, 제1 컨텐츠 슬롯(310)을 검출함에 응답하여, 클라이언트 디바이스(125)는 컨텐츠에 대한 복수의 제2 요청들(303)을 네트워크(105)에 전송하고 로컬 캐시(245a)에 저장될 대응하는 제2 컨텐츠 아이템들(304)을 수신할 수 있다.
따라서, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 애플리케이션(205)에 의한 후속 사용을 위해 컨텐츠 아이템을 프리페치하게 할 수 있어, 컨텐츠 아이템이 필요할 때 네트워크(105)를 통해 데이터 프로세싱 시스템(110)과 통신해야 하는 클라이언트 디바이스(125)와는 대조적으로, 프리페치된 컨텐츠 아이템은 클라이언트 디바이스(125)에 의해 국부적으로 그리고 상대적으로 신속하게 액세스될 수 있다. 따라서, 어플리케이션(205)에 컨텐츠 아이템들을 디스플레이할때의 대기를 감소시킬 수 있다. 또한, 예를 들어, 로컬 캐시(245a)에 저장된 컨텐츠 아이템이 연관된 만료 기간 (예를 들어, 20분)을 가질 수 있기 때문에, 프리페치 컨텐츠에도 불구하고 컨텐츠의 상대적 참신성이 유지될 수 있다.
단계(D)에서, 로컬 캐시(245a)는 애플리케이션(205)에 의한 검색을 위해 제2 컨텐츠 아이템(304)을 저장한다. 일부 구현예들에서, 클라이언트 디바이스(125) 상에서 실행되는 로컬 캐시 관리 모듈(235)이 클라이언트 디바이스(125)로 하여금 로컬 캐시(245a) 내의 제2 컨텐츠 아이템(304)을 삭제하게 하기 전에 로컬 캐시(245a)는 미리 결정된 기간 동안 제2 컨텐츠 아이템(304)을 저장하도록 구성된다. 일부 구현예들에서, 미리 결정된 기간은 원하는대로 구성 가능하며, 예를 들어 20분으로 설정될 수 있다.
일부 구현예들에서, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 애플리케이션(205) 내의 제2 컨텐츠 슬롯(320)의 존재를 검출하게 할 수 있다. 제2 컨텐츠 슬롯(320)은 제1 컨텐츠 아이템(302)이 단계(C)에서 디스플레이되었던 상이한 컨텐츠 슬롯일 수 있다. 제2 컨텐츠 슬롯(320)의 검출에 응답하여, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 저장된 제2 컨텐츠 아이템(304)을 로컬 캐시(245a)로부터 검색하고 클라이언트 디바이스(125)에 의한 디스플레이를 위해 제2 컨텐츠 아이템(304)을 제2 컨텐츠 슬롯(320)에 삽입하게 할 수 있다.
단계(E)에서, 일부 구현예들에서, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 로컬 캐시(245a)에 저장된 제2 컨텐츠 아이템(304)을 제2 컨텐츠 슬롯(320)에 삽입하여 디스플레이하게 할 수 있다. 일부 구현예들에서, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 제2 컨텐츠 아이템(304)이 제2 컨텐츠 슬롯(320)에 디스플레이되고 있는 때 또는 디스플레이됨에 응답하여 로컬 캐시(245a)로부터 제2 컨텐츠 아이템(304)을 삭제하게 할 수 있다. 또한, 일부 구현예들에서, 제2 컨텐츠 아이템(304)이 제2 컨텐츠 슬롯(320)에 디스플레이될 때 또는 그에 응답하여, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 전술한 컨텐츠(301)에 대한 제1 요청의 전송 및 컨텐츠에 대한 제2 요청(303)의 전송과 유사한, 컨텐츠에 대한 후속 요청(305)을 전송하게 할 수 있다. 일부 구현예들에서, 컨텐츠의 후속 요청(303)은, 컨텐츠 아이템 슬롯의 검출에 응답하여 통상적으로 행해지는 것 대신에, 제2 컨텐츠 슬롯(320)에서의 제2 컨텐츠 아이템(304)의 디스플레이에 응답하여 전송된다. 일부 구현예들에서, 컨텐츠의 후속 요청(305)은 컨텐츠에 대한 제2 요청(303)의 것과 동일 또는 유사한 파라미터들을 포함하므로, 컨텐츠에 대한 후속 요청(305)에 응답하여 데이터 프로세싱 시스템(110)으로부터 수신된 컨텐츠 아이템은 제2 컨텐츠 아이템(304)과 유사할 수 있다.
요청에 응답하여, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 관리 모듈(240)은 클라이언트 디바이스(125)로 하여금 (예를 들어, 데이터 프로세싱 시스템(110)으로부터 네트워크(105)를 통해) 후속 컨텐츠 아이템(306)을 수신하게 할 수 있다. 후속 컨텐츠 아이템(306)은 애플리케이션(205)에 의해 필요할 때 검색될 프리페치된 컨텐츠 아이템으로써 로컬 캐시(245a)에 저장된다. 컨텐츠에 대한 제2 요청(303) 및 컨텐츠에 대한 후속 요청(305)이 동일하거나 유사한 파라미터들을 포함할 수 있기 때문에, 제2 컨텐츠 아이템(304) 및 후속 컨텐츠 아이템(306)은 유사한 특성들을 가질 수 있다. 예를 들어, 제2 컨텐츠 아이템(304) 및 후속 컨텐츠 아이템(306) 둘 모두는 동일한 컨텐츠 슬롯 (예를 들어, 컨텐츠 슬롯(310))과 호환 가능하고, 유사한 주제 (예를 들어, 스포츠, 정치 등)으로 유도될 수 있고, 동일한 크기를 가질 수 있으며, 사용자 유형 (예를 들어, 남성, 나이든, 전문가 등), 이들의 조합 등으로 유도될 수 있다.
일부 구현예들에서, 단계(A) 내지 (E)는 종료 조건이 만족될 때까지 반복될 수 있다 (예를 들어, 종료 조건은 셧다운 또는 삭제되는 중인 애플리케이션(205)을 포함할 수 있거나 또는 애플리케이션(205) 내의 컨텐츠 페치 피처가 불가능하게 되는 것을 포함할 수 있다). 이와 같이, 클라이언트 디바이스(125)가 이전 요청의 파라미터들에 기초하여 컨텐츠를 반복적으로 프리페치할 수 있어, 새로운 프리페치된 컨텐츠는 클라이언트 디바이스(125)의 파라미터들에 대응하는 로컬 캐시들에 저장되고 대체될 수 있다. 따라서, 새로운 컨텐츠가 애플리케이션(205)에 의해 요청될 때, 클라이언트 디바이스(125)는 컨텐츠 슬롯을 검출한 후에 실시간으로 네트워크(105)를 통해 컨텐츠를 페치하는 것과 대조적으로, 로컬 캐시들로부터 컨텐츠를 공급할 수 있고, 따라서 클라이언트 디바이스(125)에서의 대기를 감소시킨다.
단계(F)에서, 애플리케이션(205)은 클라이언트 디바이스(125)의 사용자에 의해 언제든지 재개시될 수 있다. 일부 구현예들에서, 로컬 캐시들(245a, 245b, 245c)은 애플리케이션(205)이 셧다운, 종료 또는 달리 동작하지 않은 후에도 캐시들에 저장된 컨텐츠 아이템들을 유지하는 영구적인 로컬 캐시들이다. 예를 들어, 후속 컨텐츠 아이템(306)은 단계(E)에서 수신되고 로컬 캐시(245a)에 저장되지만, 애플리케이션(205)은 종료되고 단계(E) 이후에 재개시된다. 그러나, 애플리케이션(205)의 재개시에도 불구하고, 클라이언트 디바이스(125)는 후속 컨텐츠 아이템(306)의 저장을 로컬 캐시(245a)에 유지하므로, 후속 컨텐츠 아이템(306)이 애플리케이션(205) 내의 컨텐츠 슬롯(310)의 검출에 응답하여 액세스 및 디스플레이될 수 있다. 따라서, 일부 구현예들에서, 전술한 컨텐츠를 프리페치하는 방법 및 시스템을 재개할 수 있다 (예를 들어, 단계(A)로 복귀할 수 있다).
도 4는 일부 구현예들에 따라 디스플레이를 위해 컨텐츠를 프리페치하는 방법(400)을 도시한 흐름도이다. 간략하게 개요하면, 방법(400)은 애플리케이션을 개시하는 클라이언트 디바이스를 포함할 수 있다(블록(405)). 방법(400)은 컨텐츠에 대한 제1 요청을 수신하는 전송하는 클라이언트 디바이스를 포함할 수 있고, 제1 요청은 하나 이상의 파라미터들을 포함하며(블록(410)) 그리고 그에 응답하여 하나 이상의 제1 파라미터들을 포함하는 제1 요청을 수신하는 데이터 프로세싱 시스템을 포함할 수 있다(블록(415)). 방법(400)은 제1 파라미터에 기초하여 제1 컨텐츠 아이템을 선택하는 데이터 프로세싱 시스템을 포함할 수 있다(블록(420)). 방법(400)은 클라이언트 디바이스에 제1 컨텐츠 아이템을 전송하는 데이터 프로세싱 시스템을 포함할 수 있으며(블록(425)), 로컬 캐시에 제1 컨텐츠 아이템을 수신 및 저장하는 클라이언트 디바이스를 포함할 수 있다(블록(430)). 방법(400)은 애플리케이션에서 제1 컨텐츠 슬롯을 검출하고(블록(435)), 로컬 캐시로부터 제1 컨텐츠 아이템을 검색하고 제1 컨텐츠 아이템을 디스플레이하며(블록(440)) 그리고 하나 이상의 제2 파라미터들을 포함하는 컨텐츠의 제2 요청을 전송하는(블록(445)) 클라이언트 디바이스를 포함할 수 있다. 방법(400)은 제2 파라미터들을 포함하는 제2 요청을 수신하고(블록(450)), 제2 파라미터들에 기초하여 제2 컨텐츠 아이템을 선택하며(블록(455)), 그리고 제2 컨텐츠 아이템을 클라이언트 디바이스에 전송하는(블록(460)) 데이터 프로세싱 시스템을 포함할 수 있다. 방법(400)은 로컬 캐시에 제2 컨텐츠 아이템을 수신하고 저장하는 클라이언트 디바이스를 포함할 수 있다(블록(465)). 방법(400)은 애플리케이션 내의 제2 컨텐츠 슬롯을 검출하고(블록(470)), 로컬 캐시로부터 제2 컨텐츠 아이템을 검색하고 제2 컨텐츠 아이템을 디스플레이하며(블록(475)) 하나 이상의 제3 파라미터들을 포함하는 컨텐츠에 대한 제3 요청을 전송(블록(480))하는 클라이언트 디바이스를 포함할 수 있다.
보다 상세하게, 방법(400)은 애플리케이션을 개시하는 클라이언트 디바이스를 포함할 수 있다(블록 405). 예를 들어, 애플리케이션을 개시할 때, 클라이언트 디바이스 상에서 실행되는 애플리케이션 개시 검출 모듈은 클라이언트 디바이스로 하여금 애플리케이션이 개시했었다는 표시를 데이터 프로세싱 시스템에 전송하게 할 수 있다. 일부 구현예들에서, 개시 표시의 수신에 응답하여, 컨텐츠 선택 모듈은 클라이언트 디바이스로 하여금 애플리케이션 내의 후속 디스플레이를 위해 클라이언트 디바이스에서 (예를 들어, 하나 이상의 로컬 캐시들에) 국부적으로 저장될 하나 이상의 초기 컨텐츠 아이템들을 전송하게 할 수 있다. 일부 구현예들에서, 초기 컨텐츠 아이템들과 연관된 파라미터들은 클라이언트 디바이스의 애플리케이션에 의해 만들어진 이전 요청들의 파라미터들에 기초할 수 있다. 예를 들어, 초기 컨텐츠 아이템과 연관된 파라미터들은 애플리케이션(205)이 마지막으로 종료되었기 전에 애플리케이션에 의해 송신된 최종 컨텐츠 아이템 요청의 파라미터들에 대응할 수 있다. 초기 컨텐츠 아이템들과 연관된 파라미터들은 요청하는 클라이언트 디바이스의 유형, 클라이언트 디바이스를 서비스하는 네트워크의 유형, 클라이언트의 최종 알려진 위치, 시간 등과 같은, 그러나 이에 제한되지는 않는, 다른 또는 추가 파라미터들에 기초할 수 있다.
방법(400)은 컨텐츠에 대한 제1 요청을 전송하는 클라이언트 디바이스를 포함할 수 있으며, 제1 요청은 하나 이상의 파라미터들을 포함하고(블록(410)), 이에 응답하여, 하나 이상의 제1 파라미터들을 포함하는 제1 요청을 수신하는 데이터 프로세싱 시스템을 포함할 수 있다.(블록(415)). 예를 들어, 클라이언트 디바이스에서 실행되는 요청 생성 모듈은 클라이언트 디바이스로 하여금 데이터 프로세싱 시스템의 컨텐츠 요청 모듈로 컨텐츠에 대한 제1 요청을 생성하고 네트워크를 통해 전송하게 할 수 있다. 일부 구현예들에서, 컨텐츠에 대한 제1 요청은 클라이언트 디바이스에 의해 수신될 컨텐츠 아이템의 유형을 표시하는 하나 이상의 파라미터들을 포함한다. 컨텐츠에 대한 제1 요청의 파라미터들은 요청된 컨텐츠를 삽입하기 위한 컨텐츠 슬롯의 크기를 식별할 수 있다. 파라미터들은 정보 리소스와 연관된 컨텐츠 유형, 요청된 제3 자 컨텐츠 유형 (예를 들어, 텍스트, 이미지, 비디오 등), 클라이언트 디바이스 정보, 요청된 제3 자 컨텐츠 아이템의 크기 정보, 클라이언트 디바이스와 연관된 네트워크 유형 (예를 들어, 셀룰러 네트워크, WiFi 등), 클라이언트 디바이스에서 애플리케이션과 연관된 애플리케이션 ID, 애플리케이션 ID와 연관된 속성들 (예를 들어, 디바이스 설정들, 클라이언트 디바이스의 유형 등), 클라이언트 디바이스의 현재 또는 과거 위치, 또는 이들의 조합을 식별할 수 있다.
방법(400)은 제1 파라미터에 기초하여 제1 컨텐츠 아이템을 선택하는 데이터 프로세싱 시스템을 포함할 수 있다(블록(420)). 예를 들어, 컨텐츠에 대한 제1 요청에 응답하여, 데이터 프로세싱 시스템의 컨텐츠 선택 모듈은 제1 컨텐츠 아이템을 선택하기 위해 컨텐츠에 대한 제1 요청에서 수신된 파라미터들을 사용한다.
방법(400)은 클라이언트 디바이스에 제1 컨텐츠 아이템을 전송(블록(425))하는 데이터 프로세싱 시스템, 로컬 캐시에 제1 컨텐츠 아이템을 수신하여 저장(블록(430))하는 클라이언트 디바이스를 포함할 수 있다. 예를 들어, 제1 컨텐츠 아이템은 애플리케이션에 의한 후속 검색을 위해 로컬 캐시에 국부적으로 저장될 수 있다. 예를 들어, 애플리케이션은 명령어들을 포함할 수 있으며, 상기 명령어들은 클라이언트 디바이스로 하여금 제1 컨텐츠 아이템을 수신하게 하고, (예를 들어, 컨텐츠에 대한 제1 요청의 요청 식별자를 제1 컨텐츠 아이템에 포함된 응답 식별자와 매치함으로써 또는 컨텐츠에 대한 제1 요청의 컨텐츠 슬롯 식별자를 제1 컨텐츠 아이템에 포함된 컨텐츠 슬롯 식별자와 매치함으로써) 제1 컨텐츠 아이템이 컨텐츠에 대한 제1 요청과 매치함을 식별하도록 구성된다. 예를 들어, 컨텐츠에 대한 제1 요청을 송신할 때, 요청 생성 모듈은 클라이언트 디바이스로 하여금 컨텐츠 요청에 대한 컨텐츠 슬롯의 컨텐츠 슬롯 식별자를 요청에 포함하게 할 수 있다. 이어서, 컨텐츠 아이템 관리 모듈은 클라이언트 디바이스로 하여금 수신된 제1 컨텐츠 아이템의 컨텐츠 슬롯 식별자를 결정하게 하고, 그 식별자를 그 특정 컨텐츠 슬롯 식별자에 대해 구성된 로컬 캐시의 구성과 매치할 수 있다. 일단 매치되면, 컨텐츠 아이템 관리 모듈은 클라이언트 디바이스로 하여금 수신된 제1 컨텐츠 아이템을 매치하는 컨텐츠 슬롯 식별자를 갖는 로컬 캐시에 저장하게 할 수 있다.
제1 컨텐츠 아이템은 클라이언트 디바이스에 의한 후속 검색을 위해 로컬 캐시에 국부적으로 저장될 수 있다. 일부 구현예들에서, 클라이언트 디바이스에서 실행되는 로컬 캐시 관리 모듈이 클라이언트 디바이스로 하여금 로컬 캐시의 제1 컨텐츠 아이템을 삭제하게 하기 전에 로컬 캐시는 미리 결정된 기간 동안 제1 컨텐츠 아이템(302)을 저장하도록 구성된다. 일부 구현예들에서, 미리 결정된 시간은 원하는대로 구성 가능하며, 예를 들어 20분으로 설정될 수 있다. 예를 들어, 미리 결정된 기간은 클라이언트 디바이스 상에서 실행되는 로컬 캐시 관리 모듈이 클라이언트 디바이스로 하여금 로컬 캐시에 저장된 제1 컨텐츠 아이템에 기인하도록 하는 참신성 점수에 기초할 수 있다. 일부 구현예들에서, 점수는 시간에 기초할 수 있고 (예를 들어, 제1 컨텐츠 아이템가 로컬 캐시에 더 오래 저장될수록, 참신성 점수는 감소한다), 제1 컨텐츠 아이템이 포함하는 데이터의 유형에 기초할 수 있으며, 예를 들어, 국부적으로 캐시된 컨텐츠 아이템의 참신성 점수의 감소율은 제1 컨텐츠 아이템이 포함하는 데이터의 유형에 기초하여 상이할 수 있다 (예를 들어, 기상 정보는 로컬 캐시에 상대적으로 더 오랜 시간 저장되도록 허용될 수 있는 반면, 주가 정보는 주식들의 휘발성으로 인해 상대적으로 적은 시간이 허용될 수 있다). 일부 구현예들에서, 클라이언트 디바이스 상에서 실행되는 로컬 캐시 관리 모듈은 클라이언트 디바이스로 하여금 제1 컨텐츠 아이템의 참신성 점수를 클라이언트 디바이스에 저장된 임계 값과 비교함으로써 로컬 캐시로부터 제1 컨텐츠 아이템을 삭제하게 한다. 예를 들어, 참신성 점수가 임계 값이거나 그 이하이면, 제1 컨텐츠 아이템은 삭제될 수 있다.
방법(400)은 애플리케이션에서 제1 컨텐츠 슬롯을 검출하고(블록(435)), 로컬 캐시로부터 제1 컨텐츠 아이템을 검색하고 제1 컨텐츠 아이템을 디스플레이하며(블록(440)) 그리고 하나 이상의 제2 파라미터들을 포함하는 컨텐츠의 제2 요청을 전송하는(블록(445)) 클라이언트 디바이스를 포함할 수 있다. 예를 들어, 클라이언트 디바이스에서 실행되는 컨텐츠 관리 모듈은 클라이언트 디바이스로 하여금 애플리케이션의 제1 컨텐츠 슬롯의 존재를 검출하게 할 수 있다. 제1 컨텐츠 슬롯은 제1 컨텐츠 슬롯 내에 디스플레이될 컨텐츠 아이템을 수신하도록 구성된 애플리케이션의 디스플레이 내의 위치를 포함할 수 있다. 제1 컨텐츠 슬롯의 검출에 응답하여, 클라이언트 디바이스 상에서 실행되는 컨텐츠 관리 모듈은 클라이언트 디바이스로 하여금 저장된 제1 컨텐츠 아이템을 로컬 캐시로부터 검색하게 하고, 클라이언트 디바이스에 의한 디스플레이를 위해 제1 컨텐츠 아이템을 제1 컨텐츠 슬롯에 삽입하게 할 수 있다. 일부 구현예들에서, 로컬 캐시는 컨텐츠에 대한 제1 요청에 포함된 파라미터들, 예를 들어, 제1 컨텐츠 슬롯의 식별자에 대응하는 파라미터들에 대응하는 구성들을 포함하도록 구성된다. 따라서, 일부 구현예들에서, 로컬 캐시에 저장된 컨텐츠 아이템들은 제1 컨텐츠 슬롯과 호환 가능한 컨텐츠 아이템들 (예를 들어, 제1 컨텐츠 슬롯의 식별자와 매치하는 슬롯 식별자를 포함하는 컨텐츠 아이템들)일 수 있다.
일부 구현예들에서, 클라이언트 디바이스 상에서 실행되는 컨텐츠 관리 모듈은 클라이언트 디바이스로 하여금 제1 컨텐츠 슬롯의 로컬 캐시에 저장된 제1 컨텐츠 아이템을 삽입하여 디스플레이하게 할 수 있다. 일부 구현예들에서, 클라이언트 디바이스 상에서 실행되는 컨텐츠 관리 모듈은 제1 컨텐츠 슬롯에 디스플레이되고 있는 때 또는 디스플레이됨에 응답하여, 클라이언트 디바이스로 하여금 로컬 캐시로부터 제1 컨텐츠 아이템을 삭제하게 할 수 있다. 또한, 일부 구현예들에서, 제1 컨텐츠 아이템이 제1 컨텐츠 슬롯에 디스플레이되고 있는 때 또는 디스플레이됨에 응답하여, 클라이언트 디바이스 상에서 실행되는 컨텐츠 관리 모듈은 클라이언트 디바이스로 하여금 컨텐츠에 대한 제2 또는 후속 요청을 전송하게 할 수 있으며, 이는 전술한 컨텐츠에 대한 제1 요청의 전송과 유사할 수 있다. 일부 구현예들에서, 컨텐츠의 제2 요청은, 컨텐츠 아이템 슬롯의 검출에 응답하여 통상적으로 행해지는 것 대신에, 제1 컨텐츠 슬롯에서의 제1 컨텐츠 아이템의 디스플레이에 응답하여 전송된다.
방법(400)은 제2 파라미터들을 포함하는 제2 요청을 수신하고(블록(450)), 제2 파라미터들에 기초하여 제2 컨텐츠 아이템을 선택하며(블록(455)), 그리고 제2 컨텐츠 아이템을 클라이언트 디바이스에 전송하는(블록(460)) 데이터 프로세싱 시스템을 포함할 수 있다. 일부 구현예들에서, 컨텐츠에 대한 제2 요청은 컨텐츠에 대한 제1 요청의 것과 동일한 또는 유사한 파라미터들을 포함하고, 따라서, 컨텐츠에 대한 제2 요청에 응답하여 데이터 프로세싱 시스템으로부터 수신된 컨텐츠 아이템은 제1 컨텐츠 아이템과 유사한 특성들을 가질 수 있다 (예를 들어, 유사한 주제, 유사한 시각적 특성들, 유사한 크기 등). 일부 구현예들에서, 클라이언트 디바이스가 컨텐츠에 대한 제1 요청을 네트워크로 전송할 때, 클라이언트 디바이스는 컨텐츠에 대한 제2 요청과 관련하여 사용될 그리고 컨텐츠에 대한 제2 요청을 전송할 때 검색을 위한 컨텐츠에 대한 제1 요청과 연관된 하나 이상의 파라미터들을 저장할 수 있다. 일부 구현예들에서, 컨텐츠에 대한 제1 요청의 하나 이상의 파라미터들은 클라이언트 디바이스의 개별 메모리 엘리먼트에 저장될 수 있다.
방법(400)은 로컬 캐시에 제2 컨텐츠 아이템을 수신하고 저장하는 클라이언트 디바이스를 포함할 수 있다(블록(465)). 요청에 응답하여, 클라이언트 디바이스 상에서 실행되는 컨텐츠 관리 모듈은 클라이언트 디바이스로 하여금 (예를 들어, 네트워크를 통해 데이터 프로세싱 시스템으로부터) 제2 컨텐츠 아이템을 수신하게 할 수 있다. 제2 컨텐츠 아이템은 애플리케이션에 의해 호출될 때 검색될 프리페치된 컨텐츠 아이템으로써 로컬 캐시에 저장된다. 컨텐츠에 대한 제1 요청 및 컨텐츠에 대한 제2 요청은 동일하거나 유사한 파라미터들을 포함하기 때문에, 제1 컨텐츠 아이템 및 제2 컨텐츠 아이템은 유사한 특성들을 가질 수 있다. 예를 들어, 제1 컨텐츠 아이템 및 제2 컨텐츠 아이템 둘 모두는 동일한 컨텐츠 슬롯 (예를 들어, 컨텐츠 슬롯)과 호환 가능하고, 유사한 주제 (예를 들어, 스포츠, 정치 등)으로 유도될 수 있고, 동일한 크기를 가질 수 있으며, 사용자 유형 (예를 들어, 남성, 나이든, 전문가 등), 이들의 조합 등으로 유도될 수 있다. 일부 구현예들에서, 제1 컨텐츠 아이템 및 제2 컨텐츠 아이템이 애플리케이션의 동일한 섹션의 텍스트 및 외관으로 원활하게 통합될 수 있도록, 컨텐츠에 대한 요청의 파라미터들은 애플리케이션 디스플레이 환경의 텍스트 및 시각적 컨텐츠에 기초한다.
방법(400)은 애플리케이션 내의 제2 컨텐츠 슬롯을 검출하고(블록(470)), 로컬 캐시로부터 제2 컨텐츠 아이템을 검색하고 제2 컨텐츠 아이템을 디스플레이하며(블록(475)) 하나 이상의 제3 파라미터들을 포함하는 컨텐츠에 대한 제3 요청을 전송(블록(480))하는 클라이언트 디바이스를 포함할 수 있다. 따라서, 방법(400)은 종료 조건이 충족될 때까지 클라이언트 디바이스에서 디스플레이하기 위해 컨텐츠 아이템을 국부적으로 저장하고 프리페치하는 프로세스를 계속할 수 있다.
이와 같이, 클라이언트 디바이스(125) 상에서 실행되는 컨텐츠 관리 모듈(240)이 클라이언트 디바이스(125)에 의한 후속 사용을 위해 컨텐츠 아이템을 프리페치하는 것을 제공하므로, 컨텐츠 아이템이 필요할 때 네트워크(105)를 통해 데이터 프로세싱 시스템(110)과 통신해야 하는 클라이언트 디바이스(125)와는 대조적으로, 프리페치된 컨텐츠 아이템은 클라이언트 디바이스(125)에 의해 국부적으로 그리고 상대적으로 신속하게 액세스될 수 있다. 따라서, 클라이언트 디바이스에 컨텐츠 아이템들을 디스플레이할때의 대기를 감소시킬 수 있다. 또한, 예를 들어, 로컬 캐시(245a)에 저장된 컨텐츠 아이템이 연관된 만료 기간 (예를 들어, 20분)을 가질 수 있기 때문에, 프리페치 컨텐츠에도 불구하고 컨텐츠의 상대적 참신성이 유지될 수 있다.
도 5는 일부 구현예들에 따라 (시스템(110) 및 컨텐츠 요청 모듈(130), 컨텐츠 선택 모듈(135), 및 스크립트 제공자와 같은 컴포넌트들 또는 클라이언트 디바이스(125)를 포함하여) 본 명세서에서 논의된 컴퓨터 시스템들 중 임의의 것을 구현하기 위해 이용(employ)될 수 있는 예증적인 컴퓨터 시스템(500)의 일반적인 아키텍처를 도시한다. 컴퓨터 시스템(500)은 디스플레이를 위해 네트워크(105)를 통해 정보를 제공하기 위해 사용될 수 있다. 도 5의 컴퓨터 시스템(500)은 메모리(525), 하나 이상의 통신 인터페이스들(505) 및 하나 이상의 출력 디바이스들(510) (예를 들어, 하나 이상의 디스플레이 유닛들) 및 하나 이상의 입력 디바이스들(515)에 통신 가능하게 결합된 하나 이상의 프로세서들(520)을 포함한다. 프로세서(520)는 데이터 프로세싱 시스템(110) 또는 컨텐츠 요청 모듈(130) 및 컨텐츠 선택 모듈(135)과 같은 시스템(110)의 다른 컴포넌트들에 포함될 수 있다.
도 5의 컴퓨터 시스템(500)에서, 메모리(525)는 임의의 컴퓨터 판독가능 저장 매체를 포함할 수 있고, 각각의 시스템들에 대해 본 명세서에 기술된 다양한 기능들뿐만 아니라 그것들에 관련된, 그것들에 의해 생성된 또는 통신 인터페이스(들) 또는 입력 디바이스(들)을 (존재하는 경우) 통해 수신된 임의의 데이터를 구현하기 위한 프로세서로 실행 가능한 명령어들과 같은 컴퓨터 명령어들을 저장할 수 있다. 다시 도 1의 시스템(110)을 참조하면, 데이터 프로세싱 시스템(110)은 다른 것들 중에서, 하나 이상의 컨텐츠 유닛들의 재고의 가용성, 하나 이상의 컨텐츠 유닛들의 예약들과 관련된 정보를 저장하기 위한 메모리(525)를 포함할 수 있다. 메모리(525)는 데이터베이스(145)를 포함할 수 있다. 도 5에 도시된 프로세서(들)(520)은 메모리(525)에 저장된 명령어들을 실행하는데 사용될 수 있고, 그렇게 함으로써, 명령어들의 실행에 따라 프로세싱되거나 생성된 다양한 정보를 메모리로부터 또한 판독하거나 메모리에 기록할 수 있다.
도 5에 도시된 컴퓨터 시스템(500)의 프로세서(520)는 명령어들의 실행에 따라 다양한 정보를 전송 또는 수신하도록 통신 인터페이스(들)(505)에 통신 가능하게 또한 연결되거나 통신 인터페이스(들)(505)을 제어할 수 있다. 예를 들어, 통신 인터페이스(들)(505)은 유선 또는 무선 네트워크, 버스, 또는 다른 통신 수단들에 결합될 수 있고 따라서 컴퓨터 시스템(500)이 다른 디바이스들 (예를 들어, 다른 컴퓨터 시스템들)에 정보를 전송하거나 이들로부터 정보를 수신하게 할 수 있다. 도 1의 시스템에서는 명시적으로 도시되지 않았지만, 하나 이상의 통신 인터페이스들은 시스템(500)의 컴포넌트들 간의 정보 흐름을 용이하게 한다. 일부 구현예들에서, 통신 인터페이스(들)은 컴퓨터 시스템(600)의 적어도 일부 양태들에 대한 액세스 포털로써 웹사이트를 제공하도록 (예를 들어, 다양한 하드웨어 컴포넌트들 또는 소프트웨어 컴포넌트들을 통해) 구성될 수 있다. 통신 인터페이스들(505)의 예시들은 사용자가 데이터 프로세싱 시스템(110)과 통신할 수 있는 사용자 인터페이스들 (예를 들어, 웹 페이지들)을 포함한다.
도 5에 도시된 컴퓨터 시스템(500)의 출력 디바이스들(510)이, 예를 들어 다양한 정보가 명령어들의 실행과 관련하여 보여지거나 감지될 수 있도록 제공될 수 있다. 예를 들어, 사용자가 수동 조정들 이행하거나, 선택들을 하거나, 데이터를 입력하거나, 또는 명령어들의 실행 동안 프로세서와 다양한 방식들로 인터랙팅할 수 있도록 입력 디바이스(들)(515)이 제공될 수 있다. 본 명세서에서 논의된 다양한 시스템들에 이용될 수 있는 일반적인 컴퓨터 시스템 아키텍처에 관한 추가 정보가 더 제공된다.
본 명세서에서 기술된 발명 및 동작들의 구현예들은 본 명세서에 개시된 구조들 및 그들의 구조적 등가물들을 포함하는 하드웨어, 펌웨어, 컴퓨터 소프트웨어에서, 또는 디지털 전자 회로에서, 또는 그들 중 하나 이상의 조합들에서 구현될 수 있다. 본 명세서에 개시된 발명의 구현예들은 하나 이상의 컴퓨터 프로그램들, 즉, 데이터 프로세싱 장치에 의한 실행을 위해 또는 데이터 프로세싱 장치의 동작을 제어하기 위해 컴퓨터 저장 매체 상에 인코딩된, 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들로 구현될 수 있다. 프로그램 명령어들은 인위적으로 생성된 전파된 신호, 예를 들어 데이터 프로세싱 장치에 의한 실행을 위해 적절한 수신기 장치로의 전송을 위해 정보를 인코딩하도록 생성된 기계로-생성된 전기, 광학 또는 전자기 신호, 상에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터-판독가능 저장 디바이스, 컴퓨터 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스, 또는 이들 중 하나 이상의 조합일 수 있거나 또는 이들에 포함될 수 있다. 또한 컴퓨터 저장 매체는 전파된 신호가 아닌 반면에, 컴퓨터 저장 매체는 인위적으로 생성된 전파된 신호에 인코딩된 컴퓨터 프로그램 명령어들의 소스 또는 목적지일 수 있다. 컴퓨터 저장 매체는 또한 하나 이상의 개별 물리적 컴포넌트들 또는 매체 (예를 들어, 다수의 CD들, 디스크들, 또는 다른 저장 디바이스들)일 수 있거나 또는 이들에 포함될 수 있다.
본 명세서에 개시된 구성들은 인터넷 연결을 보다 전통적인 (예를 들어, 케이블, 위성, 공중(over-the-air) 또는 다른 신호들을 통해 수신된) 텔레비전 프로그래밍 소스들과 통합하도록 구성된 프로세싱 모듈을 포함할 수 있는 스마트 텔레비전 모듈 (또는 연결된 텔레비전 모듈, 하이브리드 텔레비전 모듈 등) 상에 구현될 수 있다. 스마트 텔레비전 모듈은 텔레비전 세트에 물리적으로 통합될 수 있거나 셋톱 박스, 블루 레이 또는 다른 디지털 미디어 플레이어, 게임 콘솔, 호텔 텔레비전 시스템 및 다른 동반(companion) 디바이스와 같은 개별 디바이스를 포함할 수 있다. 스마트 TV 모듈은 시청자들이 웹, 로컬 케이블 TV 채널, 위성 TV 채널 또는 로컬 하드 드라이브 상의 비디오, 영화, 사진 및 다른 컨텐츠를 검색하고 찾을 수 있도록 구성될 수 있다. 셋톱 박스(STB) 또는 셋톱 유닛(STU)은 튜너를 포함하고 텔레비전 세트 및 외부 신호 소스에 연결하여 신호를 이후에 TV 화면 또는 다른 디스플레이 디바이스에 디스플레이될 수 있는 컨텐츠 신호로 바꿀 수 있는 정보 기기 디바이스를 포함할 수 있다. 스마트 텔레비전 모듈은 웹 브라우저 및 복수의 스트리밍 매체 서비스들, 연결된 케이블 또는 위성 매체 소스, 다른 웹 "채널들”과 같은 복수의 상이한 애플리케이션들에 대한 아이콘들을 포함하는 홈 화면 또는 최상위 레벨 화면을 제공하도록 구성될 수 있다. 스마트 텔레비전 모듈은 또한 전자 프로그래밍 가이드를 사용자에게 제공하도록 구성될 수 있다. 스마트 텔레비전 모듈에 대한 동반 어플리케이션은 사용 가능 프로그램에 관한 부가적인 정보를 사용자에게 제공하기 위해 모바일 컴퓨팅 디바이스 상에서 동작 가능하며, 이로써 사용자가 스마트 텔레비전 모듈 등을 제어할 수 있도록 한다. 대안적인 구현예들에서, 구성들은 랩탑 컴퓨터 또는 다른 개인용 컴퓨터, 스마트폰, 다른 모바일 폰, 핸드헬드 컴퓨터, 태블릿 PC, 또는 다른 컴퓨팅 디바이스 상에 구현될 수 있다.
본 명세서에 기술된 동작들은 하나 이상의 컴퓨터 판독가능 저장 디바이스들에 저장되거나 다른 소스들로부터 수신된 데이터에 대한 데이터 프로세싱 장치에 의해 수행되는 동작들로써 구현될 수 있다.
용어들 "데이터 프로세싱 장치", "데이터 프로세싱 시스템", "사용자 디바이스" 또는 "컴퓨팅 디바이스"는 예를 들어, 프로그래밍 가능한 프로세서, 컴퓨터, 시스템 온 칩(system on chip), 또는 다수의 것들, 또는 이들의 조합들을 포함하는, 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스들 및 기계들을 아우른다(encompass). 상기 디바이스는 특수 목적 논리 회로, 예를 들어 FPGA 또는 ASIC을 포함할 수 있다. 상기 장치는, 하드웨어 이외에, 문제의 컴퓨터 프로그램을 위한 실행 환경을 제작하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임(cross-platform runtime) 환경, 가상 기계, 또는 그들 중 하나 이상의 조합을 구성하는 코드, 를 또한 포함할 수 있다. 상기 장치 및 실행 환경은 웹 서비스들, 분산 컴퓨팅 및 그리드 컴퓨팅 기반구조들과 같은, 다양한 상이한 컴퓨팅 모델 기반구조들을 실현할 수 있다. 컨텐츠 요청 모듈(130) 및 컨텐츠 선택 모듈(135)은 하나 이상의 데이터 프로세싱 장치들, 컴퓨팅 디바이스들 또는 프로세서들을 포함하거나 공유할 수 있다.
컴퓨터 프로그램은 (프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 스크립트, 또는 코드로 또한 알려짐) 컴파일된 또는 해석된 언어들, 선언적 또는 절차적 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립형 프로그램을 또는 모듈, 컴포넌트, 서브루틴, 객체, 또는 컴퓨팅 환경에서의 사용을 위해 적절한 다른 유닛을 포함하는 임의의 형태로 작성될 수 있다. 컴퓨터 프로그램은 파일 시스템 내의 파일과 대응할 수 있으나 반드시 그런 것은 아니다. 컴퓨터 프로그램은 다른 프로그램들 또는 데이터 (예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트들), 문제의 프로그램 전용의 단일 파일, 또는 다수의 조정된 파일들 (예를 들어, 하나 이상의 모듈들, 하위 프로그램들, 또는 코드의 일부들을 저장하는 파일들)을 보유하는 파일의 일부에 저장될 수 있다. 컴퓨터 프로그램은, 하나의 컴퓨터 또는 한 자리(site)에 위치되거나 또는 다수의 자리들에 분산되고 그리고 통신 네트워크에 의해 상호연결된 다수의 컴퓨터들 상에서 실행되도록 배치될 수 있다.
본 명세서에 기술된 프로세스들 및 논리 흐름들은 입력 데이터를 동작시키고 출력을 생성함으로써 액션들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그램 가능한 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 특수 목적 논리 회로, 예를 들어, FPGA 또는 ASIC에 의해 또한 수행될 수 있고 장치들은 특수 목적 논리 회로로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적절한 프로세서들은 예를 들어, 범용 및 특수 목적 마이크로프로세서들 둘 모두 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령어들과 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들에 따라 액션들을 수행하기 위한 프로세서이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들 (예를 들어, 자기, 광 자기 디스크들 또는 광학 디스크들)로부터 데이터를 수신하거나 저장 디바이스들로 데이터를 전송하기 위해 저장 디바이스들에 동작 가능하게 결합되거나 저장 디바이스들을 포함할 것이다. 그러나 컴퓨터에는 그러한 디바이스들이 필요 없다. 또한, 컴퓨터는 다른 디바이스, 예를 들어, 모바일 폰, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스(예를 들어, 범용 직렬 버스(USB) 플래시 드라이브)에 내장될 수 있다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적절한 디바이스들은 모든 형태의 비-휘발성 메모리, 매체, 메모리 디바이스들을 포함하며, 상기 메모리 디바이스들은 반도체 메모리 디바이스들 예를 들어, EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예를 들어, 내부 하드 디스크들 또는 분리성 디스크들; 광 자기 디스크들; 및 CD ROM 및 DVD-ROM 디스크들이다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보충되거나 그 안에 포함(incorporate)될 수 있다.
사용자와의 인터랙션을 제공하기 위해, 본 명세서에서 기술된 발명의 구현예들은 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스 예를 들어, 음극선관(CRT), 플라즈마 또는 액정 디스플레이(LCD) 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스, 예를 들어, 마우스 또는 트랙볼을 갖는 컴퓨터 상에서 구현될 수 있다. 다른 종류의 디바이스들이 사용자와의 인터랙션을 제공하는데 사용될 수 있다; 예를 들어, 사용자에게 제공되는 피드백은 시각적 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각 피드백을 포함할 수 있다; 그리고 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가로, 예를 들어, 웹브라우저로부터 수신된 요청들에 응답하여 사용자의 클라이언트 디바이스 상의 웹 브라우저에 웹 페이지들을 송신함으로써, 컴퓨터는 사용자에 의해 사용되는 디바이스로 문서들을 보내고 그로부터 문서들을 수신하여 사용자와 인터랙팅할 수 있다.
본 명세서에 기술된 발명의 구현예들은 컴퓨팅 시스템 내에서 구현될 수 있으며, 상기 컴퓨팅 시스템은 백 엔드 컴포넌트, 예를 들어 데이터 서버, 를 포함하거나 미들웨어 컴포넌트, 예를 들어 애플리케이션 서버, 를 포함하거나 프론트 엔드 컴포넌트, 예를 들어 그래픽 사용자 인터페이스를 갖는 클라이언트 컴퓨터 또는 사용자가 본 명세서에 기술된 발명의 구현예와 인터랙팅할 수 있는 웹 브라우저, 를 포함하거나 또는 하나 이상의 그러한 백 엔드, 미들웨어, 프론트 엔드 컴포넌트들의 조합을 포함할 수 있다. 시스템의 컴포넌트들은 디지털 데이터 통신 예를 들어, 통신 네트워크, 의 임의의 형태 또는 매체에 의해 상호연결될 수 있다. 통신 네트워크들의 예시들은 근거리 통신망("LAN") 및 광역 통신망("WAN"), 인터-네트워크 (예를 들어, 인터넷) 및 피어-투-피어 네트워크들 (예를 들어, 알맞은 피어-투-피어 네트워크들)을 포함할 수 있다.
시스템(100) 또는 시스템(500)과 같은 컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 예를 들어, 데이터 프로세싱 시스템(110)은 하나 이상의 데이터 센터들 또는 서버 팜(farm)들에 하나 이상의 서버들을 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있고 전형적으로 통신 네트워크를 통해 인터랙팅한다. 클라이언트와 서버의 관계는 각각의 컴퓨터들에서 작동하고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해서 발생한다. 일부 구현예들에서, 서버는 데이터 (예를 들어, HTML 페이지)를 클라이언트 디바이스에 전송한다 (예를 들어, 클라이언트 디바이스와 인터랙팅하는 사용자에게 데이터를 디스플레이하고 사용자로부터 사용자 입력을 수신하기 위한 목적으로). 클라이언트 디바이스에서 생성된 데이터 (예를 들어, 사용자 인터랙션의 결과)는 서버의 클라이언트 디바이스로부터 수신될 수 있다.
본 명세서는 많은 특정 구현예 세부 사항들을 포함하지만, 이들이 발명들의 범위 또는 청구될 수 있는 범위의 제한들로 해석되어서는 안되며, 오히려 본 명세서에 기술된 시스템들 및 방법들의 특정한 구현예들에 특정적인 구성들의 설명들로 해석되어야한다. 별도 구현예들의 컨텍스트에서 본 명세서에 기술된 일정 구성들은 단일 구현으로 조합하여 또한 구현될 수 있다. 반대로, 단일 구현의 컨텍스트에서 기술된 다양한 구성들은 다수의 구현 구현예들에서 개별적으로 또는 임의의 적절한 하위조합으로 또한 구현될 수 있다. 또한, 구성들이 일정 조합들로 작용(acting)하는 것으로 기술되고 그렇게 초기에 청구될 수 있지만, 일부 경우들에서 청구된 조합으로부터의 하나 이상의 구성들은 조합으로부터 제거될 수 있고, 청구된 조합은 하위조합 또는 하위조합의 변형으로 유도될 수 있다.
유사하게, 동작들이 특정한 순서로 도면들에 도시되어 있지만, 바람직한 결과들을 달성하기 위해 그 동작들이 도시된 순서 또는 순차적 인 순서로 수행되거나 도시된 모든 동작들이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 일부 경우들에서, 청구항들에 기재된 액션들은 상이한 순서로 수행될 수 있으며 여전히 바람직한 결과들을 달성할 수 있다. 추가로, 첨부된 도면들에 도시된 프로세스들은 바람직한 결과들을 달성하기 위해 도시된 특정한 순서 또는 순차적 순서를 반드시 필요로 하지는 않는다.
일정 상황들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 구현예들에서 다양한 시스템 컴포넌트들의 분리는 모든 구현예들에서 그러한 분리를 필요로 하는 것으로 이해되어서는 안되며, 기술된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 물에 함께 통합되거나 다수의 소프트웨어 물들로 패키징될 수 있음을 이해해야한다. 예를 들어, 컨텐츠 요청 모듈(130) 및 컨텐츠 선택 모듈(135)은 데이터 프로세싱 시스템(110)의 부분, 단일 모듈, 하나 이상의 프로세싱 모듈들을 갖는 논리 디바이스, 하나 이상의 서버들 또는 검색 엔진의 부분일 수 있다.
몇몇 예증적 구현예들을 기술하였지만, 이들은 예증적이며 제한적인 것은 아니며, 예시로써 제시되었다. 특히, 비록 본 명세서에 제시된 많은 예시들이 방법 행동들 또는 시스템 엘리먼트들의 특정 조합들을 포함하지만, 그러한 행동들 및 엘리먼트들은 동일한 목적들을 달성하기 위해 다른 방식들로 조합될 수 있다. 하나의 구현예와 관련해서만 논의된 행동들, 엘리먼트들 및 구성들은 다른 구현예들 또는 구현예들의 유사한 역할로부터 배제되도록 의도되지 않는다.
본 명세서에 사용된 어구 및 전문용어는 설명의 목적을 위한 것이며 제한적인 것으로 간주되어서는 안된다. 본 명세서의 "포함하는(including)" "포함하는(comprising)" "가지는(having)" "내포하는(containing)" "포함하는(involving)" "특징으로 하는(characterized by)" "특징으로 하는(characterized in that)" 및 그 변형들의 사용은, 이후에 배타적으로 열거된 항목들로 구성된 대체 구현예들 뿐만 아니라 이후에 열거된 항목들, 그 등가물, 및 추가 항목들을 아우를 것이다. 일 구현예에서, 본 명세서에 기술된 시스템들 및 방법들은 기술된 컴포넌트들, 엘리먼트들 또는 행동들 중 하나 또는 하나 이상의 각 조합, 또는 모두로 구성된다.
단수로 지칭된 본 명세서의 시스템들 및 방법들의 구현예들 또는 엘리먼트들 또는 행동들에 대한 임의의 참조들은 복수의 이들 엘리먼트들을 포함하는 구현예들을 또한 포함할 수 있으며, 임의의 구현예 또는 엘리먼트 또는 행동에 대한 임의의 복수의 참조들은 단일 엘리먼트만을 포함하는 구현예들을 또한 포함할 수 있다. 단수 또는 복수 형태의 참조들은 현재 개시된 시스템들 또는 방법들, 그들의 컴포넌트들, 행동들 또는 엘리먼트들을 단일 또는 복수 구성들로 제한하도록 의도된 것이 아니다. 정보, 행동 또는 엘리먼트에 기초하고 있는 임의의 행동 또는 엘리먼트에 대한 참조들은 행동 또는 엘리먼트가 임의의 정보, 행동 또는 엘리먼트에 적어도 부분적으로 기초한 구현예들을 포함할 수 있다.
본 명세서에 개시된 임의의 구현예는 임의의 다른 구현예와 조합될 수 있고, "구현예", "일부 구현예들", "대안적 구현예", "다양한 구현예", "일 구현예"를 지칭하며, 그와 같은 것들은 반드시 상호 배타적인 것은 아니며 구현예와 관련하여 기술된 특정한 구성, 구조 또는 특성은 적어도 하나의 구현예 또는 실시예에 포함될 수 있음을 표시하도록 의도되었다. 본 명세서에 사용된 이러한 용어들은 반드시 모두 동일한 구현예를 지칭하는 것은 아니다. 임의의 구현예는 본 명세서에 개시된 양태들 및 구현예들과 일치(consistent with)하는 임의의 방식으로 다른 구현예와, 포괄적으로 또는 배타적으로, 조합될 수 있다.
"또는"에 대한 참조들은 포괄적인 것으로 해석될 수 있어, "또는"을 사용하여 기술된 임의의 용어들은 기술된 용어들 중 임의의 단일, 하나 이상, 및 모두를 표시할 수 있다.
도면들, 상세한 설명 또는 임의의 청구항의 기법적 구성들이 참조 부호들 뒤에 있는 경우, 도면들, 상세한 설명 및 청구항들의 명료성을 높이기 위해 상기 참조 부호들이 포함되었다. 따라서, 참조 부호들 또는 그것들의 부재는 임의의 청구항 엘리먼트들의 범위에 대해 어떠한 제한 효과도 가지지 않는다.
본 명세서에 기술된 시스템들 및 방법들은 그 특성들로부터 벗어남 없이 다른 특정 형태들로 구현될 수 있다. 본 명세서에서 제공되는 예시들이 정보 리소스들의 컨텐츠의 디스플레이를 제어하는 것에 관한 것이지만, 본 명세서에 기술된 시스템들 및 방법들은 다른 환경들에 적용될 수 있다. 전술한 구현예들은 기술된 시스템들 및 방법들의 제한이기보다는 예증적인 것이다. 본 명세서에 기술된 시스템들 및 방법들의 범위는 따라서, 전술한 설명보다는, 첨부된 청구항들에 의해 표시되며, 청구항들의 의미 및 균등범위 내에서의 변화들이 그 안에 포함된다.

Claims (20)

  1. 컴퓨팅 디바이스들 상에서 실행되는 애플리케이션들에 의한 디스플레이를 위해 동적으로 로딩된 컨텐츠 아이템들을 프리페치(prefetch)하기 위한 방법으로서, 상기 방법은,
    하나 이상의 데이터 프로세서를 포함하는 컴퓨팅 디바이스 상에서 실행되는 애플리케이션에 의해, 서버로, 상기 애플리케이션의 환경 내에 디스플레이하라는 제1 컨텐츠 요청을 전송하는 단계, 상기 제1 컨텐츠 요청은 디스플레이를 위한 제1 컨텐츠 아이템을 결정하는데 사용될 제1 파라미터를 포함하고;
    상기 컴퓨팅 디바이스에 의해, 연관된 메모리 엘리먼트(element)에 상기 제1 파라미터를 저장하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 제1 컨텐츠 아이템을 수신하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 컴퓨팅 디바이스 상에서 실행되는 상기 애플리케이션의 환경 내의 제1 컨텐츠 슬롯에 상기 제1 컨텐츠 아이템을 디스플레이하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 제1 컨텐츠 아이템을 디스플레이하는 것에 응답하여, 상기 메모리 엘리먼트로부터 상기 제1 컨텐츠 요청의 상기 제1 파라미터를 검색하는 단계;
    상기 컴퓨팅 디바이스에 의해 서버로, 상기 제1 컨텐츠 요청의 상기 검색된 제1 파라미터를 포함하는 후속(follow on) 컨텐츠 요청을 전송하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 후속 컨텐츠 요청에 응답하여 후속 컨텐츠 아이템을 수신하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 애플리케이션에 특정된(specific) 로컬 캐시 구조에 상기 후속 컨텐츠 아이템을 저장하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 애플리케이션의 환경 내에 디스플레이하라는 제2 컨텐츠 요청을 전송하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 제2 컨텐츠 요청에 응답하여, 상기 로컬 캐시 구조로부터 상기 후속 컨텐츠 아이템을 검색하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 상기 제2 컨텐츠 요청에 응답하여, 상기 컴퓨팅 디바이스 상의 상기 애플리케이션의 환경 내의 제2 컨텐츠 슬롯에 상기 후속 컨텐츠 아이템을 디스플레이하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 청구항 1에 있어서, 상기 후속 컨텐츠 요청을 전송하는 단계는 상기 제1 컨텐츠 아이템을 디스플레이 하는 시점 또는 이에 응답하여 이루어지는 것을 특징으로 하는 방법.
  3. 청구항 2에 있어서, 상기 후속 컨텐츠 요청은 상기 컴퓨팅 디바이스 상의 상기 제1 컨텐츠 아이템의 디스플레이를 끝냄(ending)에 응답하여 전송되거나, 또는 상기 컴퓨팅 디바이스 상의 상기 제1 컨텐츠 아이템의 디스플레이가 끝냄에 응답하여 상기 제1 컨텐츠 아이템은 삭제되는 것을 특징으로 하는 방법.
  4. 청구항 1에 있어서, 상기 후속 컨텐츠 아이템은 만료 시간이 할당되고, 상기 후속 컨텐츠 아이템은 상기 로컬 캐시 구조로부터 검색되며 상기 후속 컨텐츠 아이템이 만료되지 않은 경우에만 디스플레이되는 것을 특징으로 하는 방법.
  5. 청구항 4에 있어서, 상기 만료 시간은 사용자에 의해 구성 가능한 것을 특징으로 하는 방법.
  6. 청구항 1에 있어서, 상기 제1 컨텐츠 아이템은 상기 후속 컨텐츠 아이템과 상이한 것을 특징으로 하는 방법.
  7. 청구항 1에 있어서,
    상기 컴퓨팅 디바이스에 의해 상기 서버로, 상기 애플리케이션이 개시(launch)될 때 초기 컨텐츠 아이템에 대한 초기 요청을 전송하는 단계, 상기 초기 컨텐츠 아이템에 대한 상기 초기 요청은 상기 초기 컨텐츠 아이템을 결정하기 위해 상기 서버에 의해 사용될 초기 파라미터를 포함하며;
    상기 컴퓨팅 디바이스에 의해 상기 서버로부터, 상기 초기 컨텐츠 아이템을 수신하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 초기 컨텐츠 아이템을 상기 로컬 캐시 구조에 저장하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 애플리케이션이 개시된 후 컨텐츠를 디스플레이하라는 초기 요청에 응답하여, 상기 로컬 캐시 구조로부터 상기 초기 컨텐츠 아이템을 검색하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 상기 컴퓨팅 디바이스 상의 애플리케이션 환경 내에 상기 초기 컨텐츠 아이템을 디스플레이하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 청구항 1에 있어서, 상기 로컬 캐시 구조는 상기 애플리케이션이 종료될 때 유지되는 것을 특징으로 하는 방법.
  9. 청구항 1에 있어서, 상기 로컬 캐시 구조는 상기 애플리케이션에 의해 상기 서버로 전송된 컨텐츠 아이템들에 대한 요청들에 포함된 파라미터들에 따라 분류된 복수의 캐시들을 포함하고, 상기 후속 컨텐츠 아이템은 상기 후속 컨텐츠 요청에 포함된 상기 제1 파라미터에 따라 분류된 상기 복수의 캐시들 중 하나에 저장되는 것을 특징으로 하는 방법.
  10. 청구항 1에 있어서, 상기 로컬 캐시 구조는 상기 컴퓨팅 디바이스 상에 영구적으로 저장되어, 상기 로컬 캐시 구조에 저장된 컨텐츠 아이템들은 상기 애플리케이션 재개시 이후 상기 애플리케이션에 사용 가능한 것을 특징으로 하는 방법.
  11. 청구항 1에 있어서, 상기 애플리케이션은 디스플레이 페이지 상에 복수의 컨텐츠 아이템들의 디스플레이를 지원하도록 구성되고, 각 컨텐츠 아이템은 컨텐츠 아이템 슬롯을 통해 디스플레이되며 그리고 각 컨텐츠 아이템 슬롯은 별도의 로컬 캐시 구조가 할당되는 것을 특징으로 하는 방법.
  12. 청구항 1에 있어서, 상기 제1 파라미터는 상기 컴퓨팅 디바이스의 위치 또는 상기 컴퓨팅 디바이스에 의해 사용되는 네트워크 연결 유형 중 적어도 하나의 표시를 포함하는 것을 특징으로 하는 방법.
  13. 컴퓨팅 디바이스들 상에서 실행되는 애플리케이션들에 의한 디스플레이를 위해 동적으로 로딩된 컨텐츠 아이템들을 프리페치하기 위한 시스템으로서:
    프로세서; 및
    상기 프로세서에 결합된 메모리를 포함하고, 상기 메모리는 컴퓨터로 실행 가능한 명령어들을 저장하며, 상기 명령어들은 상기 프로세서에 의해 실행시 상기 프로세서로 하여금:
    애플리케이션의 환경 내에 디스플레이하라는 제1 컨텐츠 요청을 전송하고, 상기 제1 컨텐츠 요청은 디스플레이를 위한 제1 컨텐츠 아이템을 결정하는데 사용될 제1 파라미터를 포함하고;
    연관된 메모리 엘리먼트에 상기 제1 파라미터를 저장하고;
    상기 제1 컨텐츠 아이템을 수신하고;
    상기 컴퓨팅 디바이스 상에서 실행되는 상기 애플리케이션의 환경 내의 제1 컨텐츠 슬롯에 상기 제1 컨텐츠 아이템을 디스플레이하며;
    상기 제1 컨텐츠 아이템을 디스플레이하는 것에 응답하여, 상기 메모리 엘리먼트로부터 상기 제1 컨텐츠 요청의 상기 제1 파라미터를 검색하고;
    상기 제1 컨텐츠 요청의 상기 검색된 제1 파라미터를 포함하는 후속 컨텐츠 요청을 전송하고;
    상기 후속 컨텐츠 요청에 응답하여 후속 컨텐츠 아이템을 수신하고;
    상기 애플리케이션에 특정된 로컬 캐시 구조에 상기 후속 컨텐츠 아이템을 저장하며;
    상기 애플리케이션의 환경 내에 디스플레이하라는 제2 컨텐츠 요청을 전송하고;
    상기 제2 컨텐츠 요청에 응답하여, 상기 로컬 캐시 구조로부터 상기 후속 컨텐츠 아이템을 검색하며; 그리고
    상기 제2 컨텐츠 요청에 응답하여, 상기 컴퓨팅 디바이스 상의 상기 애플리케이션의환경 내의 제2 컨텐츠 슬롯에 상기 후속 컨텐츠 아이템을 디스플레이하게 하는 것을 특징으로 하는 시스템.
  14. 청구항 13에 있어서, 상기 후속 컨텐츠 요청을 전송하는 단계는 상기 제1 컨텐츠 아이템을 디스플레이 하는 시점 또는 이에 응답하여 이루어지는 것을 특징으로 하는 시스템.
  15. 청구항 14에 있어서, 상기 후속 컨텐츠 요청은 상기 컴퓨팅 디바이스 상의 상기 제1 컨텐츠 아이템의 디스플레이를 끝냄에 응답하여 전송되거나, 또는 상기 컴퓨팅 디바이스 상의 상기 제1 컨텐츠 아이템의 디스플레이가 끝냄에 응답하여 상기 제1 컨텐츠 아이템은 삭제되는 것을 특징으로 하는 시스템.
  16. 청구항 13에 있어서, 상기 후속 컨텐츠 아이템은 만료 시간이 할당되고, 상기 후속 컨텐츠 아이템은 상기 로컬 캐시 구조로부터 검색되며 상기 후속 컨텐츠 아이템이 만료되지 않은 경우에만 디스플레이되는 것을 특징으로 하는 시스템.
  17. 청구항 16에 있어서, 상기 만료 시간은 사용자에 의해 구성 가능한 것을 특징으로 하는 시스템.
  18. 청구항 13에 있어서, 상기 제1 컨텐츠 아이템은 상기 후속 컨텐츠 아이템과 상이한 것을 특징으로 하는 시스템.
  19. 청구항 13에 있어서, 상기 메모리는 상기 컴퓨터로 실행 가능한 명령어들을 저장하고, 상기 명령어들은 상기 프로세서에 의해 실행시 상기 프로세서로 하여금:
    상기 애플리케이션이 개시될 때 초기 컨텐츠 아이템에 대한 초기 요청을 전송하고, 상기 초기 컨텐츠 아이템에 대한 상기 초기 요청은 상기 초기 컨텐츠 아이템을 결정하기 위해 사용될 초기 파라미터를 포함하며;
    상기 초기 컨텐츠 아이템을 수신하고;
    상기 초기 컨텐츠 아이템을 상기 로컬 캐시 구조에 저장하고;
    상기 애플리케이션이 개시된 후 컨텐츠를 디스플레이하라는 초기 요청에 응답하여, 상기 로컬 캐시 구조로부터 상기 초기 컨텐츠 아이템을 검색하며; 그리고
    상기 컴퓨팅 디바이스 상의 상기 애플리케이션 환경 내에 상기 초기 컨텐츠 아이템을 디스플레이하도록 함을 더 포함하는 것을 특징으로 하는 시스템.
  20. 청구항 13에 있어서, 상기 로컬 캐시 구조는 전송된 컨텐츠 아이템 요청들에 포함된 파라미터들에 따라 분류된 복수의 캐시들을 포함하고, 상기 후속 컨텐츠 아이템은 상기 후속 컨텐츠 요청에 포함된 상기 제1 파라미터에 따라 분류된 상기 복수의 캐시들 중 하나에 저장되는 것을 특징으로 하는 시스템.
KR1020187025143A 2016-12-13 2017-12-12 컨텐츠 아이템들 프리페치용 시스템들 및 방법들 KR102128996B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
PCT/US2016/066415 WO2018111246A1 (en) 2016-12-13 2016-12-13 Systems and methods for prefetching content items
USPCT/US2016/066415 2016-12-13
PCT/US2017/065843 WO2018111892A1 (en) 2016-12-13 2017-12-12 Systems and methods for prefetching content items

Publications (2)

Publication Number Publication Date
KR20180107213A KR20180107213A (ko) 2018-10-01
KR102128996B1 true KR102128996B1 (ko) 2020-07-01

Family

ID=57708827

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187025143A KR102128996B1 (ko) 2016-12-13 2017-12-12 컨텐츠 아이템들 프리페치용 시스템들 및 방법들

Country Status (6)

Country Link
US (2) US10565118B2 (ko)
EP (1) EP3414685B1 (ko)
JP (1) JP6616014B2 (ko)
KR (1) KR102128996B1 (ko)
CN (2) CN108701159B (ko)
WO (2) WO2018111246A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11102153B2 (en) * 2019-05-05 2021-08-24 Microsoft Technology Licensing, Llc Multistate presence and responsiveness tracking and indication
CN110502699B (zh) * 2019-08-27 2022-06-03 百度在线网络技术(北京)有限公司 用于获取信息的方法和装置
CN112540761B (zh) * 2020-12-11 2024-06-25 网易(杭州)网络有限公司 控件的显示控制方法和装置
CN112764910B (zh) * 2021-01-27 2024-05-10 携程旅游信息技术(上海)有限公司 处理差异任务响应的方法、系统、设备及存储介质
US20230229756A1 (en) * 2022-01-18 2023-07-20 Vmware, Inc. Rapid launch of secure executables in a virtualized environment

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675202B1 (en) * 2000-05-30 2004-01-06 Cary D. Perttunen Methods, articles and apparatus for providing a browsing session
JP2003153229A (ja) * 2001-11-15 2003-05-23 Mitsubishi Electric Corp データ通信装置及びデータ通信方法
CN101460945B (zh) * 2004-09-27 2012-03-28 Bt网络解决方案有限责任公司 用于增进式浏览的方法和装置
CN100378687C (zh) * 2005-08-25 2008-04-02 北京中星微电子有限公司 一种高速缓存预取模块及其方法
CN101042695A (zh) * 2006-03-20 2007-09-26 腾讯科技(深圳)有限公司 一种搜索结果页面缩略显示方法及系统
US7657611B2 (en) * 2006-10-30 2010-02-02 Google Inc. Content request optimization
US20080201332A1 (en) * 2007-02-20 2008-08-21 Souders Steven K System and method for preloading content on the basis of user context
JP2009140119A (ja) * 2007-12-05 2009-06-25 Sharp Corp グラフィック表示装置及びグラフィック表示方法
US8745341B2 (en) * 2008-01-15 2014-06-03 Red Hat, Inc. Web server cache pre-fetching
CN101325602A (zh) * 2008-07-30 2008-12-17 广州市动景计算机科技有限公司 一种微浏览器智能预读网页的方法及系统
WO2011075886A1 (en) * 2009-12-22 2011-06-30 Google Inc. Display of advertisements
CN101777068B (zh) * 2009-12-31 2015-07-22 优视科技有限公司 一种用于移动通讯设备终端的网页页面预读及整合浏览系统及其应用方法
US8473688B2 (en) * 2010-03-26 2013-06-25 Microsoft Corporation Anticipatory response pre-caching
EP2487609A1 (en) * 2011-02-07 2012-08-15 Alcatel Lucent A cache manager for segmented multimedia and corresponding method for cache management
US9294582B2 (en) * 2011-12-16 2016-03-22 Microsoft Technology Licensing, Llc Application-driven CDN pre-caching
US9607097B2 (en) * 2012-03-26 2017-03-28 Excalibur Ip, Llc Method and system for edge server cache
US9032159B2 (en) * 2012-06-27 2015-05-12 Via Technologies, Inc. Data prefetcher with complex stride predictor
US9449094B2 (en) * 2012-07-13 2016-09-20 Google Inc. Navigating among content items in a set
US8984091B1 (en) * 2012-08-03 2015-03-17 Google Inc. Providing content based on timestamp of last request for content
CN103678307B (zh) * 2012-08-31 2016-07-13 腾讯科技(深圳)有限公司 页面显示方法及客户端
US10095663B2 (en) * 2012-11-14 2018-10-09 Amazon Technologies, Inc. Delivery and display of page previews during page retrieval events
US20180068347A1 (en) * 2012-12-11 2018-03-08 Roshan Fernandes Generating a browsing area of a web browser
CN103077129B (zh) * 2012-12-31 2016-07-13 上海算芯微电子有限公司 信息处理方法与装置
CN103617164B (zh) * 2013-10-22 2017-02-01 小米科技有限责任公司 网页预取方法、装置及终端设备
CN104778172B (zh) * 2014-01-10 2019-04-19 腾讯科技(深圳)有限公司 网页信息的预取处理方法、装置及对应的网页浏览装置
CN105095107B (zh) * 2014-05-04 2019-07-16 腾讯科技(深圳)有限公司 清理缓存数据的方法及装置
US9420351B2 (en) * 2014-06-06 2016-08-16 Google Inc. Systems and methods for prefetching online content items for low latency display to a user
KR102210409B1 (ko) * 2015-01-02 2021-01-29 에스케이텔레콤 주식회사 라이브 스트리밍 컨텐츠 제공 방법, 이를 위한 라이브 스트리밍 캐시 장치 및 이를 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체
US10867119B1 (en) * 2016-03-29 2020-12-15 Amazon Technologies, Inc. Thumbnail image generation

Also Published As

Publication number Publication date
CN108701159B (zh) 2022-05-13
US20190163638A1 (en) 2019-05-30
EP3414685A1 (en) 2018-12-19
US10565118B2 (en) 2020-02-18
WO2018111246A1 (en) 2018-06-21
JP2019517041A (ja) 2019-06-20
JP6616014B2 (ja) 2019-12-04
US11354245B2 (en) 2022-06-07
EP3414685B1 (en) 2019-11-27
KR20180107213A (ko) 2018-10-01
US20200183845A1 (en) 2020-06-11
WO2018111892A1 (en) 2018-06-21
CN108701159A (zh) 2018-10-23
CN114968513A (zh) 2022-08-30

Similar Documents

Publication Publication Date Title
KR102128996B1 (ko) 컨텐츠 아이템들 프리페치용 시스템들 및 방법들
US10838609B2 (en) Systems and methods for dynamically appending supplemental content to an information resource responsive to scroll activity
US20210099372A1 (en) Systems and methods for latency reduction in content item interactions using client-generated click identifiers
JP6851317B2 (ja) 情報リソース内のコンテンツスロットの配置を自動的に管理するシステムおよび方法
US20120233235A1 (en) Methods and apparatus for content application development and deployment
JP7019669B2 (ja) 静的ナレッジグラフおよび時間的ナレッジグラフに基づいて用語の曖昧性を除去するためのシステムおよび方法
US9015179B2 (en) Media content tags
US20160342574A1 (en) Allotment of placement locations for supplemental content in dynamic documents
US20210352150A1 (en) Maintaining session identifiers across multiple webpages for content selection
JP6438494B2 (ja) 情報資源内に主コンテンツをおそらくは含むノード用の安定識別子を生成するための方法およびシステム
US9479615B1 (en) Systems and methods for providing interstitial content

Legal Events

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