KR20140099907A - 다운로드 가능한 컨텐츠의 전송을 최적화하는 시스템 및 장치 - Google Patents

다운로드 가능한 컨텐츠의 전송을 최적화하는 시스템 및 장치 Download PDF

Info

Publication number
KR20140099907A
KR20140099907A KR1020147016736A KR20147016736A KR20140099907A KR 20140099907 A KR20140099907 A KR 20140099907A KR 1020147016736 A KR1020147016736 A KR 1020147016736A KR 20147016736 A KR20147016736 A KR 20147016736A KR 20140099907 A KR20140099907 A KR 20140099907A
Authority
KR
South Korea
Prior art keywords
downloadable content
content
request
downloadable
local
Prior art date
Application number
KR1020147016736A
Other languages
English (en)
Other versions
KR101979621B1 (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 KR20140099907A publication Critical patent/KR20140099907A/ko
Application granted granted Critical
Publication of KR101979621B1 publication Critical patent/KR101979621B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/63Querying
    • G06F16/638Presentation of query results
    • G06F16/639Presentation of query results using playlists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/613Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination

Abstract

다운로드 가능한 컨텐츠의 전송을 최적화하는 시스템 및 방법이 개시된다. 본 발명의 실시예는 사용자에게 컨텐츠에 대한 더 빠른 엑세스를 제공하면서, 다운로드 가능한 컨텐츠가 완전히 다운로드 되기 전에 다운로드 가능한 컨텐츠를 실행하기 시작한다. 나아가, 본명세서에 개시된 실시예는 대역폭 사용을 줄이고, 소비자의 인터넷 속도에 덜 민감하며, 최종 소비자 제품 저장 용량에 제한되지 않는다. 실시예들은 정적이며, 따라서 시스템 및 방법의 응용을 정적 및 인터렉티브 컨텐츠 양자로 확대한다. 개시된 실시예들은, 컨텐츠 소스 코드를 과하게 수정할 필요없이, 사용자 디바이스의 운영체제에서 패치나 드라이버로 구현될 수 있다. 개시된 실시예들은 또한, 컨텐츠가 표시되는 경우 사용자에 의해 관찰되는 에러의 양을 최소화하면서 실행중인 컨텐츠로부터 독립적으로 및/또는 구별되지 않게 동작할 수 있다.

Description

다운로드 가능한 컨텐츠의 전송을 최적화하는 시스템 및 장치 {SYSTEM AND METHOD FOR OPTIMIZING TRANSFERS OF DOWNLOADABLE CONTENT}
일반적으로 본 발명은 다운로드 가능한 컨텐츠의 전달에 대한 것이며, 보다 구체적으로 다운로드 가능한 컨텐츠의 전송을 최적화하는 시스템 및 장치에 대한 것이다.
최근 몇 년간, 컴퓨팅 디바이스는 정보, 엔터테인먼트 및 통신의 주된 공급처로서 보편적으로 발전해 왔다. 텔레비전, DVD 플레이어, 게임기, 컴퓨터와 같은 이러한 디바이스들을 통합하는 최종 소비자 물품들이 모든 사이즈와 타입의 디지털 컨텐츠에 대한 소비자 접근을 용이하게 하기 위하여 개발, 변경 및 개선되었다. 이러한 디지털 컨텐츠는 종종 CD들, DVD들 및 블루레이 디스크들 (BD들)과 같은 물리 매체로 분산되었으나, 그러나 물리 매체에 포함되는 저장 사이즈는 제한되었다. 더 나아가, 물리 매체는 소비자가 컨텐츠를 획득하기 위하여 소매 상점을 방문하거나 물리적으로 매체를 배달받아야 한다. 다른 경우에, 실질적으로, 디지털 컨텐츠의 접근 및 향유를 지연하는 매체에 대한 물리적인 소유가 요구된다. 더 나아가, 물리적인 매체는 스크래치, 파손 및 일반적인 마모, 더 나아가 생성 과정의 이형 및 결함과 같은 훼손에 취약하다. 이러한 문제는 로딩 지연, 에러를 야기할 수 있으며, 심지어 디지털 컨텐츠의 접속 불가를 야기할 수 있다.
따라서, 컨텐츠 개발자 및 생산자는 인터넷을 통하여 디지털 컨텐츠를 분산하기 시작했으며, 이는 물리 매체에 대한 위의 문제들을 상당수 해결한다. 예를 들어, 소비자들은 상점 또는 다른 공급처로부터 물리매체의 소유를 획득하는 것이 요구되지 않으며, 그 대신에 그들의 집에서 편안히 컨텐츠를 다운로드 할 수 있게 되었다. 이는 소비자들이 사진, 음악, 게임 텔레비전 쇼, 영화, 어플리케이션, 업그레이드, 추가적인 사진 등 다양한 디지털 컨텐츠를 한번의 버튼 클릭으로 획득하도록 한다. 그러나 다운로드 가능한 컨텐츠의 사이즈는 허용 대역폭, 소비자 인터넷 스피드, 및 컨텐츠를 실행하는 최종 소비자 물품의 저장 용량으로 인하여 제한될 수 있다. 더 나아가 다양한 타입의 컨텐츠에 대한 실행은 실행전에 전체 다운로드되는 것을 요구하며, 이는 다시 원하는 컨텐츠에 대한 소비자의 접근 및 향유를 지연하고 있다.
따라서 대역폭 사용이 적고, 소비자 인터넷 속도에 덜 민감하고, 사용자 물품 저장 사이즈에 제한 되지 않으며, 그리고 더 빠른 컨텐츠 접근을 제공하는 인터넷을 통한 디지털 컨텐츠의 이송을 위한 새롭고 개선된 시스템 및 방법에 대한 계속되고 지속되는 요청이 있다. 본 발명의 실시예들은 완전히 다운로드되기 전에 컨텐츠 실행이 시작되도록 하는 다운로드 가능한 컨텐츠의 이송을 최적화하는 시스템 및 방법을 제공하여 이러한 니즈 들에 부합된다. 본 명세서에 기재된 실시 예들은 동적이며, 따라서 정적이고 상호적인 컨텐츠 모두에 대한 응용으로 확장된다. 나아가, 기재된 실시예들 하나 이상은, 컨텐츠의 소스 코드의 과다한 수정을 불필요하도록 하는, 사용자 디바이스의 운영 체제에 패치나 드라이버로 구현될 수 있다. 기재된 실시예들은 또한 컨텐츠 실행에 독립적으로 그리고/또는 보이지 않도록 자동될 수 있다. 이는 컨텐츠가 표시될 때 사용자에 의해 관찰되는 에러의 양을 최소화한다.
본 발명의 실시예에 따르면, 다운로드 가능한 컨텐츠의 전송을 최적화하는 방법이 개시된다. 상기 방법은 상기 다운로드 가능한 컨텐츠의 복수의 부분들의 제 1 부분에 대한 제 1 로컬 요청을 수신하고, 상기 제 1 로컬 요청을 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분에 대한 제 1 리모트 요청으로 변환하고, 상기 제 1 리모트 요청을 전송하고, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 수신하고, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 저장하고, 그리고 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행하는 단계를 포함한다. 다른 실시예에 따르면, 이러한 방법을 수행하기 위한 컴퓨터로 실행 가능한 명령들이 내장되어 있는 컴퓨터로 읽기 가능한 기록매체가 포함된다.
본 발명의 실시예에 따르면, 이런 방법을 가져오는 시스템이 또한 개시된다. 예를 들어 다운로드 가능한 컨텐츠의 전송을 최적화하는 시스템이 개시된다. 상기 시스템은 프로세서와 메모리를 포함하다. 상기 프로세서는 상기 다운로드 가능한 컨텐츠의 복수의 부분들의 제 1 부분에 대한 제 1 로컬 요청을 수신하고, 상기 제 1 로컬 요청을 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분에 대한 제 1 리모트 요청으로 변환하고, 상기 제 1 리모트 요청을 네크워크로 전송하고, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 상기 네트워크로 수신하고, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행하도록 동작한다. 상기 메모리는 적어도 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 저장하도록 동작한다.
본 발명의 실시예에 따르면, 모듈을 이용하여 다운로드 가능한 컨텐츠의 전송을 최적화하는 시스템 또한 개시된다. 상기 시스템은 상기 다운로드 가능한 컨텐츠의 복수의 부분들의 제 1 부분에 대한 제 1 로컬 요청을, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분에 대한 제 1 리모트 요청으로 변환하는 동작을 수행하는 변환 모듈; 상기 제 1 로컬요청을 수신하고, 상기 제 1 리모트 요청을 전송하고, 그리고 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 수신하는 동작을 수행하는 통신 모듈; 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행하는 동작을 수행하는 실행 모듈; 및 상기 다운로드 가능한 컨텐츠의 상기 복수의 부분의 적어도 하나의 부분을 저장하는 동작을 수행하는 저장 모듈을 포함한다.
본 발명의 실시예에 따르면, 다운로드 가능한 컨텐츠의 전송을 최적화할 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따라 다운로드 가능한 컨텐츠의 이송을 최적화하는 방법을 도시하는 순서도이다.
도 2는 본 발명의 다른 실시예에 따라 다운로드 가능한 컨텐츠의 전송을 최적화하는 방법을 도시하는 순서도이다.
도 3은 본 발명의 실시예에 따라 다운로드 가능한 컨텐츠를 실행하는 방법을 도시하는 순서도이다.
도 4는 본 발명의 실시예에 따라 다운로드 가능한 컨텐츠 요청 메타데이터를 개발하는 방법을 도시하는 순서도이다.
도 5는 본 발명의 또다른 실시예에 따라 다운로드 가능한 컨텐츠의 전송을 최적화하는 방법을 도시하는 순서도이다.
도 6은 여기에 개시된 방법을 실행하기 위한 실시 형태의 시스템을 도시하는 개략도이다.
도 7은 본발명에 개시된 하나 이상의 방법을 수행하기 위한 명령어들의 세트를 갖는 시스템의 개략도이다.
다운로드 가능한 컨텐츠의 전송을 최적화하는 시스템 및 방법이 개시된다. 다음의 설명에서, 설명의 목적을 위해, 다수의 특정 세부 사항은 예시적인 실시예들의 완전한 이해를 제공하기 위해 설명된다. 당업자에게 명백하다 하더라도, 본원 발명의 실시 예들은 이러한 특정 세부 사항이 없거나 등가의 구성으로도 실시될 수 있다. 어떤 경우에, 잘 알려진 구조 및 장치들은 실시예들을 불필요하게 불명료하게 하는 것을 피하기 위하여 블록도 형태로 도시된다.
도면을 참고하면, 참조 부호는 여러 도면에 걸쳐 동일하거나 대응하는 부분들을 지칭한다. 도 1은 본 발명의 실시예에 따라 다운로드 가능한 ?텐츠의 전송을 최적화하는 방법을 나타내는 흐름도이다. 상기 실시예에서, 컨텐츠의 다운로드가 완료되고, 필요한 컨텐츠의 후속 부분이 “온디맨드” 식으로 요청되기 전에, 컨텐츠의 실행이 시작된다. 따라서, 사용자는 실행 시작 전에는 완전하고, 잠재적으로 큰 다운로드될 컨텐츠를 기다릴 필요가 없고, 가능한 빨리 컨텐츠를 즐기는 것을 시작할 수 있다. 나아가, 잠재적으로 무관한 데이터의 스토리지는 제거된다.
프로세싱 블록 110에서, 다운로드 가능한 컨텐츠의 부분에 대한 로컬 요청이 수신된다. 상기 로컬 요청은 다운로드 가능한 컨텐츠의 원하는 부분에 대응되는 데이터 세트에 대한 표준 파일 동작의 형태로 수신될 수 있고, 예를 들어, 여기서 추후 설명되는 바와 같이, 운영 체제 애플리케이션으로부터 전송될 수 있다. 상기 다운로드 가능한 컨텐츠는, 예를 들면, 비디오 컨텐츠, 오디오 컨텐츠, 게임 컨텐츠, 및 / 또는 게임, 영화, 소프트웨어, TV 쇼, 뉴스, 뮤직 비디오, 토크 쇼, 예고편, 광고, 음악, 책, 오디오 책, 잡지, 신문, 카탈로그, 월 페이퍼, 테마, "추가" 컨텐츠, 또는 실행 컨텐츠의 작은 부분으로 분할 가능한 모든 유형의 컨텐츠를 포함하는 정적 영상 컨텐츠가 될 수 있다. 이러한 컨텐츠는 사용자 또는 개발자 제작, 무료 또는 유료, 전체 또는 실험, 그리고/ 또는 판매 또는 임대될 수 있음이 고려된다. 나아가, 본 명세서에서 사용되는 “부분”이라는 용어는, 단일 또는 다중 데이터 비트 또는 바이츠와 관련되거나 임의의 그룹으로 분할될 수 있는 다운로드 가능한 컨텐츠 모든 부분에 해당될 수 있다. 예를 들어, 컨텐츠의 “부분”은 레벨, 챕터, 장면, 행위, 캐릭터, 배경, 텍스처, 액션, 음악, 주제, 기간, 크기, 파일, 이들의 부분 및 이들의 조합에 해당될 수 있다. 다른 실시예에서, 그러나, 컨텐츠의 “부분”은 전송의 효율성의 목적을 위하여 다른 명확한 공통점 없이 함께 그룹화된 데이터를 참고할 수 있다.
예를 들어, 프로세서는 다운로드 가능한 컨텐츠의 요청된 부분에 대한 로컬 메모리를 조회할 수 있다. 다운로드 가능한 컨텐츠의 요청된 부분이 실제로 국부적으로 저장된 경우, 이는 프로세싱 블록 140에서 실행된다. 다운로드 가능한 컨텐츠의 요청된 부분이 국부적으로 저장되어 있지 않은 경우, 상기 로컬 요청은, 이러한 프로세서에 의해, 프로세싱 블록 120에서 리모트 요청으로 변환된다. 프로세싱 블록 125에서, 상기 리모트 요청은 전송된다. 예를 들어, 상기 리모트 요청은 로컬 디바이스의 프로세서에서 서버로 전송될 수 있다. 이후 상기 서버는 이후 설명될 도 5에 도시된 바와 같이 상기 프로세싱을 수행할 수 있다.
도 1로 돌아가면, 상기 요청된 다운로드 가능한 컨텐츠의 부분은 프로세싱 블록 130에서 수신된다. 프로세싱 블록 130에서, 상기 요청된 다운로드 가능한 컨텐츠의 부분은 국부적으로 저장된다. 상기 요청된 다운로드 가능한 컨텐츠의 부분의 로컬 저장은 다운로드 가능한 컨텐츠의 그 부분들이 다시 요청되는 경우에 다시 다운로드할 필요가 없음을 보장한다. 예를 들어, 게임에서 동일한 배경 또는 케릭터가 여러 레벨에 걸쳐 사용되는 경우, 컨텐츠의 부분은 여러 번 요청될 수 있다.
프로세싱 블록 140에서, 상기 요청된 다운로드 가능한 컨텐츠의 부분이 실행된다. 한편, 상기 방법은, 먼저 요청된 다운로드 가능한 컨텐츠의 부분이 실행되는 동안, 다운로드 가능한 컨텐츠의 부분에 대해 수신된 다른 로컬 요청에 따라 프로세싱 블록 110에서 반복될 수 있다. 다시 말하면, 상기 방법의 동작은, 즉, 이전의 프로세싱이 완결되기 전에 다른 프로세싱이 연속되는 것을 허용하면서, 비동기적으로 실행될 수 있다.
도 1에 도시된 바와 같이, 다운로드 가능한 컨텐츠의 부분에 대한 다른 로컬 요청은 다운로드 가능한 컨텐츠의 첫번째 부분을 저장한 후에 프로세싱 블록 135에서 수신될 수 있다. 그러나, 후속 요청이 비록 이때 발생한 것으로 도시되었다 하더라도, 다운로드 가능한 컨텐츠의 부분에 대한 로컬 후속 로컬 요청은 최초의 로컬 요청이 수신된 후 처리 과정의 어떤 시점에서도 발생할 수 있다. 그러나, 상기 후속 요청 부분이 바로 앞 요청 부분의 실행 완료시 실행될 수 없는 경우, 에러 메시지가 생성되고, 이후 도 3에서 더욱 자세히 도시되는 바와 같이, 상기 후속 요청 부분의 다운로딩을 완료하기 위한 딜레이가 구현된다. 본 명세서에서 사용되는 바와 같이, 용어 “후속”은 요청들이 수신, 전송, 및/ 또는 예측되는 순서만을 고려하고, 컨텐츠의 특정 부분이 시간, 실행 순서, 코드 위치 등에 대한 컨텐츠의 이전 요청 부분 “이후” 임을 반드시 반영하지는 않는다. 나아가, 컨텐츠의 동일한 부분이 여러 번 요청될 수 있으며, 따라서, 컨텐츠의 이전, 현재 및/또는 이후에 요청된 부분 중 하나 이상을 구성할 수 있음이 고려된다.
상기 방법은 요청 디바이스와 다운로드 가능한 컨텐츠의 호스트 간 연결이 종료될 때까지; 상기 다운로드 가능한 컨텐츠가 완전히 실행될 때까지; 또는 다운로드 가능한 컨텐츠의 모든 부분이 저장될 때까지 계속할 수 있다. 예를 들어, 사용자가 게임을 종료하거나, 게임기를 끄거나, 또는 상기 게임의 모든 레벨을 완료하거나, 또는 상기 게임이 완전히 다운로드될 때까지 게임의 부분들은 요청되고 실행되는 것을 계속할 수 있다. 따라서, 사용자가 짧은 시간 동안만 게임을 하고, 그 게임을 싫어하는 것으로 결정한 경우, 상기 게임은 소량만 게임기에 다운로드된다. 이는 사용자가 싫어하는 게임의 다운로드를 위해 기다리는 시간 손실, 대역폭 양 그리고/또는 상기 싫어하는 게임에 대한 데이터 허용 손실, 그리고 게임기에서 상기 싫어하는 게임에 의해 점유된 메모리 양을 최소화한다.
이와 유사하게, 게임의 모든 레벨이 완료되지 않고, 사용자가 더 이상 그 게임을 하는 것을 원하지 않은 경우, 게임 플레이 동안 사용자에게 필요한 게임의 부분들만 게임기로 다운로드 된다. 이는 불필요한 파일이나 기능이 다운로드되는 것을 기다리는 사용자의 시간 손실, 대역폭 양 그리고/또는 불필요한 파일이나 기능의 다운로딩을 위한 데이터 허용 손실, 그리고 불필요한 파일이나 기능에 의해 점유된 메모리 양을 을 최소화한다.
도 2는 본 발명의 다른 실시예에 따라 다운로드 가능한 컨텐츠의 전송을 최적화하는 방법을 도시하는 흐름도이다. 상기 실시예를 따르면, 다운로드 가능한 컨텐츠의 부분들은 실행이 필요할 때, 실행에 필요할 부분의 예측, 또는 둘다에 따라 “온디멘드” 요청된다. 다운로드 가능한 컨텐츠의 부분에 대한 요청은 국부적으로서 예측되며, 그리고 예측된 다운로드 가능한 컨텐츠의 부분들은 그 부분들에 대한 로컬 요청의 접수에 우선하여 (또는 전혀 없이) 획득된다.
처리 블록 210에서, 다운로드 가능한 컨텐츠의 최초 부분에 대한 최초 로컬 요청이 수신된다. 결정 블록 215에서, 상기 다운로드 가능한 컨텐츠의 최초 부분이 국부적으로 저장되어 있는지 여부가 판단된다. 상기 다운로드 가능한 컨텐츠의 최초 부분이 실제로 국부적으로 저장되어 있는 경우, 처리 블록 237에서, 상기 최초 로컬 요청이 저장되며, 그리고 처리 블록 240에서 상기 다운로드 가능한 컨텐츠의 최초 부분이 실행된다. 상기 다운로드 가능한 컨텐츠의 최초 부분이 국부적으로 저장되어 있지 않은 경우, 그러나, 상기 최초의 로컬 요청은 처리 블록 220에서 상기 다운로드 가능한 컨텐츠의 최초의 부분에 대한 리모트 요청으로 변환된다. 처리 블록 225에서, 상기 리모트 요청은 전송되며, 그리고 처리 블록 230에서, 상기 최초의 다운로드 가능한 컨텐츠의 부분이 수신된다. 처리 블록 235에서, 상기 다운로드 가능한 컨텐츠의 최초의 부분은 저장되며, 그리고 처리 블록 237에서, 상기 최초의 로컬 요청이 저장된다. 상기 최초의 다운로드 가능한 컨텐츠의 부분은 실행 블록 240에서 실행된다.
사용된 단어 “최초”는 컨텐츠의 특정 실행에서 제 1 요청에 대응하는 컨텐츠의 부분을 지칭하며, 그리고 상기 부분은 시간, 실행 순서, 코드 위치 등에 대한 컨텐츠의 제 1 부분임을 반드시 지칭하지는 않는다. 따라서, 예를 들어, 게임의 상기 “최초” 부분은 레벨 7일 수 있으며, 비디오의 상기 “최초” 부분은 비디오의 중간일 수 있고, 책의 상기 “최초” 부분은 챕터 8 등 일 수 있다. 다른 실시예에서, 그러나, 컨텐츠의 상기 “최초” 부분은 다운로드 가능한 컨텐츠에 대한 데이터의 최소 작업 집합에 해당하거나, 또는, 전체 컨텐츠에 대해 먼저 실행되도록 설정된 다운로드 가능한 컨텐츠의 부분에 실제 해당할 수 있다. 상기 최초 부분은, 예를 들어, 게임의 레벨 1, 비디오의 초반 10초, 책의 쳅터 1 등일 수 있다. 두 경우에서, 적어도 다운로드 가능한 컨텐츠의 최초 부분은 실시예에 따라 다운로드 가능한 컨텐츠의 실행을 개시하기 전에 국부적으로 저장될 것이 요구될 수 있다. 컨텐츠의 최초 부분이 실행 시작 전에 다운로드될 것이 요구됨으로써, 실행의 지연 또는 중단의 최소화되어 사용자 경험이 개선될 수 있다. 따라서, 예를 들어, 처음으로 게임을 시작하는 사용자는 게임 레벨 1을 다운로드하는 것이 요구될 수 있거나, 또는 레벨 4에서 떨어진 후 게임을 다시 재개하는 사용자는 플레이전에 게임 레벨 5를 다운로드하는 것이 요구될 수 있다.
도 2에서 도시된 바와 같이, 다운로드 가능한 컨텐츠의 부분에 대한 후속 요청은 처리 블록 250에서 예측될 수 있다. 상기 실시예에서, 상기 후속 요청은 예를 들어 다운로드 가능한 컨텐츠를 실행하는 디바이스에 의하여, 국부적으로 예측될 수 있다. 이러한 예측은 예를 들어, 다운로드 가능한 컨텐츠의 이전에 요청된 부분들(예를 들어, 다운로드 가능한 컨텐츠의 시작 부분), 이전 로컬 요청 (예를 들어, 저장된 최초 로컬 요청), 다운로드 가능한 컨텐츠 메타데이터 (예를 들어, 제목, 타입, 공급자), 요청된 디바이스 메타데이터 (예를 들어, 타입, 운영 체제, 저장 공간, 연결 타입), 현재의 사용자와 다른 사용자 모두를 위한 사용자 메타데이터 (예를 들어, 인구 통계 정보, 컨텐츠 엑세스 이력), 및 다운로드 가능한 컨텐츠 요청 메타데이터 (예를 들어 제 로컬 요청의 연속 로그)을 이용하여 이루어질 수 있다. 선택적으로, 상기 예측된 요청은 예상 요청 메타데이터로서 저장될 수 있다.
다운로드 가능한 컨텐츠 요청 메타데이터는 실행되는 특정 컨텐츠에 대한 요청 로그로 한정되지 않으며, 그리고 다른 이전의 실행 컨텐츠에 대한 요청 로그 역시 포함할 수 있다. 예를 들면, 특정 액션 게임에 의한 후속 요청은 다른 액션 게임의 요청 메타데이터를 이용하여, 상기 엑션 게임들이 유사한 순서로 유사한 기능들을 실행한다는 가정에 기반하여 예측될 수 있다. 이러한 가정은 요청된 컨텐츠의 장르뿐만 아니, 플렛폼, 공급자, 저장, 출시 날짜, 또는 어떠한 다른 사용가능한 컨텐츠 메타데이터에 따라 이루어질 수 있다.
결정 블록 215에서, 다운로드 가능한 컨텐츠의 상기 예측된 부분이 국부적으로 저장되어 있는지 여부를 판단한다. 다운로드 가능한 컨텐츠의 상기 예측된 부분이 실제로 국부적으로 저장되어 있는 경우, 이후 설명되는 바와 같이, 상기 방법은 처리 블록 265에서 계속된다. 다운로드 가능한 컨텐츠의 상기 예측된 부분이 국부적으로 저장되어 있지 않은 경우, 그러나, 다운로드 가능한 컨텐츠의 상기 예측된 부분에 대한 리모트 요청이 처리 블록 255에서 생성된다. 처리 블록 257에서, 상기 리모트 요청이 전송되며, 그리고 처리 블록 260에서 다운로드 가능한 컨텐츠의 상기 예측된 부분이 수신된다. 처리 블록 263에서, 다운로드 가능한 컨텐츠의 상기 예측된 부분이 저장되며, 그리고 상기 방법은 처리 블록 265에서 계속된다. 다운로드 가능한 컨텐츠의 상기 예측된 부분의 로컬 저장은 이들이 요청되거나 (예를 들어, 상기 예측이 맞은 경우) 또는 다시 예측된 경우에 다시 다운로드 될 필요가 없음을 보장한다. 블록 250에서 263은 상기 로컬 요청들을 만드는 어플리케이션이나 모듈에 독립적으로 완료될 수 있다.
처리 블록 265에서, 다운로드 가능한 컨텐츠의 부분에 대한 후속 로컬 요청이 수신된다. 결정 블록 270에서, 예를 들어, 상기 요청들이 다운로드 가능한 컨텐츠의 동일한 부분에 대한 것인 경우, 예측 요청 메타데이터에 엑세스하는 것에 의하는 것과 같이, 상기 후속 로컬 요청이 예측된 요청과 일치하는지 여부가 판단된다. 상기 예측 요청 메타 데이터는 상기 예측이 정확한지 아닌지 여부를 반영하여 업데이트될 수 있으며, 이후의 예측들을 개선하기 위하여 사용될 수 있다.
후속 로컬 요청이 상기 예측된 요청과 일치하는 경우, 상기 후속 로컬 요청은 처리 블록 273에서 저장되고, 처리 블록 275에서 다운로드 가능한 컨텐츠의 상기 예측된 부분은 실행된다. 후속 로컬 요청이 상기 예측된 요청과 일치하지 않는 경우, 결정 블록 280에서 다운로드 가능한 컨텐츠의 상기 요청된 부분이 국부적으로 저장되어 있는지 여부가 판단된다. 다운로드 가능한 컨텐츠의 상기 요청된 부분이 실제로 국부적으로 저장되어 있는 경우, 후속 로컬 요청이 처리 블록 293에서 저장되며, 다운로드 가능한 컨텐츠의 상기 요청 부분이 처리 블록 295에서 실행된다. 다운로드 가능한 컨텐츠의 상기 요청 부분이 국부적으로 저장되어 있지 않은 경우, 후속 로컬 요청은 처리 블록 283에서 리모트 요청으로 변환되며, 상기 리모트 요청은 처리 블록 285에서 전송된다. 처리 블록 287에서, 다운로드 가능한 컨텐츠의 상기 요청된 부분이 수신되고, 처리 블록 2290에서 저장된다. 처리 블록 293에서 상기 후속 로컬 요청이 저장되며, 그리고 다운로드 가능한 컨텐츠의 상기 요청된 부분은 처리 블록 295에서 실행된다.
블록 250에서 295는 다운로드 가능한 컨텐츠의 부분들에 대해 얼마든지 반복될 수 있다. 예를 들어, 블록 237, 273 및 293에서 저장된 로컬 요청들은 (요청된 컨텐츠와 후에 요청될 컨텐츠 모두를 위한) 이후의 예측들을 더욱 정확하게 하기 위하여 상기 다운로드 가능한 컨텐츠 요청 메타데이터를 구축하고 확장하는데 사용될 수 있다. 상기 방법은 요청 디바이스와 다운로드 가능한 컨텐츠의 호스트 사이의 연결이 종료될 때까지; 다운로드 가능한 컨텐츠가 전부 실행될 때까지; 또는 다운로드 가능한 컨텐츠의 모든 부분이 저장될 때까지 계속될 수 있다.
후속 로컬 요청과 컨텐츠의 상기 요청된 부분의 실행 확인 후에만 재발생하는 것으로 도시되지만, 이전의 예측에 따르는 로컬 요청이 수신되기 전에, 후속 요청이 예측될 수 있고, 컨텐츠의 상기 예측된 부분들을 다운로드하는 것이 고려된다. 예를 들어, 210에서 제 1 로컬 요청이 수신되고 240에서 컨텐츠의 제 1 부분이 실행된 후, 250에서 제 1 예측은 제 2 로컬 요청이 무엇을 위한 것인지로 구성될 수 있으며, 컨텐츠의 상기 예측된 부분은 260과 263에서 다운로드되고 저장될 수 있다. 컨텐츠의 제 1 부분이 240에서 실행되는 동안, 그리고 265에서 제 2 로컬 요청이 수신되기 전에, 제 2 예측은 제 3 로컬 요청이 무엇을 위한 것인지로 구성될 수 있으며, 컨텐츠의 상기 예측된 부분이 다운로드되고 저장될 수 있다.
상기 예측과 관련 다운로드는 상기 방법이 실행되고 있는 동안 끊임없이 계속될 수 있거나, 상기 방법 내에서 얼마든지 일시 중지하거나 중단할 수 있다. 예를 들어, 다음 로컬 요청이 수신되면, 과거나 미래 예측이 개선되게 되고, 상기 예측은 일시 중지할 수 있다. 나아가, 예측 요청의 개수가 특정된 경우 (또는 컨텐츠의 예측된 부분의 일정량이 다운로드 되면), 현재 실행중인 요청이나 컨텐츠의 부분을 넘어 상기 예측은 일시 중지할 수 있다. 예를 들어, 제 1 로컬 요청에 따라 게임 레벨 1이 현재 실행되고 그리고 후속 로컬 요청이 아직 수신되지 않은 경우, 예측은 다음 두 요청으로 제한될 수 있다. 따라서, 제 2와 제 3 요청은, 각각, 레벨 2와 3에 대한 것으로 예측될 수 있고, 게임의 각 부분들이 다운로드될 수 있다. 그러나, 실제로 제 2 로컬 요청이 수신되기 전에는 제 4 요청은 예측될 수 없다. 다운로드 가능한 컨텐츠 요청 메타데이터는 제 2 로컬 요청의 수신 시 업데이트 될 수 있으므로, 이러한 실시예는 미래의 예측이 더 정확하게 개선되도록 하며, 그 사이에 컨텐츠의 예측된 부분의 제한된 양이 다운로드 될 것이다. 나아가, 컨텐츠의 예측된 부분에 할당된 메모리 양이 (실제로 실행에 필요하든 필요하지 않던) 제한된다. 따라서, 제 2 로컬 요청이 수신되기 전에 사용자가 게임을 끄고, 다시 플레이하지 않는 경우, 제한된 양의 메모리만 불필요한 데이터에 의해 점유된다.
처리 블록 265에서 제 2 로컬 요청이 수신되면, 상기 방법은 제 1 예측에 대한 결정 블록 270으로 진행할 수 있다. 즉, 제 2 로컬 요청은 270에서 제 1 예측과 비교될 수 있으며, 상기 방법은 도시된 바와 같이 진행할 수 있다. 처리 블록 273 또는293에서, 다운로드 가능한 컨텐츠 요청 메타데이터가 업데이트될 수 있으며, 후속 예측이 개선될 수 있다. 예를 들어, 제 2 예측 (그리고 상기 제 2 로컬 요청의 수신 전에 만들어진 모든 다른 예측)은 제 2 로컬 요청의 컨텐츠 및 업데이트된 요청 메타데이타를 기반으로 개선될 수 있고, 새로운 예측은 설정을 계속할 수 있다.
도 3은, 예를 들어, 도 1 또는 2에 도시되는 바와 같이 수신된 다운로드 가능한 컨텐츠를 실행하기 위한 방법을 도시하는 흐름도이다. 컨텐츠의 실행은, 예를 들어, 하나 이상의 사용자 입력에 의해 영향을 받을 수 있는, 컨텐츠를 표시하는 것에 의하는 것과 같은, 컨텐츠를 출력하는 것을 포함할 수 있다. 도 3에 도시된 실시예에 따르면, 다운로드 가능한 컨텐츠의 제 1 부분이 실행되고, 상기 제 1 부분의 실행이 완료되면, 제 2 부분이 실행 등등이 된다. 그러나, 바로 앞 요청 부분의 실행이 완료된 때, 후속 요청 부분이 실행될 수 없는 경우, 에러 메시지가 생성되고, 후속 요청 부분의 다운로드를 완료할 수 있도록 지연이 구현된다. 도 3의 처리 블록 310에서, 다운로드 가능한 컨텐츠의 초기 부분이 실행된다. 단지 설명의 목적을 위해, 다운로드 가능한 컨텐츠의 이 부분은 N=1 값이 할당된다. 다운로드 가능한 컨텐츠의 초기 부분의 실행이 개시되면, n은 n=n+1 또는 n= n+2로 설정된다. 여기서 사용되는 바와 같이, 다양한 n 값은 요청된, 전송된, 그리고/또는 예측된 컨텐츠의 특정 부분에 대한 순서만을 나타내고, 컨텐츠의 특정 부분이 시간, 실행 순서, 코드 위치 등에서 이전에 요청된 부분 “이후”라는 것을 반드시 반영하지 않는다. 나아가, 예를 들어, 다운로드 가능한 컨텐츠의 부분이 한 번 이상 요청된 경우에, 하나 이상의 n 값이 다운로드 가능한 컨텐츠의 동일한 부분을 나타낼 수 있는 것으로 고려된다.
결정 블록 320에서, 다운로드 가능한 컨텐츠의 n번째 부분이 실행가능한지 여부가 판단된다. 이러한 판단은 컨텐츠 이전 부분의 (즉, n-1부분) 실행 이후의 어떤 경우에서도 만들어질 수 있다. 예를 들어, 제 2 부분의 가용성은 컨텐츠 초기 부분의 실행; 상기 초기 부분을 실행하는 동안 특정 간격으로; 상기 초기 부분의 실행 중 임의의 시간에; 또는 초기 부분의 실행이 완료되기 직전에 즉시 조회될 수 있다. 다운로드 가능한 컨텐츠의 부분은 데이터의 적어도 최소량이 실행을 지원하기 위해서 저장된 경우 실행될 수 있다. 예를 들어, 상기 부분은 완전히 다운로드되고 저장된 경우, 또는 실행을 시작하기 위해서 부분 데이터의 적어도 최소 작동량은 존재하는 경우 실행될 수 있다.
다운로드 가능한 컨텐츠의 n번째 부분이 실행가능한 경우, 처리 블록 330에서 실행되고, n은 n=n+1로 설정되고, 그리고 상기 방법은 결정 블록 320으로 돌아간다. 예를 들어, 다운로드 가능한 컨텐츠의 제 2 부분이 실행될 수 있는 경우, 처리 블록 330에서 실행되고, n은 n=n+1또는 3으로 설정된다. 다음으로 다운로드 가능한 컨텐츠의 제 3 부분, 및 다운로드 가능한 컨텐츠의 각 n번째 부분 등등이 실행가능한지 여부가 결정 블록 320에서 판단된다.
다운로드 가능한 컨텐츠의 n번째 부분이 실행 가능하지 않은 경우, 다운로드 가능한 컨텐츠의 실행은 처리 블록 340에서 일시 정지 되고, 처리 블록 350에서 지연 메시지가 생성된다. 이는 이상 시간 제한 및 기타 비정상정인 상황 발생을 방지할 수 있다. 나아가, n 값은 변경되지 않고 남는다. 따라서, 상기 방법은 결정 블록 320에서 다운로드 가능한 컨텐츠의 n번째 부분이 실행가능한지 여부를 판단하기 위해 계속된다. 다운로드 가능한 컨텐츠의 상기 n번째 부분이 실행가능한 경우, 처리 블록 330에서 실행되고, n은 n=n+1로 설정된다. 상기 방법은 결정 블록 320으로 리턴하며, 요청 디바이스와 다운로드 가능한 컨텐츠의 호스트 사이의 연결이 종료되거나 다운로드 가능한 컨텐츠가 완전히 실행될 때까지 다운로드 가능한 컨텐츠의 모든 n번째 부분에 대해 반복될 수 있다.
다운로드 가능한 컨텐츠의 어떤 부분의 실행은 n번째 부분의 다운로드를 진행하거나 완료하기 위해 언제든지 일시중지할 수 있다. 그러나, 이러한 실시예에서, 컨텐츠의 이전 부분 (즉, n-1번째 부분)의 실행이 완료될 때 다운로드 가능한 컨텐츠의 n번째 부분이 실행가능하지 않은 경우, 다운로드 가능한 컨텐츠의 실행은 일시 중지 된다. 예를 들어, 다운로드 가능한 컨텐츠의 제 2 부분이 실행가능하지 않은 경우, 상기 다운로드 가능한 컨텐츠의 전체 실행은 처리 블록 340에서 일시 정지되고 (즉, 초기 부분의 실행 완료와 제 2 부분의 실행 시작 사이에 지연이 구현된다) 처리 블록 350에서 지연 메시지가 생성된다. The value of n remains as n = 2. n값은 n=2로 유지한다. 따라서, 상기 방법은 다운로드 가능한 컨텐츠의 제 2 부분이 실행가능한지 여부를 판단하기 위해 결정 블록 320으로 리턴한다. 이 예에서 다운로드 가능한 컨텐츠의 제 2 부분이 실행가능한 경우, 처리 블록 330에서 실행되고 n은 n=n+1 또는 n=3으로 설정된다. 다음으로 다운로드 가능한 컨텐츠의 제 3 부분이 실행가능한지 여부 등등이 결정블록 320에서 판단된다. 상기 방법은 다운로드 가능한 컨텐츠의 각 로컬 요청 부분에 대해 반복하거나, 요청 디바이스와 다운로드 가능한 컨텐츠의 호스트 사이의 연결이 종료될 때까지 반복한다.
도 4는 본 발명의 실시예에 따라 다운로드 가능한 컨텐츠 요청 메타데이터를 구축 및 확장하는 방법을 도시하는 흐름도이다. 상기 실시예에서, 다운로드 가능한 컨텐츠 요청 메타데이터는 서버나 다운로드 가능한 컨텐츠를 호스팅하는 제 3자에 의하는 것처럼, 원격으로 구축된다. 처리 블록 410에서, 다운로드 가능한 컨텐츠의 부분에 대한 리모트 요청이 수신된다. 처리 블록 420에서 다운로드 가능한 컨텐츠의 요청된 부분이 전송된다. 처리 블록 430에서, 상기 리모트 요청이 다운로드 가능한 컨텐츠 요청 메타데이터 파일에 저장된다. 상기 방법은 다운로드 가능한 컨텐츠의 부분에 대해 수신된 각 리모트 요청에 대해 되풀이된다. 다운로드 가능한 컨텐츠 요청 메타 데이터는 다운로드 가능한 컨텐츠 메타데이타 (예를 들어, 타이틀, 사이즈, 공급자), 요청 디바이스 메타데이타 (예를 들어, 타입, 운영 체제, 저장 공간, 연결 방식), 및 현재 사용자와 다른 사용자 양자에 대한 사용자 메타데이터 (예를 들어, 인구 통계 정보, 컨텐츠 접속 히스토리)와 같은 다양한 다른 정보에 대해 저장될 수 있다.
이미 저장되어 있지 않은경우, 다운로드 가능한 컨텐츠 메타데이터, 요청 디바이스 메타데이터, 사용자 메타데이터 그리고/또는 다운로드 가능한 컨텐츠 요청 메타데이터가 요청 디바이스; 게시자; 제조업체; 그리고/또는 유통 데이터베이스; 타사 웹사이트; 및/또는 타사 사용자 디바이스를 포함하는 다양한 소스로부터의 정보로 요청, 획득 및 확장될 수 있다. 상기 방법은 요청 디바이스와 다운로드 가능한 컨텐츠 호스트 사이의 연결이 종료되거나, 다운로드 가능한 컨텐츠의 모든 부분이 요청 및/또는 전송될 때까지 계속할 수 있다.
도 5는 본 발명의 실시예에 따라 예측을 사용하여 다운로드 가능한 컨텐츠의 전송을 회적화하는 방법을 도시하는 흐름도이다. 이 실시예에서, 상기 방법은 다운로드 가능한 컨텐츠를 호스팅하는 서버에 대해 도시된다. 그러나, 도 5에 대해 설명하는 리모트 예측은 도 2에 대해 설명하는 로컬 예측과, 동기 또는 비동기 방식으로 결합되거나, 변경되거나, 함께 또는 동반하여 만들어질 수 있음이 고려된다. 나아가, 도 5의 실시예는 도 4에 대해 설명하는 실시예와, 동기 또는 비동기 방식으로 결합되거나, 변경되거나, 함께 또는 동반하여 수행될 수 있음이 고려된다. 비동기적으로 수행되는 경우, 도 4와 5에 도시된 방법은, 미래 요청을 예측하는 동안, 디운로드 컨텐츠 요청 메타데이터를 구현하는 것과 같이, 요청을 수신하고 실현할 수 있다.
도 5의 처리 블록 510에서, 다운로드 가능한 컨텐츠의 초기 부분에 대한 초기 리모트 요청이 수신된다. 설명의 목적으로만, 다운로드 가능한 컨텐츠의 이 부분은 n=1의 값으로 할당된다. 처리 블록 520에서, 다운로드 가능한 컨텐츠의 상기 초기 부분이 초기 리모트 요청에 응답하여 전송된다. 다운로드 가능한 컨텐츠의 초기 부분의 전송이 개시되면, n은 n=n+1 또는 n=2로 설정된다. 처리 블록 530에서, 다운로드 가능한 컨텐츠의 부분에 대한 n번째 리모트 요청이 예측된다. 이러한 예측은, 예를 들어, 다운로드 가능한 컨텐츠의 이전에 요청된 부분 (예를 들어, 다운로드 가능한 컨텐츠의 초기 부분), 이전의 리모트 요청 (예를 들어, 도 4의 430에서 저장된 리모트 요청), 다운로드 가능한 컨텐츠 메타데이터 (예를 들어, 타이틀, 사이즈, 타입, 공급자), 요청 디바이스 메타데이터 (예를 들어, 타입, 운영 체제, 저장 공급, 연결 방식), 현재 사용자와 다른 사용자 모두에 대한 사용자 메타데이터 (예를 들어, 인구 통계 정보, 컨텐츠 접속 히스토리), 다운로드 가능한 컨텐츠 요청 메타데이터 (예를 들어, 도 4에 도기된 바와 같이 설계되고 구축된), 및 예측된 요청 메타데이터를 이용하여 만들어질 수 있다.
예측을 체계화하기 위하여, 상기 데이터는 요청 사용자, 요청 디바이스 및/또는 임의의 요청된 다운로드 가능한 컨텐츠에 대해 분석될 수 있다. 대신에 또는 부가적으로, 이러한 데이터는 복수의 요청 사용자, 요청하는 디바이스 및/또는 요청 다운로드 가능한 컨텐츠에 걸쳐 집계되고 분석될 수 있다. 후자의 실시예에서, 다운로드 가능한 컨텐츠의 실행 내의 선택 분기들을 식별하기 위해, 동일한 다운로드 가능한 컨텐츠의 복수의 실행으로부터 다운로드 가능한 컨텐츠 요청 메타데이터는 분석될 수 있으며, 그리고 다양한 분석들이 분기 다운로드 가능한 컨텐츠 요청 메타데이터로 병합될 수 있다.
예를 들어, 상기 다운로드 가능한 컨텐츠 요청 메타데이터 파일은 기하하적 모델 데이터가 요청되는 경우, 관련 텍스처 또한 요청될 것으로 예측하는 분기를 가질 수 있다. 따라서, 로컬 요청이 레벨 1 기하학적 모델 데이터에 대해 수신되는 경우, 레벨 1 텍스처가 요청될 것으로 예상될 수 있다. 마찬가지로, 로컬 요청이 레벨 2 기하하적 모델 데이터에 대해 수신되면, 레벨 2 텍스처가 요청될 것 등등이 예측될 수 있다.
다른 예에서, 게임 X 의 복수의 사용자 디바이스에 대한 복수의 요청 메타데이터 파일 내의 설정 파일 엑세스 패턴들을 분석하여 게임 X에서 사용자 디바이스 A 에 의한 후속 요청이 예측될 수 있다. 이러한 예측은 게임 X를 실행하는 복수의 사용자 디바이스는 유사한 순서로 게임 X 데이터를 요청 (예를 들어, 동일한 게임의 사용자는 유사한 순서로 유사한 엑션을 취할 것이라는) 한다는 가정 에 기반한다. 다른 예에서, 퍼즐 게임 Y에서 사용자 디바이스 B에 의한 후속 요청은 퍼즐 게임 Y의 사용자 디바이스 C의 설정 파일 엑세스 패턴을 순석하여 예측될 수 있으며, 상기 사용자 디바이스 B와 사용자 디바이스 C는 유사한 퍼즐게임 Z에서 유사한 게임 플레이 동작 (즉, 유사한 파일 엑세스 패턴)을 하는 것으로 관찰된다. 이러한 예측은 사용자 디바이스 B와 사용자 디바이스 C가 게임 Z 데이터를 유사한 순서로 요청하기 때문에, 유사한 게임 Y 데이터를 유사한 순서로 요청할 것 (즉, 하나의 퍼즐 게임에서 유사한 게임 플레이 동작을 하는 두명의 사용자는 유사한 퍼즐 게임에서도 유사한 게임 플레이 동작을 할 것) 이라는 가정에 기반한다.
상기 요청, 메타데이터 및 예측들은 동적일 수 있기 때문에, 여기서 설명된 방법은, 사용자 입력에 따라 실행하는 인터렉티브 컨텐츠와 같이, 각 실행에 걸쳐 동일하거나 유사한 순서로 동일하거나 유사한 동작을 실행하지 않는 다운로드 가능한 컨텐츠에 대해 사용하기 적합하다. 따라서, 예를 들어, 여기에 기재된 시스템 및 방법은 높은 수준의, 진화된 비디오 게임과 가상 현실 환경과 협력하여 구현될 수 있다.
선택적 결정 블록 540에서, 다운로드 가능한 컨텐츠의 예측된 부분이 요청 디바이스에 이미 저장되어 있는지 여부가 판단된다. 이러한 판단은 상기 예측된 부분이 이전에 요청되고 전송되었는지 여부를 판단하기 위하여 특정 요청 다운로드 가능한 컨텐츠와 특정 요청 디바이스에 대한 다운로드 가능한 컨텐츠 요청 메타데이터를 분석하여 이루어질 수 있다. 대안적으로, 상기 예측 부분에 대한 로컬 메모리를 체크하기 위하여 요청 디바이스로 조회가 전송될 수 있으며, 응답이 수신될 수 있다. 다운로드 가능한 컨텐츠의 예측 부분이 요청 디바이스에 이미 저장되어 있는 경우, n은 n=n+1로 설정되며, 처리 블록 530에서 다른 예측이 이루어진다. 다운로드 가능한 컨텐츠의 상기 예측 부분이 요청 디바이스에 미리 저장되어 있지 않은 경우, 처리 블록 550에서 전송되고; n은 n=n+1로 설정되며; 처리 블록 530에서 다른 예측이 생성된다. 상기 방법은, 예를 들어, 요청 디바이스 또는 서버가 연결을 종료하거나 다운로드 가능한 컨텐츠 전체 부분이 전송되기 전까지 계속할 수 있다.
선택적 결정 블록 540이 생략된 실시예에서, 상기 방법은, 다운로드 가능한 컨텐츠의 부분에 대한 n번째 리모트 요청이 예상되는 경우 처리 블록 530에서 처리 블록 550으로 바로 진행될 수 있으며, 다운로드 가능한 컨텐츠의 예측된 부분이 요청 디바이스로 전송 또는 “푸시”된다. 요청 디바이스는 컨텐츠의 예측된 부분에 대해 원하는 어떤 조치를 취할 수 있다. 예를 들어, 예측된 부분이 이미 요청 디바이스에 저장된 경우, 요청 디바이스는 전송이 종료되거나, 대안적으로, 이전에 저장된 부분을 덮어쓸 것을 요청할 수 있다. 예측된 부분이 요청 디바이스에 미리 저장되어 있지 않은 경우, 요청 디바이스는 단순히 예측 부분을 저장하고 컨텐츠 해당 부분에 대한 로컬 요청을 기다릴 수 있다.
도 6은 본 명세서에서 도시된 방법 중 하나 이상을 실행하기 위한 시스템을 도시한다. 서버 610은 네트워크 640을 통하여 사용자 디바이스 650에 연결된다. 서버 610은 서로 연결되는, 프로세서 620 및 메모리 630을 포함한다. 컴퓨터 시스템은, 아파치 서버와 같은, HTTP (Hypertext Transfer Protocol) 서버일 수 있다. 그러나, 서버 610은 단일하거나 다수의 모듈이거나, 다운로드 가능한 컨텐츠 또는 그 일부를 호스팅하는 장치일 수 있음이 고려된다. 나아가, 서버 610은 전용 서버, 공유 서버, 또는 이들의 조합일 수 있다. 예를 들어, 서버 610은 다운로드 가능한 컨텐츠나 그일부의 개발자, 공급자 또는 배포자와 관련된 서버이거나, 피어투피어(P2P)네트워크의 피어 디바이스와 같은, 제 3 서버와 관련된 서버일 수 있다. 나아가, 서버 610은 다운로드 가능한 컨텐츠를 제공하는 가상 마켓이나 온라인 쇼핑 기반 서비스를 포함할 수 있다. 상기 실시예에서, 본 명세서에서 설명된 상기 도작에 더하여, 서버 610은 (단독으로 또는 다른 장치와 조합하여) 과금과 같은, 다양한 상업 거래를 처리하고 수행할 수 있다.
사용자 디바이스 650은 어플리케이션 660, 운영 체제 670, 프로세서 680, 및 메모리 690을 포함한다. 사용자 디바이스 650은 메인 프레임, 미니 컴퓨터, 퍼스널 컴퓨터, 랩탑, 개인 휴대 단말기 (PDA), 휴대 전화, 텔레비전, CD 플레이어, DVD 플레이어, BD 플레이어, 게임기, 타블렛, e-리더, 등일 수 있다. 서버 610와 사용자 디바이스 650는 네트워크 640에 연결될 수 있는 것을 특징으로 한다. 네트워크 640은 유선 또는 무선일 수 있으며, 근거리 통신망 (LAN), 광대역 네트워크 (WAN), (Public Switched Telephone Network (PSTN)과 같은) 전화 네트워크, 라디오 네트워크, 셀룰러, 또는 (GSM, GPRS, CDMA, EV-CO, EDGE, 3GSM, DECT, IS-136/TDA, iDEN과 같은) 휴대 전화 네트워크, 인트라넷, 인터넷, 또는 이들의 조합을 포함 할 수 있다. 메모리 630 및 메모리 690은 예를 들어, 리드 온리 메모리 (ROM), 랜덤 엑세스 메모리 (RAM), 마그네틱 디스크 저장 매체, 광 저장 매체, 플래시 메모리 장치, 집 드라이브, 및 이들의 조합 등을 포함하는, 휘발성 또는 비휘발성 메모리 일 수 있는 모든 타입의 저장 매체일 수 있다. 메모리 630 및 메모리 690은 영구 또는 임시 저장, 또는 둘 모두가 가능할 수 있으며, 내부, 외부, 또는 둘 모두 일 수 있다.
피어투피어 네트워크가 사용되는 실시예에서, 서버 610는 요청되거나 예측된 다운로드 가능한 컨텐츠의 부분을 가지고 오는 사용자 디바이스 650으로부터 제 3 사용자 장치일 수 있다. 이러한 피어투피어 네트워크가 사용되는 경우, 대역폭 이용과 관련 비용은 게시자 서버와 같이, 컨텐츠를 호스팅하는 다른 서버에 의해 감소된다. 예를 들어, 모든 요청되고 예측된 컨텐츠 부분은, 사용자 장치에 650에 의하여 다른 서버들로부터 대역폭 사용을 함께 제거하는, 사용자 장치 650에 의하여 다른 사용자 장치로부터 획득될 수 있다. 다른 실시예에서, 제 3 사용자 디바이스는 사용자 디바이스 650에 의해 다른 서버로부터 대역폭 사용을 감소하면서, 컨텐츠를 제공하기 위해 어플리케이션 공급자의 서버와 함께 사용될 수 있다. 나아가, 사용자 디바이스 650는 서버 610로부터 다운로드 가능한 컨텐츠의 다른 부분을 각각 요청하고, 필요에 따라 그들 자신 사이에 이를 공유하기 위하여 모든 개수의 제 3 사용자 장치와 협력할 수 있다. 이와 같은 실시예에서, 사용자 장치 650 및 제 3 사용자 장치 양자는 서로에게 요청된 컨텐츠 부분을 제공하기 위하여 서버와 클라이언트 프로그램을 실행하는, 호스트로서 작동한다.
어플리케이션 660은 표준 파일 오퍼레이션을 사용하여, 메모리 690에 저장된 데이터를 로드 및 엑세스 하기 위하여 운영 체제 670을 호출한다. 어플리케이션 660은 사용자 장치 650의 사용자와 다운로드 가능한 컨텐츠 사이의 인터페이스를 제공하는 소프트웨어 및/또는 하드웨어일 수 있다. 표준 파일 오퍼레이션은 예를 들어, “열기” (즉, 어떤 파일이 엑세스 되는지를 지정하는), “찾기” (즉, 데이터를 읽기 위해 파일의 어디로 가야 하는지를 지정하는), 및 “닫기” (즉, 당시에 파일이 종료될 것을 요청하는)를 포함한다. 기존 코드를 패치받거나 드라이버를 교체함으로써, 운영 체제670은, “온디멘트” 데이터를 추가적으로 다운로드 하기 위해서 표준 파일 오퍼레이션을 본 명세서에서 설명된 추가적인 동작을 수행하는 신규 버전으로 변환한다. 따라서, 어플리케이션 660은 다운로드 가능한 컨텐츠가 완전히 다운로드 되기 전에 실행을 시작할 수 있다. 나아가, 표준 파일 오퍼레이션을 신규 오퍼레이션으로 대체함으로써, 본 명세서에 설명된 방법론은 새로운 기존 다양한 어플리케이션으로 구현될 수 있다. 예를 들어, 게임 콘텐츠의 스트리밍을 허용하기 위해 게임 코드가 많이 (또는 전혀) 수정될 필요가 없기 때문에, 개시된 실시예들은 종래 또는 에뮬리에트 게임들로 구현될 수 있다.
하나의 실시예에서, 어플리케이션 660 내의 모든 파일은 작성된 어드레스 공간의 고유 위치에 매핑된다. 예를 들어, 어플리케이션 660이 (1) 10kB의 FILE1.DAT 및 (2) 20kB 의 FILE2.DAT 두개의 파일을 가지는 경우, 이 데이터는, 예를 들어, 각각 0-9,999 와 10,000-29,999와 같은, 고유한 위치에 다시 매핑될 수 있다. 이 실시예에서, 어플리케이션 660은 다음과 같은 로컬 요청을 운영 체제 670에 전달한다. : (A) FILE 2.DAT 에 대한 “열기” 요청, (B) 위치 20으로 가기 위한 “ 찾기” 요청, 및 (C) 40바이트에 대한 “읽기” 요청.
일 실시예에서, 운영 체제 670은 어플리케이션 660로부터 수신한 로컬 요청을 사용하여 콘텐츠의 요청된 부분이 메모리 690에 저장되어 있는지 여부를 판단하기 위해 프로세서 680를 지시한다. 컨텐츠의 상기 요청된 부분이 메모리 690에 저장된 경우, 이는 판독되고 어플리케이션 660에 복사된다. 컨텐츠의 상기 요청된 부분이 메모리 690에 저장되어 있지 않은 경우, 운영 체제 670은 어플리케이션으로부터의 로컬 요청을 서버 610가 판독가능한 포멧인 컨텐츠의 원하는 부분에 대한 리모트 요청으로 변환된다. 이 실시예에서, 운영 체제 670은 FILE2.DAT 의 40 바이트 위치 20에 있는 데이터에 대한 로컬 요청을, 위치 10,020에서 10,039에 해당하는 다운로드 가능한 컨텐츠의 부분에 대한 리모트 요청으로 변환하고, 사용자 디바이스 650은 상기 리모트 요청을 서버 610에게 전송한다. 서버 610의 프로세서 620은 다운로드 가능한 컨텐츠의 부분을 메모리 630에서 검색하고 사용자 디바이스 650에 반환한다. 사용자 디바이스 650은 다운로드 가능한 컨텐츠의 상기 요청된 부분을 메모리 690에 저장하고, 어플리케이션 660에 로컬 요청에 대한 응답으로 복사한다. 다운로드 가능한 컨텐츠의 요청된 부분은 이후 어플리케이션 660에 의해 실행될 수 있다.
로컬 요청의 포멧이 프로세서 680 및/또는 메모리 690에 의해 사용된 포멧과 일치하지 않는 다른 실시예에서, 운영 체제 670은 어플리케이션 660으로부터의 로컬 요청을 프로세서 680 및/또는 메모리 690에서 판독 가능한 포멧인 컨텐츠의 원하는 부분에 대한 요청으로 즉시 변환한다. 따라서, 위 실시예에서, 운영 체제 670은 FILE2.DAT 의 40 바이트 위치 20의 데이터에 대한 로컬 요청을, 10,020 에서 10,039 위치에 해당하는 컨텐츠 부분에 대한 로컬 요청으로 변환하고, 어플리케이션 660으로부터 수신한 로컬 요청을 이용하여 컨텐츠의 요청된 부분이 메모리 690에 저장되 있는지 여부를 판단하기 위해 프로세서 680를 지시한다. 컨텐츠의 상기 요청된 부분이 메모리 690에 저장된 경우, 이는 판독되고 어플리케이션 660에 복사된다. 컨텐츠의 상기 요청된 부분이 메모리 690에 저장되지 않은 경우, 운영 체제 670은 위치 10,02,에서 10,039에 해당하는 컨텐츠의 부분에 대한 로컬 요청을, 위치 10,020에서 10,039에 해당하는 컨텐츠의 부분에 대한 리모트 요청으로 변환하고, 그리고 사용자 디바이스 650은 상기 리모트 요청을 서버 610에게 전송한다. 서버 610의 프로세서 620은 다운로드 가능한 컨텐츠의 상기 요청된 부분을 메모리 630에서 검색하고, 이를 사용자 디바이스 650에게 반환한다. 사용자 디바이스 650은 다운로드 가능한 컨텐츠의 상기 요청된 부분을 메모리 690에 저장하고, 상기 로컬 요청에 대한 응답으로 이를 어플리케이션 660에 복사한다. 다운로드 가능한 컨텐츠의 상기 요청된 부분은 이후 어플리케이션 660에 의해 실행될 수 있다.
이제 본 명세서에서 개시되고, 특히 도 1에 대한 특정 방법의 구현으로 되돌아가면, 사용자 디바이스 650의 사용자는 어플리케이션 660을 이용하여 서버 610에서 이용할 수 있는 다운로드 가능한 컨텐츠를 선택한다. 일 실시예에서, 어플리케이션 660의 본래 코드는 전체 다운로드 가능한 컨텐츠에 대한 사용자 요청에 대한 응답하여 다운로드 가능한 컨텐츠의 초기 부분 (예를 들면, 최소 작업 파일)을 요청하기 위해서만 수정된다. 이 실시예에서, 어플리케이션 660을 선택된 컨텐츠의 초기 부분에 대한 로컬 요청을 운영 체제 670에 전달한다. 운영 체제 670는 상기 요청을, 컨텐츠의 초기 부분에 대해 메모리 690를 조회하는 프로세서 680에 전달한다.
어플리케이션 660의 원래 코드가 이러한 방식으로 수정되지 않는 다른 실시예에서, 어플리케이션 660은 다운로드 가능한 컨텐츠 전체 (즉, 다운로드 가능한 컨텐츠 모든 부분)에 대한 사용자 요청에 대한 응답으로 전체 다운로드 가능한 컨텐츠를 요청한다. 이 실시예에서, 어플리케이션 660은 다운로드 가능한 컨텐츠 전체에 대한 로컬 요청을 운영 체제 670에 전송한다. 운영 체제는 다운로드 가능한 컨텐츠 전체에 대한 상기 요청을 다운로드 가능한 컨텐츠 초기 부분에 대한 요청(예를 들어, 초소 작동 파일)으로 변환하고, 이 요청을 프로세서 680에 전달한다.
이러한 실시예들 중의 하나에서, 선택된 컨텐츠의 초기 부분이 메모리 690에 저장된 경우, 이후 이는 운영 체제 670과 프로세서 680과 함께 어플리케이션 660에 의해 실행된다. 선택된 컨텐츠의 초기 부분이 메모리 690에 있지 않은 경우, 이후 운영 체제 670은 상기 로컬 요청을 컨텐츠의 초시 부분에 대한 리모트 요청으로 변환하고, 이를 네트워크 640을 통해 서버 610에 전송한다. 예를 들어, 사용자 디바이스 650으로부터 신호가 전송되고, 상기 신호는 목적지 어드레스(예를 들어, 서버 610을 나타내는 어드레스), 요청 (예를 들어, 컨텐츠의 초기 부분에 대한 요청), 및 리턴 어드레스 (예를 들어, 리모트 요청을 시작한, 사용자 디바이스 650을 나타내는 어드레스)를 갖는다. 프로세서 620은 컨텐츠의 상기 초기 부분에 대해 메모리 630을 조회하고, 이를 사용자 디바이스 650으로 전송한다. 사용자 디바이스 650은 컨텐츠의 초기 부분을 메모리 690에 저장하며, 이는 운영 체제 670과 프로세서 680과 함께 어플리케이션 660에 의하여 실행된다. 어플리케이션 660에 의해 생성된 다운로드 가능한 컨텐츠의 부분에 대한 이후의 로컬 요청은 유사하게 처리된다.
전체 다운로드 가능한 컨텐츠에 대한 사용자 요청에 대한 응답으로 다운로드 가능한 컨텐츠의 초기 부분만을 요청하기 위해 어플리케이션 660이나 운영 체제 670의 원래 코드가 수정되지 않는 또 다른 실시예에서, 어플리케이션 660과 운영체제 670은 전체 다운로드 가능한 컨텐츠를 로컬과 원격으로, 각각, 요청하고, 서버 61은 상기 요청을 변환한다. 특히, 어플리케이션 660은 전체 다운로드 가능한 컨텐츠에 대한 로컬 요청을 운영 체제 670으로 전송한다. 운영 체제 670은 전체 다운로드 가능한 컨텐츠에 대해 메모리 690을 조회하는 프로세서 680에게 상기 요청을 전달한다. 전체 다운로드 가능한 컨텐츠가 메모리 690에 존재하는 경우, 이는 운영 체제 670 및 프로세서 680과 함께 어플리케이션660에 의해 실행된다. 전체 다운로드 가능한 컨텐츠가 메모리 690에 없는 경우, 운영체제 670은 로컬 요청을 전체 컨텐츠에 대한 리모트 요청으로 변환하고, 네트워크 640을 통해 서버 610에게 전송한다. 서버 610은 전체 컨텐츠에 대한 요청을 컨텐츠의 초기 부분에 대한 요청으로 변환하고, (예를 들어, 최소 작업 파일) 그리고 컨텐츠의 상기 초기 부분을 사용자 디바이스 650에게 전송한다. 사용자 디바이스 650은 컨텐츠의 상기 초기 부분을 메모리 690에 저장하고, 이는 운영 체제 670과 프로세서 680과 함게 어플리케이션 660에 의해 실행된다. 어플리케이션 660에 의해 생성되는 다운로드 가능한 컨텐츠의 부분에 대한 후속 로컬 요청은 앞서 설명된 실시예에 따라 운영 체게 670에 의해 국부적으로 변환된다.
도 1의 방법을 구현하는 경우, 다운로드 가능한 컨텐츠의 이전에 요청된 부분이 실행되는 동안, 후속 요청이 수신될 수 있고, 이들의 다운로드 가능한 컨텐츠의 관련 부분이 호출될 수 있다. 즉, 본 명세서에서 설명된 방법의 작용은, 예를 들어 이전의 프로세싱이 완료되기 전에 다른 프로세싱이 계속되는 것을 허용하는 등, 비동기적으로 수행될 수 있다. 이는, 예를 들어, 전체 게임의 다운로드가 완결되기 전에 사용자가 게임을 시작하는 것을 허용한다.
예를 들어, 도 2에 도시된 방법을 구현하는 경우, 네트워크 640과 사용자 디바이스 650은 도 1의 구현에 대해 앞서 설명된 것과 같은 유사한 기능을 수행한다. 또한, 어플리케이션 660으로부터 수신된 로컬 요청은 수신된 순서대로 순차적으로 메모리 690에 다운로드 가능한 컨텐츠 요청 메타데이터로서 저장된다. 프로세서 680은 이러한 다운로드 가능한 컨텐츠 요청 메타데이터에 엑세스하고, 요청 메타데이터 내의 파일 엑세스 패턴을 분석하여 다운로드 가능한 컨텐츠의 부분에 대한 후속 요청을 예측한다. 프로세서 680은, 예를 들어, 다운로드 가능한 컨텐츠의 이전에 요청된 부분 (예를 들어, 다운로드 가능한 컨텐츠의 초기 부분), 이전의 로컬 요청 (예를 들어, 저장된 초기 로컬 요청), 다운로드 가능한 컨텐츠 메타데이터 (예를 들어, 타이틀, 사이즈, 타입, 발행인), 요청 디바이스 메타데이터 (예를 들어, 타입, 운영 체제, 저장 공간, 연결 방식), 및 현재의 사용자 및 다른 사용자 양자에 대한 사용자 메타데이터 (예를 들어, 통계정보, 컨텐츠 엑세스 이력)을 이용하여 더 예측할 수 있다.
프로세서 680은 컨텐츠의 예측된 부분이 국부적으로 저장되어 있는지 여부를 판단하기 위하여 메모리 690을 조회한다. 컨텐츠의 예측된 부분이 메모리 690에 저장되어 있는 경우, 프로세서 680은 다운로드 가능한 컨텐츠의 다른 부분에 대한 다른 후속 요청을 예측하는 등등을 한다. 다운로드 가능한 컨텐츠의 예측된 부분이 메모리 690에 저장도어 있지 않은 경우, 운영 체제 670은 컨텐츠의 예측된 부분에 대한 리모트 요청을 생성하고, 이를 네트워크 640을 통해 서버 610으로 전송한다. 서버 610은 도 1의 구현에 대해 앞서 설명한 바와 같이 상기 리모트 요청을 수행하고, 이는 메모리 690에 로컬로 저장된다.
일 실시예에서, 예측된 요청은 메모리 690에 예측 요청 메타데이터로 저장된다. 따라서, 후속 로컬 요청이 어플리케이션 660으로부터 실제로 운영 체제 670에서 수신될 때, 프로세서 680은 순차적인 해당 예상 요청을 메모리 690으로부터 요청하고, 상기 예측을 후속 로컬 요청과 비교한다. 후속 로컬 요청이 예측된 다운로드 가능한 컨텐츠의 동일한 부분에 대한 것이라면, 메모리 690내에 저장된, 컨텐츠의 예측 부분이 운영 체제 670과 프로세서 680과 함께 어플리케이션 660에 의해 실행된다. 후속 로컬 요청이 예측된 것보다 다운로드 가능한 컨텐츠의 다른 부분에 대한 것이라면, 프로세서 680은 컨텐츠의 상기 요청된 부분이 국부적으로 저장되어 있는지 여부를 판단하기 위해 메모리 690를 조회한다. 어느 경우에도, 예측 요청 메타데이터는 상기 예측이 정확했는지 여부를 반영하기 위해 업데이트될 수 있고, 미래의 예측을 세분화하기 위해 사용될 수 있다. 도 2의 구현은 도 1의 구현에 대해 앞서 설명한 바와 같이 계속된다.
다른 실시예에서, 예측 요청은 메모리 690에 저장될 필요가 없다. 따라서, 후속 로컬 요청이 어플리케이션 660으로부터 운영 체제670에서 실제로 수신되는 경우, 프로세서 680은 컨텐츠의 요청된 부분이 국부적으로 저장되어 있는지 여부를 판단하기 위해 단순히 메모리 690를 조회한다. 즉, 프로세서 680은 컨텐츠의 요청 부분이 메모리 690에서 어떻게 사용될 수 있는지를 고려하지 않는다. 도 2의 구현은 도 1의 구현에 대해 앞서 서술한 바와 같이 계속된다.
도 3에 도시된 방법을 구현하는 경우, 어플리케이션 660은 운영 체제 670과 프로세서 680과 함께, 다운로드 가능한 컨텐츠의 초기 부분을 실행한다. 프로세서 680은 다운로드 가능한 컨텐츠의 다음 부분이 실행가능한지 여부 (예를 들어 다음 부분에 대하여 데이터의 적어도 최소한의 작동 양이 메모리 690에 저장되어 있는지 여부)를 판단하기 위해 메모리 690를 조회한다. 컨텐츠의 다음 부분이 실행가능한 경우, 이는 초기 부분의 실행을 완료한 때 어플리케이션 660에게 제공되어 실행된다.
초기 부분의 실행이 완료된 때 컨텐츠의 다음 부분이 실행될 수 없는 경우, 운영 체제 670은 어플리케이션 660에 의해 다운로드 가능한 컨텐츠의 실행을 일시 중단한다. 즉, 컨텐츠의 초기 부분과 후속 부분의 실행 사이에 지연이 도입된다. 프로세서 680은 저장된 실행되는 딜레이 메시지를 컨텐츠의 다음 부분이 실행가능할 때까지 메모리 690으로부터 검색하고 어플리케이션 660에 반환한다. 컨텐츠의 부분의 다운로딩이 다운로드 가능한 컨텐츠의 실행과 별도의 프로세스에서 수행되기 때문에 (그리고 로컬 요청에 응답하는 컨텐츠의 다음 부분이 사용할 수 있을 때까지 다운로드 가능한 컨텐츠의 수행이 어플리케이션 660에 의해 일시 정지되기 때문에) 이상 시간 제한 및기타 비정상적인 상황이 발생하는 것을 방지한다. 즉, 어플리케이션 660은 컨텐츠의 다음 부분을 사용할 수 없고 컨텐츠의 그 부분이 사용될 수 있을 때까지 그 프로세스는 일시 중단된다는 것 모두를 인식하지 못한 채로 남는다. 어플리케이션660이 일시 중단되는 시간을 최소화하기 위해, 도 2 및 5에 대해 앞서 설명한 바와 같이, 어플리케이션 660에 의해 요청될 가능성이 있는 컨텐츠의 부분을 요청될 동일한 순서로 요청하기 위해 예측은 공식화한다.
다운로드 가능한 컨텐츠 요청 메타데이터를 수립하고 유지하는, 도 4에서 도시된 방법의 구현에서, 서버 610은 다운로드 가능한 컨텐츠의 부분에 대한 요청을 사용자 디바이스 650으로부터 네트워크 640을 통해 수신한다. 프로세서 620은 컨텐츠의 요청된 부분을 메모리 630으로부터 검색하고, 사용자 디바이스 650에게 네트워크 640을 통해 전송한다. 프로세서 620은 다운로드 가능한 컨텐츠의 부분에 대한 요청을 수신한 순서대로 순차적으로 메모리 630에 저장한다. 도 5에 도시된 방법의 구현에 대해 더 설명된 바와 같이, 파일 요청의 이러한 순차 목록은 서버 610 에 의해 컨텐츠의 부분에 대한 후속 요청을 예측하기 위해 사용될 다운로드 가능한 컨텐츠 요청 메타데이터를 구성한다.
서버 610 및 사용자 자? 650 모두의 예측을 세분화하기 위해 본 명세서에서 예측을 위해 사용되는 다양한 타입의 데이터가 서버 610와 사용자 디바이스 650 사이에 공유되는 것이 고려된다. 예를 들어, 컨텐츠의 특정 실행에서 만드는 요청의 순차적 리스팅을 더욱 정확하게 제공하기 위해 사용자 디바이스 650는 다운로드 가능한 컨텐츠 요청 메타데이터를 서버 610과 분리하여 수립하고, 유지하고, 공유할 수 있다. 따라서, 서버610에서 사용가능한 다운로드 가능한 컨텐츠 요청 메타데이터는 원격으로 만들어진 요청에 제한되지 않으며, 국부적으로 사용가능한 컨텐츠의 부분에 대해 로컬로 만들어진 요청을 더 포함할 수 있다.
도 5에 도시된 방법의 구현에서, 서버 610은 컨텐츠의 부분에 대한 초기 요청을 수신하고 앞서 설명된 바와 같이 컨텐츠의 부분을 사용자 디바이스 650로 전송한다. 이러한 실시예에서, 프로세서 620은 다운로드 가능한 컨텐츠 요청 메타데이터를 메모리 630에서 엑세스하고, 도 5에 대해 앞서 설명된 바와 같이, 다운로드 가능한 컨텐츠의 부분에 대한 후속 요청을 예측한다. 선택적으로, 프로세서 620은 컨텐츠의 예측된 부분이 사용자 디바이스 650에 저장되어 있는지 여부를 판단한다. 일 실시예에서, 프로세서 620은 컨텐츠의 예측된 부분이 사용자 디바이스 650에 의해 이전에 요청되었는지, 그리고/ 또는 사용자 디바이스 650으로 전송되었는지를 나타내는 정보를 위해 메모리 630 내에서 파일 요청 기록을 검색하여 이러한 판단을 수행한다. 컨텐츠의 예측된 부분이 사용자 디바이스 650에 의해 이전에 요청되지 않거나, 그리고/ 또는 사용자 디바이스 650으로 전송되지 않는 경우, 컨텐츠의 예측 부분은 서버 610로부터 메모리 690상에 전송되거나, 또는 “푸시”된다. 컨텐츠의 예측된 부분이 사용자 디바이스 650에 의해 이전에 요청되거나, 그리고/ 또는 사용자 디바이스 650로 전송된 경우, 프로세서 620은 다운로드 가능한 컨텐츠의 부분에 대한 후속 요청을 예측한다.
다른 실시예에서, 프로세서 620은 사용자 디바이스 650으로 네트워크 640을 통해 컨텐츠의 예측 부분이 메모리 690에 저장되어 있는지 여부에 대한 쿼리를 전송한다. 프로세서 680은 컨텐츠의 예측 부분이 국부적으로 저장되어 있는지 여부를 판단하기 위해 메모리 690을 조회한다. 프로세서 680은 이후 긍정 또는 부정 응답을 네트워크 640을 통해 서버 610으로 전송한다. 컨텐츠의 예측 부분이 사용자 디바이스 650에 저장되지 않은 경우, 컨텐츠의 예측 부분은 서버 610으로부터 메모리 690 상에 전송되거나, “푸시”된다. 컨테츠의 예측 부분이 사용자 디바이스 650에 실제로 저장된 경우, 프로세서 620은 다운로드 가능한 컨텐츠의 부분에 대한 후속 요청을 예측한다.
프로세서 620이 컨텐츠의 예측 부분이 사용자 디바이스 650에 저장되어 있는지 여부를 판단하지 않는 실시예에서, 서버 610는 컨텐츠의 예측 부분을 사용자 디바이스 650의 메모리 690으로 전송하거나 “푸시”하는 것을 진행한다. 사용자 디바이스 650의 프로세서 680은, 상기 부분의 전송을 종료하기 위하여 서버 610에게 요청을 전송할 수 있는 경우, 컨텐츠의 푸시 부분이 메모리 690에 이미 저장되어 있는지 여부를 판단한다. 대안적으로, 프로세서 680은 단순히 컨텐츠의 푸시 부분을 메모리 690에서 미리 저장된 부분에 덮어쓰도록 허락할 수 있다. 컨텐츠의 푸시 부분이 메모리 690에 미리 저장되지 않은 경우, 이는 컨텐츠의 부분에 대한 로컬 요청에 응답하도록 그 내부에 저장될 수 있다.
앞서 설명된 실시예에서, 서버 610 및/ 또는 사용자 디바이스 650은 메모리 690내에서 다운로드 가능한 컨텐츠의 부분의 삭제를 시작할 수 있다. 따라서, 메모리 690가 가득차고 실행을 계속하기 위해 다운로드 가능한 컨텐츠의 추가 부분이 요구되는 경우, 새로운 부분을 위한 공간을 만들기 위해 폐기되는 부분을 결정하기 위해 캐시 알고리즘이 사용될 수 있다. 예를 들어, 24 GB 게임에서 사용자가 총 30 레벨의 15레벨에 있고, 게임기는 12 GB의 저장공간만 있는 경우, 게임의 실행을 계속하기 위해 필요한 컨텐츠의 요청 또는 예측된 부분 (예를 들어, 다음 레벨 16에 대한 부분)에 대한 저장 공간을 구하기 위해 게임의 최근에 가장 적게 엑세스된 부분 (예를 들어, 레벨 1에 대한 부분)이 제거될 수 있다.
따라서, 설명된 실시예와 함께 캐시 알고리즘을 개시함으로써, 사용자 디바이스 650의 저장공간을 초과하는 사이즈인 다운로드 가능한 컨텐츠는 실행될 수 없는게 아니라, 사용자에게 최소한의 지연으로 실행될 수 있다. 예를 들어, 로컬 저장매체 제한, 과도한 다운로드 시간과 큰 대역폭 사용량 때문에 물리 매체에 의한 배포가 이전에 제한된 컨텐츠 (예를 들어, 종래에 블루 레이 디스크에 분산된 컨텐츠)는, 개시된 시스템 및 방법에 따라 서버 610에 의해 전송되고 사용자 디바이스 650에 의해 실행될 수 있다.
상기 설명된 시스템과 방법은 사용자 디바이스 650이 셀룰러 네트워크 64을 통해 서버 610으로부터 다운로드 가능한 컨텐츠를 요청하는 모바일 디바이스인 실시예에서도 또한 유용하다. 통상적으로, 셀룰러 네크워크의 느린 전송 속도, 셀룰러 네트워크와 관련된 높은 데이터 전송 비용, 및 작은 사이즈가 선호되는 모바일 디바이스에서 제공되는 매우 제한된 저장공간 때문에, 이러한 모바일 디바이스는 다운로드 가능한 컨텐츠에 대한 엑세스가 제한되어 왔다. 그러나, 이러한 상황에서 개시되는 시스템 및 방법의 구현으로 인하여, 모든 데이터가 없이도 컨텐츠는 실행이 시작될 수 있으며, 실행이 계속되기 위하여 특정 시간에만 컨텐츠의 부분이 필요하기 때문에, 느린 전송 속도로 인한 지연이 감소된다. 불필요한 부분에 대한 전송 비용을 제거하면서, 컨텐츠의 필요한 부분만이 다운로드되기 때문에 발생한 데이터 전송 비용도 제한된다. 나아가, 상기 설명된 캐시 알고리즘과 함께 구현될 때, 다운로드 가능한 컨텐츠는 모바일 디바이스의 저장 공간의 사이즈에 의해 제한되지 않는다.
본 명세서에 개시된 시스템 및 방법은 또한 “시험” 이나 “데모” 컨텐츠를 최적화하도록 구현될 수 있다. 이러한 “데모”는 전체 컨텐츠를 구입하거나 다운로드하기 전에 일정 시간 또는 무제한 시간동안 사용자에게 무료로 적어도 컨텐츠의 부분을 시도하도록 허용할 수 있다. 전통적으로, 이러한 데모는 사용자에게 전체 컨텐츠의 다운로드를 허용하지만, 컨텐츠의 특정 부분의 실행은 제한되도록 제공된다. 전체 컨텐츠는, 예를 들어, 컨텐츠의 이전에 차단된 부분을 해제하는, 활성화 키를 구입할 때, 엑세스되고 실행될 수 있다. 이러한 시스템은, 사용자가 다운로드 가능한 컨텐츠의 제한된 부분에만 엑세스하는 경우라도 전체 컨텐츠를 다운로드하는 것을 요구하는 것과 같은 다양한 불편을 제공한다. 따라서, 필요한 것보다 시험의 사용자의 즐거움을 지연하면서, 시험에 사용될 것보다 더 많은 데이터가 다운로드되고 저장된다. 나아가, 데모를 시도하고 전체 컨텐츠에 관심이 없는 것을 결정한 사용자는 추가적인 다운로드 가능한 컨텐츠가 필요가 없게 될 것이다. 또한, 활성화키의 구입 없이도, 차단된 컨텐츠의 부분은 잠재적으로 다운로드 한번에 해킹당할 수 있다.
다른 데모는 시험과 관련된 데이터만 포함된 다운로드 가능한 컨텐츠의 버전을 삭제한다. 이러한 삭제된 버전은 전체 컨텐츠를 엑세스하는 해커에 대한 가능성을 제거하지만, 개발자에게 삭제된 컨텐츠를 전체 컨텐츠와 분리하여 생성하도록 요구한다. 나아가, 이러한 유형의 데모는 특정 실행에 필요한 특정 데모 파일 뿐만 아니라, 시험과 관련된 모든 파일의 전체 다운로드를 여전히 요구한다. 사용자가 전체 컨텐츠를 구입하기로 결정한 경우, 사용자는 이전의 다운로드에도 불구하고 시험 컨텐츠의 부분을 다시 다운로드하는 것이 요구될 수 있으며, 시험 컨텐츠와 관련하여 저장된 프로세스나 데이터를 잃을 수 있다. 나아가, 사용자는 구입시 여전히 전체 컨텐츠를 실행 전에 다운로드해야 한다.
그러나, 본 명세서에 개시된 실시예를 적용함으로써, 사용자에게 컨텐츠의 데모를 제공하기 위해 별도의 삭제되지 않은 버전의 컨텐츠가 요구되지 않는다. 예를 들어, 서버 610은 메모리 630에 저장된 컨텐츠의 단일 버전을 가질 수 있으며, 동일한 버전이 실험과 컨텐츠 전체 부분 양자를 제공하기 위해 요구하는 디바이스에게 엑세스될 수 있다. 나아가, 데모는 데모나 전체 컨텐츠가 완전히 다운로드되는 것을 기다리지 않고 실행을 시작할 수 있다.
일 실시예에서, 서버 610은 사용자 디바이스 650에 전송되는 (원격으로 요청되거나 예측된) 컨텐츠의 부분을 시험 컨텐츠로 식별되는 컨텐츠의 부분으로만 제한한다. 앞서 설명한 예시 외에도, FILE1.DAT이 시험 및 전체 컨텐츠 양자에 관련된 유일한 파일인 경우, 서버 610은 0-9,999 위치에 대응하는 컨텐츠 부분에 대해서만 리모트 요청에 응답할 수 있다. 위치 0-9,999의 이외의 컨텐츠 부분이 요구되는 경우, 서버 610은 이후 (예를 들어, 요청된 컨텐츠는 시험판 이외이거나 시험이 종료되었음을 나타내는) 에러 메시지를 사용자 디바이스 650에 전송할 수 있다. 서버 610은 메모리 630에 포함된 다운로드 가능한 컨텐츠 메타데이터 및/또는 다운로드 가능한 컨텐츠 요청 메타데이터를 이용하여 사용자 디바이스 650에게 시험이나 전체 엑세스 권한을 부여해야 하는지 여부를 판단할 수 있다.
다른 실시예에서, 사용자 디바이스 650 자체는 서버 610으로부터 리모트 요청된 (국부적으로서 요청되거나 예측된) 컨텐츠 부분을 제한한다. FILE1.DAT이 시험 및 전체 컨텐츠와 관련된 유일한 파일인 경우, 프로세서 680는 어플리케이션 660으로부터의 로컬 요청에 0-9,999 위치에 대한 컨텐츠 부분에 대해서만 응답할 수 있다. 위치 0-9,999 이외의 컨텐츠 부분이 요청되는 경우, 프로세서 680은 (예를 들어, 요청된 컨텐츠는 시험판 이외이거나 시험이 종료되었음을 나타내는) 에러 메시지를 생성하고 어플리케이션 660에 제공할 수 있다. 프로세서 680은 메모리 690에 포함된 다운로드 가능한 컨텐츠 메타데이터 및/또는 다운로드 가능한 컨텐츠 요청 메타데이터를 이용하여 어플리케이션 660에게 시험 또는 전체 엑세스 권한을 부여해야 하는지 여부를 확인할 수 있다. 이러한 메타데이터는 시험 또는 전체와 같은 컨텐츠의 식별을 조작하는 것으로부터 사용자를 보호하기 위해 디지털 권한 관리(digital rights management, DRM) 보호 등으로 제공할 수 있다. 해킹 및 허가받지 않은 컨텐츠의 도용에 대해 양방향 보호를 제공하기 위하여 이러한 실시예가 앞의 실시예와 결합될 수 있음이 고려된다.
상기 실시예들 중 하나와 조합에서 (또는 다른 실시예에서), 서버 610 및/또는 사용자 디바이스 650은 시간 제한 데모의 실행에 사용될 수 있다. . 예를 들어, 서버 610 및/또는 사용자 디바이스 650은 컨텐츠에 대한 초기 요청이 수신된 이후 설정된 것보다 더 많은 시간이 경과되었는지 여부를 판단할 수 있다. 서버 610 및/ 또는 사용자 디바이스 650가 시간을 초과하여 요청을 수신한 경우, 시험이 종료되었음을 알리는 에러 메시지가 생성될 수 있다. 따라서, 이러한 실시예에 따르면, 사용자 디바이스 650에 의해 시험 실행에 필요한 데이터 (또는 그 부분)만 메모리 690에 다운로드 된다.
도 1-5에 도시된 방법에 대해 개시되었음에도 불구하고, 본 명세서에 설명된 모든 방법들은 유사하게 수행될 수 있다고 이해된다. 나아가, 특정 디바이스와 함께 설명되지만, 다양한 유사한 디바이스나 모듈이 본 명세서에서 설명된 프로세스를 수행하기 위해서 사용될 수 있는 것으로 이해된다. 이들 및 다른 실시예의 기능은 유형 매체상에 기록된 컴퓨터로 실행 가능한 명령들의 모듈로서 설명될 수 있다. 이러한 모듈은 다양한 디바이스에서 다양한 방식으로 분리될 수 있다.
도 7은, 장치가 본 명세서에서 개시된 하나 이상의 방법론을 수행하기 위해, 명령어 세트가 실행될 수 있는 컴퓨터 시스템 770의 예시적인 형태에서 장치의 개략도를 도시한다. 다른 실시예에서, 장치는 독립형 디바이스로서 작동하거나 다른 장치(예를 들어, 네트워크)들과 연결될 수 있다. 네트워크 배치에서, 장치는 서버-클라이언트 네트워크 환경에서, 호스트 장치나 피어투피어 (또는 분산) 네트워크 환경에서 피어 장치와 같은, 서버나 클라이언트 장치의 지위로 동작할 수 있다. 상기 장치는 개인용 컴퓨터 (PC), 태블릿, 셋톱 박스 (STB), 개인 휴대 정보 단말기 (PDA), 셀룰러 전화기, 웹 어플라이언스, 네트워크 라우터, 스위치 또는 브리지, 게임기, 텔레비전, CD 플레이어, DVD 플레이어, BD 플레이어, e-리더, 또는 상기 장치에 의해 수행되는 동작을 지정하는 (순차적이거나 그렇지 않은) 명령어 집합을 실행할 수 있는 모든 장치일 수 있다. 나아가, 단일 장치만 도시되었음에도 불구하고, 용어 “장치” 는 또한 본 명세서에 설명된 하나 이상의 방법을 수행하기 위해 명령어의 세트를 개별적이거나 공동으로 실행하는 모든 장치의 조합이 포함될 수 있다.
일부 실시예에 따르면, 컴퓨터 시스템 700은 프로세서 750 (예를 들어, 중앙 처리 장치 (CPU), 그래픽 처리 장치 (GPU) 또는 둘 모두), 메인 메모리760 (예를 들어, 읽기 전용 메모리 (ROM), 플래시 메모리, 동기식 DRAM(synchronous DRAM, SDRAM) 이나 램버스 DRAM (Rambus DRAM, RDRAM) 등의 동적 랜덤 엑세스 메모리 (dynamic random access memory, DRAM) 및/또는 버스 795를 통해 서로 통신하는 정적 메모리 770 (예를 들어 플래시 메모리, 정적 랜덤 엑세스 메모리 (static random access memory, SRAM 등) 를 포함한다.
일부 실시예에 따르면, 컴퓨터 시스템 700은 영상 표시부 710 (예를 들어, 액정 디스플레이 (LCD), 발광 다이오드 디스플레이 (LED), 전계 발광 디스플레이 (ELD), 플라즈마 디스플레이 패널 (PDP), 유기 발광 다이오드 디스플레이 (OLED), 표면 전도형 전자 방출 디스플레이 (SED), 나노 크리스탈 디스플레이, 3D 디스플레이, 또는 음극선관 (CRT))를 더 포함할 수 있다. 일부 실시예에 따르면, 컴퓨터 시스템 700은 또한 문자숫자 입력 장치 715 (예를 들어, 키보드), 커서 제어 장치 720 (예를 들어, 마우스 또는 컨트롤러), 디스크 드라이브 유닛 730, 신호 생성 장치 740 (예를 들어, 스피커) 및 / 또는 네트워크 인터페이스 장치 780를 포함할 수 있다.
디스크 드라이브부 730는 본 명세서에 기재된 방법 또는 기능 중 하나 이상을 구현하는 하나 이상의 명령어 집합 (예를 들어, 소프트웨어 736)을 저장하는 컴퓨터 판독 가능 매체 734를 포함한다. 소프트웨어 736는, 완전하게나 적어도 부분적으로, 컴퓨터 시스템 700, 메인 메모리 760 및 프로세서 750에 의해 실행되는 동안 메인 메모리 760 및/또는 프로세서 750에 또한 속할 수 있다. 프로세서 (750)와 메인 메모리 760은 또한 명령어 754 및 764를 각각 가지는 컴퓨터 판독 가능 매체를 구성할 수 있다. 소프트웨어 736는 나아가 네트워크 인터페이스 디바이스 780을 통하여 네트워크 790로 전송되거나 수신될 수 있다.
비록 예시적인 실시예에 컴퓨터 판독 가능 매체 734가 단일 매체로 도시되어 있다 하더라도, "컴퓨터 판독 가능 매체" 라는 용어는 하나 이상의 명령어들의 집합을 저장하는 단일 매체 또는 다수 매체 (예를 들어, 중앙 집중 또는 분산 데이터베이스 및/ 또는 연관 캐시와 서버)를 포함하는 것으로 이해되어야 한다. “컴퓨터 판독 가능 매체”라는 용어는 또한, 장치에 의해 실행되는 명령어의 집합을 저장, 인코딩 또는 전달할 수 있으며 상기 장치가 개시된 실시예들의 하나 이상의 방법들을 수행하도록 하는 모든 매체를 포함하는 것으로 이해되어야 한다.
본 명세서에서 개시된 프로세스 및 기술들은 본질적으로 임의의 특정 장치에 관련되지 않으며, 구성 요소의 적절한 조합에 의해 구현 될 수 있는 것으로 이해되어야 한다. 나아가, 다양한 종류의 범용 디바이스가 본 명세서에 개시된 기술에 따라 사용될 수 있다. 또한, 본 명세서에 개시된 방법을 수행하기 위해 특수화된 장치를 구성하는 것이 유리할 수 있다. 통상의 기술자는 개시된 실시예들을 실시하기 위해 하드웨어, 소프트웨어 및 펌웨어의 많은 다양한 조합이 적절하다는 것을 이해할 수 있다.
본발명의 실시예들은 한정보다는 모든 면에서 예시적인 것을 의도한 특정 실시예에 대해 설명되었다. 나아가, 많은 예시와 구현에 대해 실시예들이 설명되었지만, 이는 본 발명의 실시예의 범위 내에서 다양한 수정 및 균등한 구성이 가능한 것으로 이해되어야 한다.
본 발명의 다른 실시예들은 본 명세서에 계시된 실시예들의 상세한 설명 및 실행을 고려하면 통상의 기술자에게 명백할 것이다. 개시된 실시예들의 다양한 측면 및/또는 구성 요소들은 단일 또는 조합하여 사용될 수 있다. 상세한 설명 및 실시예들은 청구 범위에 의해 지시되는 발명의 진정한 범위 및 사상에 의해 단지 예시로 간주되도록 의도하였다.
620: 프로세서
630 : 메모리
640 : 네트워크
660 : 어플리케이션
670: 운영 시스템
680 : 프로세서
690 : 메모리
710 : 비디오 디스플레이
715 : 영숫자 입력 장치
720 : 커서 제어 장치
730 : 드라이브 장치
734 : 컴퓨터로 읽기가능한 메체
736 : 명령어들
740 : 신호 생성 장치
750 : 프로세서
754 : 명령어들
760 : 메인 메모리
764 : 명령어들
770 : 정적 메모리
780 : 네트워크 인터페이스 장치
790 : 네트워크

Claims (37)

  1. 다운로드 컨텐츠의 전송을 최적화하는 방법에 있어서,
    상기 다운로드 가능한 컨텐츠의 복수의 부분들의 제 1 부분에 대한 제 1 로컬 요청을 수신하는 단계;
    상기 제 1 로컬 요청을 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분에 대한 제 1 리모트 요청으로 변환하는 단계;
    상기 제 1 리모트 요청을 전송하는 단계;
    상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 수신하는 단계;
    상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 저장하는 단계; 및
    상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제 1항에 있어서,
    상기 다운로드 가능한 컨텐츠의 상기 복수의 부분의 제 2 부분에 대한 제 2 로컬 요청을 수신하는 단계;
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있는지를 판단하는 단계; 및
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있는 경우, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 실행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제 1항에 있어서,
    상기 다운로드 가능한 컨텐츠의 상기 복수의 부분의 제 2 부분에 대한 제 2 로컬 요청을 수신하는 단계;
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있는지를 판단하는 단계; 및
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있지 않은 경우, 상기 제 2 로컬 요청을, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분에 대한 제 2 리모트 요청으로 변환하는 단계;상기 제 2 리모트 요청을 전송하는 단계; 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 수신하는 단계;상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 국부적으로 저장하는 단계; 및상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행한 이후에 실행하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제 3항에 있어서, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분은,
    상기다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행하는 단계 이전 또는 동시에 수신되는 것을 특징으로 하는 방법.
  5. 제 3항에 있어서,
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행하는 단계 이전 또는 동시에 수신되지 않는 경우, 에러 메시지를 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 제 3항에 있어서,
    상기 제 1 로컬 요청 및 상기 제 2 로컬 요청을, 다운로드 가능한 컨텐츠 요청 메타데이터로 순차적으로 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서,
    상기 다운로드 가능한 컨텐츠의 상기 복수의 부분의 제 2 부분을 수신하는 단계;
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 국부적으로 저장하는 단계; 및
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행한 후에 실행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 제 1항에 있어서,
    상기 다운로드 가능한 컨텐츠의 복수의 부분의 제 2 부분에 대한 제2 로컬 요청을 예측하는 단계;
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있는지를 판단하는 단계;
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있는 경우, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 실행하는 단계; 및
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있지 않은 경우, 상기 제 2 로컬 요청을 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분에 대한 제 2 리모트 요청으로 변환하는 단계;상기 제 2 리모트 요청을 전송하는 단계; 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 수신하는 단계;상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 국부적으로 저장하는 단계; 및상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행한 이후에 실행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 제 8항에 있어서, 상기 제 2 로컬 요청은,
    상기 제 1 로컬 요청, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분, 다운로드 가능한 컨텐츠 메타데이터, 및 다운로드 가능한 컨텐츠 요청 메타데이터 중 적어도 하나를 이용하여 예측되는 것을 특징으로 하는 방법.
  10. 제 1 항에 있어서,
    상기 다운로드 가능한 컨텐츠의 상기 복수의 부분의 제 2 부분에 대한 제 2 리모트 요청을 예측하는 단계;
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 수신하는 단계;
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 국부적으로 저장하는 단계; 및
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행한 이후에 실행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  11. 제 10항에 있어서, 상기 제 2 로컬 요청은,
    상기 제 1 로컬 요청, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분, 다운로드 가능한 컨텐츠 메타데이터, 및 다운로드 가능한 컨텐츠 요청 메타데이터 중 적어도 하나를 이용하여 예측되는 것을 특징으로 하는 방법.
  12. 다운로드 가능한 컨텐츠의 전송을 최적화하는 시스템에 있어서,
    상기 다운로드 가능한 컨텐츠의 복수의 부분들의 제 1 부분에 대한 제 1 로컬 요청을 수신하고,
    상기 제 1 로컬 요청을 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분에 대한 제 1 리모트 요청으로 변환하고,
    상기 제 1 리모트 요청을 네크워크로전송하고,
    상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 상기 네트워크로 수신하고,
    상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행하는 프로세서; 및
    적어도 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 저장하는 메모리를 포함하는 것을 특징으로 하는 시스템.
  13. 제 12항에 있어서, 상기 프로세서는,
    상기 다운로드 가능한 컨텐츠의 상기 복수의 부분의 제 2 부분에 대한 제 2 로컬 요청을 수신하고,
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있는지를 판단하고, 그리고
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있는 경우, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 실행하는 것을 특징으로 하는 시스템.
  14. 제 12항에 있어서, 상기 프로세서는,
    상기 다운로드 가능한 컨텐츠의 상기 복수의 부분의 제 2 부분에 대한 제 2 로컬 요청을 수신하고,
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있는지를 판단하고, 그리고
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있지 않은 경우, 상기 제 2 로컬 요청을, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분에 대한 제 2 리모트 요청으로 변환하고, 상기 제 2 리모트 요청을 상기 네트워크로 전송하고, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 상기 네트워크로 수신하고, 그리고 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행한 이후에 실행하는 것을 특징으로 하는 시스템.
  15. 제 14항에 있어서, 상기 프로세서는,
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을, 상기다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행하기 이전 또는 동시에 수신하는 것을 특징으로 하는 시스템.
  16. 제 14항에 있어서, 상기 프로세서는,
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행하기 이전 또는 동시에 수신되지 않는 경우, 에러 메시지를 생성하는 것을 특징으로 하는 시스템.
  17. 제 14항에 있어서, 상기 메모리는,
    복수의 로컬 요청들을, 다운로드 가능한 컨텐츠 요청 메타데이터로 순차적으로 저장하는 것을 특징으로 하는 시스템.
  18. 제 12항에 있어서, 상기 프로세서는,
    제 2 로컬 요청을, 상기 다운로드 가능한 컨텐츠의 복수의 부분의 제 2 부분을 위해 예측하는 것을 특징으로 하는 시스템.
  19. 제 18항에 있어서, 상기 프로세서는,
    상기 제 2 로컬 요청을, (A) 상기 메모리에 저장된 상기 다운로드 가능한 컨텐츠의 상기 복수의 부분 중 적어도 하나, (B) 상기 메모리에 저장된 상기 복수의 로컬 요청 중 적어도 하나, (C) 다운로드 가능한 컨텐츠 메타데이터, 및 (D) 다운로드 가능한 컨텐츠 요청 메타데이터로 구성된 그룹 중 선택된 적어도 하나를 이용하여 예측하는 것을 특징으로 하는 시스템.
  20. 제 12항에 있어서,
    상기 프로세서에 연결되어, 상기 다운로드 가능한 컨텐츠의 상기 복수의 부분의 적어도 하나의 부분을 표시하는 디스플레이를 더 포함하는 것을 특징으로 하는 시스템.
  21. 컴퓨터로 실행가능한 명령들이 내장되어 있는 컴퓨터로 읽기 가능한 기록매체에 있어서, 상기 명령들은,
    상기 다운로드 가능한 컨텐츠의 복수의 부분들의 제 1 부분에 대한 제 1 로컬 요청을 수신하는 기능,
    상기 제 1 로컬 요청을 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분에 대한 제 1 리모트 요청으로 변환하는 기능,
    상기 제 1 리모트 요청을 전송하는 기능,
    상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 수신하는 기능,
    상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 저장하는 기능, 및
    상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행하는 기능을 수행하는 것을 특징으로 하는 기록매체
  22. 제 21항에 있어서, 상기 명령들은,
    상기 다운로드 가능한 컨텐츠의 상기 복수의 부분의 제 2 부분에 대한 제 2 로컬 요청을 수신하는 기능,
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있는지를 판단하는 기능, 및
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있는 경우, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 실행하는 기능을 더 수행하는 것을 특징으로 하는 기록매체.
  23. 제 21항에 있어서, 상기 명령들은,
    상기 다운로드 가능한 컨텐츠의 상기 복수의 부분의 제 2 부분에 대한 제 2 로컬 요청을 수신하는 기능,
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있는지를 판단하는 기능, 및
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있지 않은 경우, 상기 제 2 로컬 요청을, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분에 대한 제 2 리모트 요청으로 변환하는 기능, 상기 제 2 리모트 요청을 전송하는 기능, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 수신하는 기능, 및 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행한 이후에 실행하는 기능을 더 수행하는 것을 특징으로 하는 기록매체.
  24. 제 23항에 있어서, 상기 명령들은,
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을, 상기다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행하기 이전 또는 동시에 수신하는 기능을 더 수행하는 것을 특징으로 하는 기록매체,
  25. 제 23항에 있어서, 상기 명령들은,
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행하는 단계 이전 또는 동시에 수신되지 않는 경우, 에러 메시지를 생성하는 기능을 더 수행하는 것을 특징으로 하는 기록매체,
  26. 제 23항에 있어서, 상기 명령들은,
    상기 제 1 로컬 요청 및 상기 제 2 로컬 요청을, 다운로드 가능한 컨텐츠 요청 메타데이터로 순차적으로 저장하는 기능을 더 수행하는 것을 특징으로 하는 기록매체.
  27. 제 21항에 있어서, 상기 명령들은,
    제 2 로컬 요청을, 상기 다운로드 가능한 컨텐츠의 복수의 부분의 제 2 부분을 위해 예측하는 기능을 더 수행하는 것을 특징으로 하는 기록매체.
  28. 제 27항에 있어서, 상기 제 2 로컬 요청은,
    상기 제 1 로컬 요청, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분, 다운로드 가능한 컨텐츠 메타데이터, 및 다운로드 가능한 컨텐츠 요청 메타데이터 중 적어도 하나를 이용하여 예측되는 것을 특징으로 하는 기록매체.
  29. 다운로드 가능한 컨텐츠의 전송을 최적화하는 시스템에 있어서,
    상기 다운로드 가능한 컨텐츠의 복수의 부분들의 제 1 부분에 대한 제 1 로컬 요청을, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분에 대한 제 1 리모트 요청으로 변환하는 동작을 수행하는 변환 모듈;
    상기 제 1 로컬요청을 수신하고, 상기 제 1 리모트 요청을 전송하고, 그리고 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 수신하는 동작을 수행하는 통신 모듈;
    상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행하는 동작을 수행하는 실행 모듈; 및
    상기 다운로드 가능한 컨텐츠의 상기 복수의 부분의 적어도 하나의 부분을 저장하는 동작을 수행하는 저장 모듈을 포함하는 것을 특징으로 하는 시스템.
  30. 제 29항에 있어서,
    상기 다운로드 가능한 컨텐츠의 상기 복수의 부분의 제 2 부분이 국부적으로 저장되어 있는지를 판단하는 동작을 수행하는 쿼리(query) 모듈을 더 포함하며,
    상기 통신 모듈은, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분에 대한 제 2 로컬 요청을 수신하는 동작을 수행하는 것을 특징으로 하는 시스템.
  31. 제 30항에 있어서, 상기 실행 모듈은,
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있는 경우, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 실행하는 동작을 수행하는 것을 특징으로 하는 시스템.
  32. 제 30항에 있어서, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이 국부적으로 저장되어 있지 않은 경우,
    상기 변환 모듈은, 상기 제 2 로컬 요청을, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을 위한 제 2 리모트 요청으로 변환하는 동작을 더 수행하고,
    상기 통신 모듈은, 상기 제 2 리모트 요청을 전송하고, 그리고 상기 다운로드 가능한 컨텐츠의 상기 제 2부분을 수신하는 동작을 더 수행하며, 그리고
    상기 실행 모듈은, 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을, 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행한 이후에 실행하는 동작을 수행하는 것을 특징으로 하는 시스템.
  33. 제 32항에 있어서, 상기 통신 모듈은,
    상기 다운로드 가능한 컨텐츠의 상기 제 2 부분을, 상기 실행 모듈이 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분을 실행하기 이전 또는 동안에 수신하는 동작을 수행하는 것을 특징으로 하는 시스템.
  34. 제 32항에 있어서,
    상기 통신 모듈에 의해 상기 다운로드 가능한 컨텐츠의 상기 제 2 부분이, 상기 실행 모듈에 의한 상기 다운로드 가능한 컨텐츠의 상기 제 1 부분의 실행 이전 또는 동안에, 수신되지 않는 경우, 에러 메시지를 생성하는 동작을 수행하는 에러 모듈을 더 포함하는 것을 특징으로 하는 시스템.
  35. 제 32항에 있어서, 상기 저장 모듈은,
    복수의 로컬 요청들을 다운로드 가능한 컨텐츠 메타데이터로 순차적으로 저장하는 동작을 수행하는 것을 특징으로 하는 시스템.
  36. 제 29항에 있어서,
    제 2 로컬 요청을, 상기 다운로드 가능한 컨텐츠의 상기 복수의 부분의 제 2 부분을 위하여, 예측하는 동작을 수행하는 예측 모듈을 더 포함하는 것을 특징으로 하는 시스템.
  37. 제 36항에 있어서, 상기 예측 모듈은,
    상기 제 2 로컬 요청을, (A) 상기 메모리에 저장된 상기 다운로드 가능한 컨텐츠의 상기 복수의 부분 중 적어도 하나, (B) 상기 메모리에 저장된 상기 복수의 로컬 요청 중 적어도 하나, (C) 다운로드 가능한 컨텐츠 메타데이터, 및 (D) 다운로드 가능한 컨텐츠 요청 메타데이터로 구성된 그룹 중 선택된 적어도 하나를 이용하여 예측하는 동작을 수행하는 것을 특징으로 하는 시스템.
KR1020147016736A 2011-11-21 2012-11-07 다운로드 가능한 컨텐츠의 전송을 최적화하는 시스템 및 장치 KR101979621B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/300,966 2011-11-21
US13/300,966 US8886752B2 (en) 2011-11-21 2011-11-21 System and method for optimizing transfers of downloadable content
PCT/US2012/063988 WO2013078008A1 (en) 2011-11-21 2012-11-07 System and method for optimizing transfers of downloadable content

Publications (2)

Publication Number Publication Date
KR20140099907A true KR20140099907A (ko) 2014-08-13
KR101979621B1 KR101979621B1 (ko) 2019-05-17

Family

ID=48428008

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147016736A KR101979621B1 (ko) 2011-11-21 2012-11-07 다운로드 가능한 컨텐츠의 전송을 최적화하는 시스템 및 장치

Country Status (11)

Country Link
US (1) US8886752B2 (ko)
EP (1) EP2783295B1 (ko)
JP (2) JP2015507240A (ko)
KR (1) KR101979621B1 (ko)
CN (2) CN105721608A (ko)
BR (1) BR112014012185B1 (ko)
IN (1) IN2014CN02991A (ko)
MX (1) MX2014005256A (ko)
RU (1) RU2619181C2 (ko)
TW (1) TWI562569B (ko)
WO (1) WO2013078008A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005006608A1 (ja) * 2003-07-14 2005-01-20 Sony Corporation 記録装置、記録方法及びプログラム
US8989408B2 (en) * 2012-01-18 2015-03-24 Harman International Industries, Inc. Methods and systems for downloading effects to an effects unit
US8930491B2 (en) * 2012-01-18 2015-01-06 Echostar Technologies L.L.C. Apparatus, systems and methods for providing edge cached media content to media devices based on user history
US9389965B1 (en) * 2012-03-12 2016-07-12 Emc Corporation System and method for improving performance of backup storage system with future access prediction
US8957297B2 (en) 2012-06-12 2015-02-17 Harman International Industries, Inc. Programmable musical instrument pedalboard
US9189408B1 (en) 2012-08-31 2015-11-17 Emc Corporation System and method of offline annotation of future accesses for improving performance of backup storage system
US9318086B1 (en) 2012-09-07 2016-04-19 Jerry A. Miller Musical instrument and vocal effects
US9294553B1 (en) * 2013-09-20 2016-03-22 Amazon Technologies, Inc. Predictive rendering of current content versions
CN104580268A (zh) * 2013-10-09 2015-04-29 南京中兴新软件有限责任公司 文件数据的传输方法及装置
US10911838B2 (en) * 2014-12-18 2021-02-02 Arris Enterprises Llc Mechanism for transference of media meta-data
US9918114B2 (en) * 2015-06-01 2018-03-13 Comcast Cable Communications, Llc Transmission of applications with content
US10887371B2 (en) * 2015-09-14 2021-01-05 Google Llc Systems and methods for content storage and retrieval
US20190079788A1 (en) * 2017-09-08 2019-03-14 Cisco Technology, Inc. Predictive image storage system for fast container execution
US20200296462A1 (en) 2019-03-11 2020-09-17 Wci One, Llc Media content presentation
US11533384B2 (en) * 2020-03-20 2022-12-20 International Business Machines Corporation Predictive provisioning of cloud-stored files
CN115052323B (zh) * 2022-08-15 2022-11-08 晨越建设项目管理集团股份有限公司 一种基于大数据的智慧城市移动服务系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020083118A1 (en) * 2000-10-26 2002-06-27 Sim Siew Yong Method and apparatus for managing a plurality of servers in a content delivery network
US20030061602A1 (en) * 2001-08-31 2003-03-27 John Graham Obtaining translation of generic code representation
US20040138948A1 (en) * 2002-12-13 2004-07-15 Stephen Loomis Apparatus and method for skipping songs without delay
US20080052319A1 (en) * 2000-05-03 2008-02-28 Dunning Ted E File splitting, scalable coding, and asynchronous transmission in streamed data transfer

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6959318B1 (en) * 1998-03-06 2005-10-25 Intel Corporation Method of proxy-assisted predictive pre-fetching with transcoding
US6820133B1 (en) 2000-02-07 2004-11-16 Netli, Inc. System and method for high-performance delivery of web content using high-performance communications protocol between the first and second specialized intermediate nodes to optimize a measure of communications performance between the source and the destination
US6957306B2 (en) * 2002-09-09 2005-10-18 Broadcom Corporation System and method for controlling prefetching
US7853699B2 (en) * 2005-03-15 2010-12-14 Riverbed Technology, Inc. Rules-based transaction prefetching using connection end-point proxies
JP4124115B2 (ja) * 2003-12-02 2008-07-23 ソニー株式会社 情報処理装置及び情報処理方法、並びにコンピュータ・プログラム
US7240162B2 (en) * 2004-10-22 2007-07-03 Stream Theory, Inc. System and method for predictive streaming
US7380066B2 (en) * 2005-02-10 2008-05-27 International Business Machines Corporation Store stream prefetching in a microprocessor
TWI328384B (en) * 2005-04-08 2010-08-01 Qualcomm Inc Method and apparatus for enhanced file distribution in multicast or broadcast
US20070112973A1 (en) * 2005-11-16 2007-05-17 Harris John M Pre-cached streaming content method and apparatus
JP4687424B2 (ja) * 2005-11-25 2011-05-25 ソニー株式会社 情報処理装置、情報記録媒体、および情報処理方法、並びにコンピュータ・プログラム
CN100418330C (zh) * 2006-06-06 2008-09-10 北京北大方正电子有限公司 一种基于预测搜索的网络文件传输方法
EP3467666B1 (en) * 2007-01-05 2021-03-03 DivX, LLC Video distribution system including progressive playback
US8577957B2 (en) * 2008-04-01 2013-11-05 Litl Llc System and method for streamlining user interaction with electronic content
KR20090120722A (ko) * 2008-05-20 2009-11-25 엘지전자 주식회사 이동 단말기 및 이것의 콘텐츠 다운로드 방법
US8443056B2 (en) 2010-01-22 2013-05-14 Netflix, Inc. Client-server signaling in content distribution networks
JP5192506B2 (ja) * 2010-03-12 2013-05-08 株式会社日立製作所 ファイルキャッシュの管理方法、装置、及び、プログラム
US10511887B2 (en) * 2010-08-30 2019-12-17 Saturn Licensing Llc Reception apparatus, reception method, transmission apparatus, transmission method, program, and broadcasting system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080052319A1 (en) * 2000-05-03 2008-02-28 Dunning Ted E File splitting, scalable coding, and asynchronous transmission in streamed data transfer
US20020083118A1 (en) * 2000-10-26 2002-06-27 Sim Siew Yong Method and apparatus for managing a plurality of servers in a content delivery network
US20030061602A1 (en) * 2001-08-31 2003-03-27 John Graham Obtaining translation of generic code representation
US20040138948A1 (en) * 2002-12-13 2004-07-15 Stephen Loomis Apparatus and method for skipping songs without delay

Also Published As

Publication number Publication date
EP2783295B1 (en) 2017-07-12
CN103312761B (zh) 2019-04-23
JP2018010654A (ja) 2018-01-18
TWI562569B (en) 2016-12-11
EP2783295A4 (en) 2015-07-15
US20130132509A1 (en) 2013-05-23
RU2014125263A (ru) 2015-12-27
CN103312761A (zh) 2013-09-18
JP2015507240A (ja) 2015-03-05
JP6470361B2 (ja) 2019-02-13
EP2783295A1 (en) 2014-10-01
RU2619181C2 (ru) 2017-05-12
BR112014012185B1 (pt) 2021-09-21
TW201342848A (zh) 2013-10-16
WO2013078008A1 (en) 2013-05-30
CN105721608A (zh) 2016-06-29
KR101979621B1 (ko) 2019-05-17
MX2014005256A (es) 2014-08-08
IN2014CN02991A (ko) 2015-07-03
BR112014012185A2 (pt) 2017-05-30
US8886752B2 (en) 2014-11-11

Similar Documents

Publication Publication Date Title
KR101979621B1 (ko) 다운로드 가능한 컨텐츠의 전송을 최적화하는 시스템 및 장치
US10474693B2 (en) Resolving conflicts within saved state data
US9602578B2 (en) Method and system for optimizing download and instantaneous viewing of media files
US9740761B2 (en) Management of application state data
US8984153B2 (en) Cloud-based device interaction
US10673916B1 (en) Executing applications in remotely emulated computing devices
US9451043B2 (en) Remote virtualization of mobile apps
JP7297769B2 (ja) プリキャシュのためのクライアント・マシン間でのシェーダの配布
TWI492156B (zh) 用以有效下載資料包的方法與系統
KR20140105298A (ko) 클라이언트에서 캐시를 이용하여 서버의 멀티 미디어 컨텐트를 스트리밍 재생하는 방법 및 이를 위한 장치
US20040143586A1 (en) Method of controlling user application program
WO2009023141A1 (en) Integrating digital rights management and payment information
US20180006895A1 (en) Constraint Based Controlled Seeding
CN113110849A (zh) 按需加载资源
CN110266315B (zh) 用于通过基于云的网络进行数据传输的状态信息的压缩
KR101652331B1 (ko) 동영상 컨텐츠 제공 시스템, 이동 단말기 및 그것을 이용하는 동영상 컨텐츠 재생방법
CN117615215A (zh) 一种插件应用运行方法以及装置
CN117407027A (zh) 一种电视应用更新方法以及装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL NUMBER: 2017101004275; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20170905

Effective date: 20190123

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant