KR20160106626A - 우선순위-기반의 디지털 컨텐츠 다운로드를 위한 시스템 및 방법 - Google Patents
우선순위-기반의 디지털 컨텐츠 다운로드를 위한 시스템 및 방법 Download PDFInfo
- Publication number
- KR20160106626A KR20160106626A KR1020167020550A KR20167020550A KR20160106626A KR 20160106626 A KR20160106626 A KR 20160106626A KR 1020167020550 A KR1020167020550 A KR 1020167020550A KR 20167020550 A KR20167020550 A KR 20167020550A KR 20160106626 A KR20160106626 A KR 20160106626A
- Authority
- KR
- South Korea
- Prior art keywords
- content
- content item
- user
- client device
- priority
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000006855 networking Effects 0.000 claims abstract description 175
- 230000015654 memory Effects 0.000 claims description 15
- 238000012913 prioritisation Methods 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 29
- 239000000872 buffer Substances 0.000 description 20
- 230000009471 action Effects 0.000 description 16
- 230000000694 effects Effects 0.000 description 16
- 230000006399 behavior Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 230000003993 interaction Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000010926 purge Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000009118 appropriate response Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 238000013497 data interchange Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/01—Social networking
-
- H04L65/4084—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/612—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
-
- H04L67/2847—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5681—Pre-fetching or pre-delivering data based on network characteristics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/233—Processing of audio elementary streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/431—Generation of visual interfaces for content selection or interaction; Content or additional data rendering
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- Tourism & Hospitality (AREA)
- Human Resources & Organizations (AREA)
- General Business, Economics & Management (AREA)
- Marketing (AREA)
- Economics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
본 명세서에 제공되는 기술은 클라이언트 장치에 의해, 온라인 컨텐츠 소스로부터의 컨텐츠 아이템으로의 액세스를 향상시킬 수 있는 시스템 및 방법을 구현한다. 일부 실시예에 따르면, 중간 컨텐츠 스트리밍 시스템은, 컨텐츠가 네트워크상에서 온라인 컨텐츠 소스(예컨대, 컨텐츠 서버)로부터 클라이언트 장치로 스트리밍됨에 따라, 클라이언트 장치에서 디지털 컨텐츠를 로컬로 캐시하기 위해 클라이언트 장치에서 구현된다. 추가로, 일부 실시예에 따르면, 우선순위-기반 컨텐츠 다운로딩 시스템은, 클라이언트 장치에서의 사용자에게 가령, 소셜 네트워킹 뉴스 피드를 통해, 컨텐츠 아이템들로의 액세스가 제시되기 전에 클라이언트 장치로의 컨텐츠 아이템들의 우선순위-기반 사전-다운로드를 용이하게 하도록 클라이언트 장치에서 구현된다.
Description
본 출원은 디지털 컨텐츠에 관한 것으로서, 특히, 서버에서 클라이언트로 스트리밍된 디지털 컨텐츠를 다운로드하는 것에 관한 것이다.
소셜 네트워크는, 소셜 네트워크의 다양한 기능을 통해, 예컨대, 텍스트, 비디오, 오디오, 프레젠테이션, 또는 이미지를 수록한 멀티미디어 컨텐츠를 포함하는 다양한 디지털 컨텐츠로의 액세스를 제공한다. 이러한 형태 및 다른 형태의 디지털 컨텐츠(이하 "컨텐츠"라고 함)는 소셜 네트워크 사용자들이, 예컨대, 전자 메시지, 채팅방, 게시물, 및 메시지 보드를 통해 서로와 통신할 수 있도록 한다. 사용자들은 종종 클라이언트 장치, 가령 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨팅 장치, 또는 데이터-인에이블드 모바일 전화에서 동작하는 독립적(standalone) 애플리케이션(예컨대, 소셜 네트워크의 웹 페이지를 액세스할 수 있는 소셜 네트워크 또는 웹 브라우저 전용 모바일 애플리케이션)을 통해 소셜 네트워크 및 그들의 관련 컨텐츠를 액세스한다.
통상적으로, 사용자가 소셜 네트워크에 의해 제공되는 컨텐츠로의 액세스를 요청함에 따라, 독립적 애플리케이션은, 독립적 애플리케이션을 통한 컨텐츠로의 액세스를 용이하게 하기 위해 전체적으로 또는 부분적으로 요청된 컨텐츠를 클라이언트 장치로 다운로드한다. 부분적으로 소셜 네트워크는 종종 클라이언트 장치로 그들의 컨텐츠의 데이터 전달을 위해 컴퓨터 네트워크에 의존하기 때문에, 컨텐츠로의 액세스는 컴퓨터 네트워크 조건(예컨대, 클라이언트 장치의 네트워크 연결 속도)에 기반하여 지연되거나 또는 비효율적일 수 있다. 이는, 컨텐츠가 클라이언트 장치로 스트리밍됨에 따라 클라이언트 장치에서 액세스될 때, 특히 문제가 될 수 있다.
일부 실시예에 따르면, 시스템, 방법 및 컴퓨터 판독가능한 매체는 사용자에 의한 액세스를 위해 뉴스 피드에서 제시되도록 스케줄된 제1 컨텐츠 아이템을 식별하며, 상기 뉴스 피드는 클라이언트 장치의 디스플레이에서 제시된다. 시스템 및 방법은 제1 컨텐츠 아이템에 대한 제1 우선순위를 결정할 수 있다. 제1 컨텐츠 아이템이 사용자에 의한 액세스를 위해 뉴스 피드에서 제시되기 전에, 시스템 및 방법은 제1 우선순위에 기반하여 제1 컨텐츠 서버에서 클라이언트 장치로 제1 컨텐츠 아이템의 적어도 일부를 사전-다운로드할 수 있다. 본 명세서에서 사용되는 것처럼, 뉴스 피드에 제시되도록 스케줄된 컨텐츠 아이템은, 뉴스피드에 아직 추가되지 않았거나, 뉴스 피드로부터의 이전의 제거 이후 뉴스 피드에 아직 다시 추가되지 않았거나, 뉴스 피드에 이미 추가되었으나 사용자에 의해 뉴스 피드를 통해 아직 열람되지 않았거나, 또는 사용자에 의해 뉴스 피드를 통해 적어도 한번 이미 열람되었으나 현재 사용자가 열람하고 있지 않은, 뉴스 아이템에 포함된 하나의 컨텐츠 아이템(이하, "뉴스 게시물"이라 함)일 수 있다.
일부 실시예로, 시스템 및 방법은 제1 컨텐츠 아이템의 적어도 일부가 클라이언트 장치로 사전-다운로드된 후에 뉴스 피드에서 제1 컨텐츠 아이템을 제시한다.
일부 실시예로, 시스템 및 방법은 사용자에 의한 액세스를 위해, 뉴스 피드에서 제시되도록 스케줄된 제2 컨텐츠 아이템을 식별한다. 시스템 및 방법은 제2 컨텐츠 아이템에 대한 제2 우선순위를 결정할 수 있다. 제1 컨텐츠 서버에서 클라이언트 장치로 제1 컨텐츠 아이템의 적어도 일부를 사전-다운로드하기 전에, 시스템 및 방법은 제1 우선순위보다 높은 우선순위인 제2 우선순위에 기반하여 제2 컨텐츠 서버로부터 클라이언트 장치로 제2 컨텐츠 아이템의 적어도 일부를 사전-다운로드할 수 있다.
일부 실시예로, 시스템 및 방법은 사용자에 의한 액세스를 위해 뉴스 피드에서 제2 컨텐츠 아이템을 제시한다.
일부 실시예로, 제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은 본 발명의 실시예에 따른, 소셜 네트워킹 환경에서 중간 컨텐츠 스트리밍 및 우선순위-기반 컨텐츠 다운로드를 하기 위한 시스템의 네트워크 다이어그램의 예를 도시한다.
도 8은 본 발명의 실시예에 따른, 컴퓨터 시스템의 다이어그램을 도시한다.
도면들은 오로지 예시적인 목적을 위해 본 발명의 다양한 실시예들을 도시하며, 도면들은 같은 구성요소를 식별하기 위해 같은 참조 번호를 사용한다. 통상의 기술자는 다음의 설명으로부터 도면들에 도시된 구조들 및 방법들의 대안적 실시예가 본 명세서에 기술된 발명의 원리로부터 벗어남이 없이 이용될 수 있음을 쉽게 인식할 것이다.
도 2는 본 발명의 실시예에 따른, 예시적인 중간 컨텐츠 스트리밍 시스템을 도시한다.
도 3은 본 발명의 실시예에 따른 예시적인 우선순위-기반 컨텐츠 다운로드 시스템을 도시한다.
도 4는 본 발명의 실시예에 사용되는 예시적인 뉴스 피드를 도시한다.
도 5는 본 발명의 실시예에 따른, 중간 컨텐츠 스트리밍을 위한 예시적인 프로세스를 도시한다.
도 6은 본 발명의 실시예에 따른, 우선순위-기반 컨텐츠 다운로드를 위한 예시적인 프로세스를 도시한다.
도 7은 본 발명의 실시예에 따른, 소셜 네트워킹 환경에서 중간 컨텐츠 스트리밍 및 우선순위-기반 컨텐츠 다운로드를 하기 위한 시스템의 네트워크 다이어그램의 예를 도시한다.
도 8은 본 발명의 실시예에 따른, 컴퓨터 시스템의 다이어그램을 도시한다.
도면들은 오로지 예시적인 목적을 위해 본 발명의 다양한 실시예들을 도시하며, 도면들은 같은 구성요소를 식별하기 위해 같은 참조 번호를 사용한다. 통상의 기술자는 다음의 설명으로부터 도면들에 도시된 구조들 및 방법들의 대안적 실시예가 본 명세서에 기술된 발명의 원리로부터 벗어남이 없이 이용될 수 있음을 쉽게 인식할 것이다.
소셜 네트워킹 사용자들 또는 디지털 컨텐츠(또는 "컨텐츠")의 제공자들은 소셜 네트워킹 시스템을 통해 디지털 컨텐츠를 배포하고자 할 수 있다. 예컨대, 광고자들은 소셜 네트워킹 시스템의 사용자들에게 디지털 컨텐츠 아이템 (또는 "컨텐츠 아이템")을 갖는 광고, 가령 비디오 또는 상호작용형 프레젠테이션을 배포하고자 할 수 있다. 예컨대, 영화 스튜디오는 영화 트레일러를 소셜 네트워킹 시스템의 사용자들에게 제공하고자 할 수 있다. 유사하게, 음악 회사, 출판사, 비디오게임 공급자, 및 다른 자들은 디지털 컨텐츠 아이템들을 소셜 네트워킹 시스템의 사용자들에게 이용가능한 임의의 형태로 만들고자 할 수 있다. 추가로, 소셜 네트워킹 시스템의 사용자들은, 가령 그들의 소셜 네트워킹 게시물에 스트리밍 비디오로의 링크를 포함시키거나, 또는 소셜 네트워킹 게시물에 스트리밍 오디오 컨텐츠를 임베딩함으로써 그들 사이에서 디지털 컨텐츠 아이템을 공유할 수 있다.
하지만, 소셜 네트워킹 시스템을 통해 디지털 컨텐츠를 배포하는 것은 성취하기 어려울 수 있다. 빈번하게, 디지털 컨텐츠 아이템은 많은 양의 데이터를 포함한다. 예컨대, 소셜 네트워킹 뉴스피드에 나타나는 단순한 비디오 광고는 각각의 정지 이미지 프레임에 대한 이미지 데이터, 오디오 데이터, 상호작용형 하이퍼링크, 및 다른 컨텐츠 데이터를 포함할 수 있다. 사용자들은, 각각 상이한 성능 특성(예컨대, 데이터 속도, 대역폭, 및 쓰루풋)을 갖는 경향이 있는 802.11 Wi-Fi, 3세대(3G), 4세대(4G), 및 5세대(5G) 네트워크를 포함하는 다양한 타입의 네트워크를 통해 소셜 네트워킹 시스템에 액세스하는 것을 시도할 수 있다. 무선 네트워크에 액세스하는 사용자에게 디지털 컨텐츠 아이템을 스트리밍하는 것은 사용자에게 디지털 컨텐츠 아이템의 그렇지 않으면 가능할 상대적으로 낮은-품질의 버전을 제공하거나, 스트리밍 컨텐츠에 액세스하는 것의 지연(예컨대, 지터(jitter))을 발생시킬 수 있다.
본 명세서에 제공되는 기술은 클라이언트 장치에 의해 온라인 컨텐츠 소스로부터의 컨텐츠 아이템에 액세스하는 것을 향상시킬 수 있는 시스템 및 방법을 구현한다. 일부 실시예에 따르면, 중간 컨텐츠 스트리밍 시스템은, 컨텐츠가 네트워크상에서 온라인 컨텐츠 소스(예컨대, 컨텐츠 서버)로부터 클라이언트 장치로 스트리밍됨에 따라, 클라이언트 장치에서 디지털 컨텐츠를 로컬로 캐시하기 위해 클라이언트 장치에서 구현된다. 본 명세서에서 사용되는 것처럼, 컨텐츠 아이템은, 예컨대 텍스트, 오디오, 비디오, 이미지, 프레젠테이션 등을 포함하는 하나 이상의 타입의 컨텐츠를 포함할 수 있다. 클라이언트 장치에서의 중간 컨텐츠 스트리밍 시스템을 통해, 가령 멀티미디어 플레이어와 같은 클라이언트 장치에서의 컨텐츠 액세스 애플리케이션은 컨텐츠 데이터(예컨대, 비디오 데이터)의 스트림으로 컨텐츠 아이템(예컨대, 비디오)의 일부 또는 전부를 요청하고 이후 수신할 수 있다. 특히, 중간 컨텐츠 스트리밍 시스템은 온라인 컨텐츠 소스에 의해 제공되는 컨텐츠 아이템에 대한 요청을 수신할 수 있고, 중간 컨텐츠 스트리밍 시스템은 결과적으로 컨텐츠 아이템(예컨대, 오디오)의 일부 또는 전부를 컨텐츠 데이터(예컨대, 오디오 데이터)의 스트림으로 컨텐츠 액세스 애플리케이션으로 제공할 수 있다. 이는, 컨텐츠 액세스 애플리케이션을 위해 온라인 컨텐츠 소스로부터의 컨텐츠 데이터를 요청하고 획득하는 중간 컨텐츠 스트리밍 시스템에 의해 성취될 수 있다. 온라인 컨텐츠 소스로부터의 컨텐츠 데이터는 중간 컨텐츠 스트리밍 시스템에 의해 데이터 스트림으로 수신될 수 있다. 요청된 컨텐츠 아이템을 위한 컨텐츠 데이터가 온라인 컨텐츠 소스로부터 중간 컨텐츠 스트리밍 시스템으로 스트리밍됨에 따라, 중간 컨텐츠 스트리밍 시스템은 컨텐츠 데이터를 컨텐츠 액세스 애플리케이션으로 제공할 수 있다. 또한, 중간 컨텐츠 스트리밍 시스템이 온라인 컨텐츠 소스로부터 스트리밍된 컨텐츠 데이터를 수신함에 따라, 그것은 클라이언트 장치에서 스트리밍된 컨텐츠 데이터를 로컬로 캐시할 수 있고, 동일한 컨텐츠 아이템에 대한 미래의 요청을 위해 캐시된 컨텐츠 데이터를 유지할 수 있다.
컨텐츠 액세스 애플리케이션으로부터 중간 컨텐츠 스트리밍 시스템에 의해 수신된 요청은 HTTP, FTP, RTP 등을 포함하는 다양한 타입의 네트워크 프로토콜을 이용할 수 있다. 유사하게, 중간 컨텐츠 스트리밍 시스템으로부터 온라인 컨텐츠 소스로 전송된 요청은 다양한 타입의 네트워크 프로토콜을 이용할 수 있다. 일부 실시예로, 중간 컨텐츠 스트리밍 시스템으로부터 온라인 컨텐츠 소스로 전송된 요청은 컨텐츠 액세스 애플리케이션으로부터 중간 컨텐츠 스트리밍 시스템이 수신한 요청과 유사하거나 포맷에 있어서 대응될 수 있다. 실시예에 따라, 중간 컨텐츠 스트리밍 시스템은 클라이언트 장치에서 로컬로 동작하는 서버 프로세스로 구현될 수 있다.
이후, 중간 컨텐츠 스트리밍 시스템이 중간 컨텐츠 스트리밍 시스템을 통해 이전에 스트리밍된 컨텐츠 아이템에 대한 요청(예컨대, 이전과 동일한 컨텐츠 액세스 애플리케이션에 의하거나 또는 클라이언트 장치에서 다른 컨텐츠 액세스 애플리케이션에 의한 요청)을 수신할 때, 중간 컨텐츠 스트리밍 시스템은 중간 컨텐츠 스트리밍 시스템에 의해 이전에 수신된 컨텐츠 아이템의 이러한 부분들에 해당하는 로컬 캐시 컨텐츠 데이터로부터 제공함으로써 요청을 달성시킬 수 있다. 중간 컨텐츠 스트리밍 시스템은 또한, 온라인 컨텐츠 소스로부터 요청하고, 이후 중간 컨텐츠 스트리밍 시스템에 의해 이전에 수신되지 않은 컨텐츠 아이템의 이러한 부분들에 대한 컨텐츠 데이터를 컨텐츠 액세스 애플리케이션에 제공함으로써 요청을 달성시킬 수 있다. 이러한 방식으로, 중간 컨텐츠 스트리밍 시스템은 클라이언트 장치에서 독립적 컨텐츠 액세스 애플리케이션들이 컨텐츠 아이템의 이전의 스트리밍 세션 동안에서 클라이언트 장치에서 이미 로컬로 캐시된 컨텐츠 데이터로부터 이득을 취할 수 있게 할 수 있다. 요청에 따라, 중간 컨텐츠 스트리밍 시스템은, 특정 탐색 시간(예컨대, 비디오의 시작점보다 늦은 시간)에 기반하여 컨텐츠 아이템에 대한 컨텐츠 데이터를 클라이언트 장치에서의 컨텐츠 액세스 애플리케이션에 제공하고, 그럼으로써 중간 서버가 컨텐츠 아이템의 시작점으로부터 또는 컨텐츠 아이템 전체를 요청하고 수신해야 하는 필요를 제거할 수 있도록 구성될 수 있다. 추가로, 실시예에 따라, 중간 컨텐츠 스트리밍 시스템은 컨텐츠 데이터를 데이터 스트림으로 제공할 수 있고, 중간 컨텐츠 스트리밍 시스템에 의해 제공되는 데이터 스트림은 온라인 컨텐츠 소스로부터 중간 컨텐츠 스트리밍 시스템으로 컨텐츠 데이터를 제공하는 데이터 스트림과 (예컨대, 포맷 또는 프로토콜에 있어서) 유사할 수 있다.
일부 실시예에 따르면, 캐시는 클라이언트 장치에서의 컨텐츠 액세스 애플리케이션(예컨대, 스트리밍 비디오 플레이어)의 버퍼로부터 분리되어 있고 독립적으로 관리된다. 이러한 버퍼는 컨텐츠가 스트리밍되고 컨텐츠 액세스 애플리케이션에 의해 액세스됨에 따라 컨텐츠 데이터의 임시 데이터 저장소를 위해 컨텐츠 액세스 애플리케이션에 의해 통상적으로 사용된다.
본 명세서에서 사용되는 것처럼, 컨텐츠 액세스 애플리케이션은 임의의 타입의 멀티미디어 플레이어, 가령 오디오 플레이어, 비디오 플레이어, 또는 프레젠테이션 플레이어(예컨대, 슬라이드 쇼 또는 벡터-기반 그래픽)를 포함할 수 있다. 컨텐츠 액세스 애플리케이션은 또한, 다양한 타입의 컨텐츠 편집기, 가령 멀티미디어 편집기(예컨대, 오디오 또는 비디오 편집기) 또는 문서 편집기(예컨대, 워드 프로세싱 애플리케이션)를 포함할 수 있다. 추가로, 컨텐츠 액세스 애플리케이션은, 컨텐츠 액세스 애플리케이션과 호환가능한 컨텐츠를 액세스할 때, 다른 독립 애플리케이션, 가령 웹 브라우저에 의해 이용될 수 있는 하나 이상의 소프트웨어 모듈로서 구현될 수 있다. 예컨대, 컨텐츠 액세스 애플리케이션은 독립형 비디오 플레이어 또는 웹 페이지에 임베디드된 비디오(예컨대, 소셜 네트워크의 웹 페이지에 제시되는 게시물 또는 메시지에 임베디드된 비디오)를 액세스할 때, 웹 브라우저에 의해 이용되는 비디오 플레이어 모듈을 포함할 수 있다. 컨텐츠 액세스 애플리케이션은 하나 이상의 특정 타입의 컨텐츠에 액세스하는 것으로 제한될 수 있다. 시각적 컨텐츠에 액세스하는 것은 클라이언트 장치의 디스플레이에서 시각적 컨텐츠, 가령 비디오 또는 프레젠테이션 컨텐츠를 제시하는 것을 포함할 수 있다. 오디오 컨텐츠에 액세스하는 것은 클라이언트 장치의 스피커를 통해 오디오 컨텐츠, 가령 비디오의 오디오 컨텐츠를 출력하는 것을 포함할 수 있다.
본 명세서에서 사용되는 것처럼, 온라인 컨텐츠 소스는 네트워크 연결을 통해 하나 이상의 컨텐츠 아이템을 요청하는 클라이언트 장치로 제공하도록 구성된 컴퓨터 시스템, 가령 서버를 의미할 수 있다. 온라인 컨텐츠 소스는 컨텐츠를 데이터 스트림으로 제공하도록 구성될 수 있어서, (컨텐츠 아이템의 모든 부분들이 클라이언트 장치에서 수신될 때까지 기다려야 하는 것이 아니라) 클라이언트 장치가 컨텐츠 아이템의 부분들이 수신됨에 따라 컨텐츠 아이템의 부분들을 액세스하도록 할 수 있다.
실시예에 따라, 컨텐츠 아이템에 대한 컨텐츠 액세스 애플리케이션으로부터 온라인 컨텐츠 소스로의 원래의 요청은 중간 컨텐츠 스트리밍 시스템에 의해 주소화되거나, 포워딩되거나, 또는 가로채질 수 있다. 예컨대, 컨텐츠 액세스 애플리케이션은 온라인 컨텐츠 소스로부터 중간 스트리밍 컨텐츠 시스템으로 직접 컨텐츠 아이템에 대한 요청을 전송하도록 구성될 수 있다. 중간 스트리밍 컨텐츠 시스템은 결과적으로, 요청된 컨텐츠 아이템에 대한 컨텐츠 데이터를 로컬 캐시로부터 컨텐츠 액세스 애플리케이션에 제공할 수 있고, 이용가능한 범위까지 온라인 컨텐츠 소스로부터 로컬 캐시에 존재하지 않는 컨텐츠 데이터를 획득하고, 이후 획득된 컨텐츠 데이터를 컨텐츠 액세스 애플리케이션에 제공하거나, 또는 이들 모두를 할 수 있다.
일부 실시예에 따르면, 우선순위-기반의 컨텐츠 다운로드 시스템은, 클라이언트 장치에서의 사용자에게 가령 소셜 네트워킹 시스템에 의해 제공되는 뉴스 피드를 통해, 컨텐츠 아이템으로의 액세스가 제공되기 전에 클라이언트 장치로 컨텐츠 아이템을 우선순위-기반의 사전-다운로드(예컨대, 컨텐츠 아이템을 스트리밍)하는 것을 용이하게 하도록 클라이언트 장치에서 구현된다. 예컨대, 우선순위-기반의 컨텐츠 다운로드 시스템은, 사용자가 이러한 게시물을 대면하기 전에(예컨대, 이러한 게시물을 보기 전에), 소셜 네트워킹 시스템으로의 게시물에 나타나는 비디오(예컨대, 소셜 게시물에 임베디드된 온라인 비디오)를 클라이언트 장치로 부분적으로 또는 전체적으로 사전-다운로드할 수 있다. 사용자는 소셜 네트워크 뉴스 피드에서 이러한 게시물을 대면할 수 있고, 여기서 하나 이상의 뉴스 아이템(이하 "뉴스 게시물")은 컨텐츠 서버에 의해 제공되는 하나 이상의 온라인 컨텐츠 아이템(예컨대, 온라인 비디오)을 포함한다. 사용자가 뉴스 피드를 봄에 따라, 뉴스 피드의 하나 이상의 뉴스 게시물에 포함된 컨텐츠 아이템은, 이러한 뉴스 게시물이 뉴스 피드를 통해 사용자에게 액세스가능하게 되기 전에(예컨대, 클라이언트 장치에서 사용자에게 가시적이게 되기 전에) 클라이언트 장치로 전체가 또는 부분적으로 사전-다운로드될 수 있다.
일단 컨텐츠 아이템이 우선순위-기반 컨텐츠 다운로드 시스템에 의해 클라이언트 장치로 사전-다운로드되면, 컨텐츠 아이템은 클라이언트 장치의 로컬 캐시로 저장될 수 있다. 일부 실시예에 따르면, 본 명세서에 기술되는 우선순위-기반 컨텐츠 다운로드 시스템은 본 명세서에 기술되는 중간 컨텐츠 스트림 시스템과 동일한 로컬 캐시를 이용할 수 있다. 이러한 방식으로 로컬 캐시를 공유함으로써, 클라이언트 장치의 중간 컨텐츠 스트리밍 시스템은 동일한 클라이언트 장치에서 우선순위-기반 컨텐츠 다운로드 시스템과 상호동작할 수 있다. 예컨대, 컨텐츠 아이템이 클라이언트 장치에 액세스를 위해 제시되기 전에, 우선순위-기반 컨텐츠 다운로드 시스템은 중간 컨텐츠 스트리밍 시스템과 공유되는 로컬 캐시로 컨텐츠 아이템의 적어도 일부를 사전-다운로드할 수 있고, 컨텐츠 아이템에 대한 요청이 중간 컨텐츠 스트리밍 시스템에 의해 수신되기 전에 그와 같이 한다. 이후, 컨텐츠 아이템에 대한 요청이 중간 컨텐츠 스트리밍 시스템에 의해 수신될 때, 요청은 우선순위-기반 컨텐츠 다운로드 시스템에 의해 로컬 캐시로 사전-다운로드된 컨텐츠 아이템의 부분들을 사용하여 중간 컨텐츠 스트리밍 시스템에 의해 충족될 수 있다.
컨텐츠 사전-다운로드의 우선순위화는, 제한 없이: 컨텐츠 아이템이 사용자에 의해 대면될 때(예컨대, 비디오가 사용자들의 소셜 네트워킹 뉴스 피드를 통해 사용자의 시야로 들어올 때), 소셜 네트워킹 뉴스 피드에서 자동-재생되는 것인지 여부; 얼마나 많은 소셜 네트워킹 좋아요 또는 코멘트가 컨텐츠 아이템과 관련되는지; 컨텐츠 아이템과 관련된 소셜 네트워킹 좋아요 또는 코멘트의 품질(예컨대, 누가 비디오를 좋아요했거나 코멘트했는지); 클라이언트 장치와 관련된 세부사항(예컨대, 하드웨어 또는 소프트웨어 규격); 클라이언트 장치에서 이용가능한 컴퓨팅 자원(예컨대, 메모리); 컨텐츠 아이템이 사용자에 의해 대면될 확률(예컨대, 비디오가 사용자들의 소셜 네트워킹 게시물 피드를 통해 사용자들의 시야로 들어올 가능성); 컨텐츠 아이템의 주제(예컨대, 광고 또는 비-광고); 및 컨텐츠 아이템을 액세스(예컨대, 재생)하기 위한 사용자-선호도를 포함하는 다양한 요소에 기반할 수 있다. 우선순위-기반 컨텐츠 다운로드 시스템은 클라이언트 장치에서 로컬로 동작하는 서버 프로세스로서 구현될 수 있다.
도 1은 본 발명의 실시예에 따른, 예시적인 중간 컨텐츠 스트리밍 시스템(106) 및 예시적인 우선순위-기반 컨텐츠 다운로드 시스템(108)을 도시한다. 도시되는 것처럼, 클라이언트 장치(100)는 중간 컨텐츠 스트리밍 시스템(106), 우선순위-기반 컨텐츠 다운로드 시스템(108), 및 클라이언트 애플리케이션 모듈(110)을 포함한다. 도 1은 클라이언트 장치(100)가 중간 컨텐츠 스트리밍 시스템(106) 및 우선순위-기반 컨텐츠 다운로드 시스템(108) 둘 다를 갖는 것으로 도시하지만, 일부 실시예를 위해, 클라이언트 장치(100)는 오로지 하나(예컨대, 중간 컨텐츠 스트리밍 시스템(106))를 포함하며, 다른 것(우선순위-기반 컨텐츠 다운로드 시스템(108))을 포함하지 않는다.
또한, 도시되는 것처럼, 클라이언트 장치(100)는 네트워크(102)를 통해 컨텐츠 서버(104)로 통신적으로 연결된다. 실시예에 따라, 클라이언트 장치(100)는, 네트워크(102) 상에서 컨텐츠 서버(104)와 데이터, 가령 컨텐츠 데이터를 교환할 수 있는 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨팅 장치, 데이터-인에이블 모바일 전화, 또는 임의의 다른 네트워크-인에이블 장치일 수 있다. 네트워크(102)는 다양한 네트워크 프로토콜을 지원할 수 있고, 가령 컴퓨터 네트워크와 같은 통신 네트워크를 포함할 수 있다. 네트워크(102)는 802.11 Wi-Fi, 3세대(3G), 4세대(4G) 네트워크, 및 5세대(5G) 네트워크를 포함하는 하나 이상의 유선 또는 무선 네트워크를 포함할 수 있고, 이들 각각은 상이한 데이터 속도, 대역폭, 및 쓰루풋을 제공한다. 네트워크(102)는 컨텐츠 서버(104)로부터 하나 이상의 중간 컨텐츠 스트리밍 시스템(106) 및 우선순위-기반 컨텐츠 다운로드 시스템(108)으로 컨텐츠 아이템을 제공할 수 있다. 실시예에 따라, 네트워크(102)는 클라이언트 장치(100), 중간 컨텐츠 스트리밍 시스템(106), 우선순위-기반 컨텐츠 다운로드 시스템(108), 및 컨텐츠 서버(104) 중 하나 이상 내의 내부 컴포넌트들의 연결을 용이하게 할 수 있다.
중간 컨텐츠 스트리밍 시스템(106) 및 우선순위-기반 컨텐츠 다운로드 시스템(108)을 기술함에 있어, 클라이언트 장치(100)의 클라이언트 애플리케이션 모듈(110)을 기술하는 것이 유용할 것이다. 일부 실시예에 따르면, 클라이언트 애플리케이션 모듈(110)은 사용자 및 클라이언트 장치(100) 사이의 상호작용을 용이하게 하도록 구성된 소프트웨어-기반 컴포넌트 또는 독립형 애플리케이션이다. 예컨대, 클라이언트 애플리케이션 모듈(110)은 클라이언트 장치(100)에서 동작하도록 구성되고, 사용자가 소셜 네트워킹 시스템에 액세스하고 그곳에서 제공되는 다양한 것들과 상호작용하도록 허용하는 독립형 애플리케이션일 수 있다. 추가적으로 본 명세서에 상세히 기술되는 것처럼, 소셜 네트워킹 시스템은 한 명 이상의 소셜 네트워킹 사용자들 사이에서 컨텐츠 아이템을 배포 또는 공유하도록 이용될 수 있다.
도시되는 것처럼, 클라이언트 애플리케이션 모듈(110)은 클라이언트 애플리케이션 모듈(110)을 통해 하나 이상의 타입의 컨텐츠 아이템에 대한 액세스를 용이하게 하는 컨텐츠 액세스 모듈(112)을 포함한다. 컨텐츠 액세스 모듈(112)은 도 1에서 클라이언트 애플리케이션 모듈(110)에 의해 포함되는 것으로 도시되지만, 컨텐츠 액세스 모듈(112)은 클라이언트 장치(100)에서 동작하도록 구성되고, 하나 이상의 컨텐츠 타입으로의 액세스를 용이하게 하는 소프트웨어-기반 컴포넌트 또는 독립형 애플리케이션일 수 있다. 예컨대, 컨텐츠 액세스 모듈(112)은 클라이언트 애플리케이션 모듈(110) 외부의 소프트웨어 컴포넌트일 수 있고, 클라이언트 장치(100)에서의 사용자가 클라이언트 애플리케이션 모듈(110)을 통해 컨텐츠 아이템에 액세스하고 있을 때, 클라이언트 애플리케이션 모듈(110)에 의해 이용될 수 있다. 예컨대, 클라이언트 애플리케이션 모듈(110)은 소셜 네트워킹 시스템의 웹 페이지에 액세스하고 있는 웹 브라우저일 수 있고, 클라이언트 애플리케이션 모듈(110)은 웹 페이지에 임베디드된 멀티미디어 컨텐츠 아이템(예컨대, 오디오 또는 비디오)을 액세스하기 위해, 컨텐츠 액세스 모듈(112), 가령 멀티미디어 플레이어를 이용할 수 있다.
본 명세서에서 사용되는 것처럼, 컨텐츠 아이템을 액세스하는 것은 컨텐츠 아이템을 오픈하고, 컨텐츠 아이템과 관련된 컨텐츠 데이터를 판독하고, 기록하거나 또는 편집하는 것을 포함할 수 있다. 예컨대, 비디오 컨텐츠를 액세스하는 것은 비디오 컨텐츠 아이템을 오픈하는 것, 비디오 컨텐츠 아이템과 관련된 비디오 컨텐츠 데이터를 판독하는 것, 및 클라이언트 장치(100)에 연결된 디스플레이에서 비디오 컨텐츠 데이터를 디스플레이하는 것을 포함할 수 있다. 컨텐츠 아이템을 액세스하는 방법은 컨텐츠 타입들 간에 다양할 수 있다. 컨텐츠 아이템이 클라이언트 장치(100)로부터 원격에서 위치(예컨대, 컨텐츠 서버(104)에 위치)하고, 네트워크(102)를 통해 (예컨대, 컨텐츠 서버(104)로부터) 수신되는 곳에서, 컨텐츠 액세스 모듈(112)은 네트워크(102) 상에서 송신되는 데이터 스트림(이하, "컨텐츠 데이터 스트림"이라 함) 방식에 의해 컨텐츠 아이템에 액세스할 수 있다. 컨텐츠 액세스 모듈(112)은 관련 컨텐츠 데이터 스트림을 통해 컨텐츠 버퍼 데이터 스토어(114)로 수신된 컨텐츠 아이템의 적어도 일부를 저장(예컨대, 확정(commit))함으로써 이러한 컨텐츠 아이템의 스트림-기반 액세스를 용이하게 할 수 있다. 예컨대, 컨텐츠 서버(104)로부터 클라이언트 장치(100)로 스트리밍된 컨텐츠 아이템을 액세스하기 위해, 컨텐츠 서버(104)로부터 수신된 컨텐츠 데이터 스트림은 먼저 컨텐츠 버퍼 데이터 스토어(114)에 저장될 수 있고, 컨텐츠 액세스 모듈(112)은 저장된 컨텐츠 데이터에 해당하는 컨텐츠 아이템의 부분들을 액세스하기 위해 컨텐츠 버퍼 데이터 스토어(114)에 저장된 컨텐츠 데이터에 액세스할 수 있다. 본 명세서에 더욱 상세히 기술되는 것처럼, 컨텐츠 액세스 모듈(112)은 중간 컨텐츠 스트리밍 시스템(106), 우선순위-기반 컨텐츠 다운로드 시스템(108), 또는 이들 둘 다의 임의의 조합을 통해 데이터 스트림을 수신할 수 있다.
컨텐츠 버퍼 데이터 스토어(114)는 컨텐츠 액세스 모듈(112)이 특정 양의 컨텐츠 아이템을 액세스되기 전에 버퍼링할 수 있게 하고, 그럼으로써 클라이언트 장치(100)에서 사용자에 의한 컨텐츠 아이템으로의 더 매끄럽고 인접한 액세스를 용이하게 만들 수 있다. 예컨대, 컨텐츠 버퍼 데이터 스토어(114)는 컨텐츠 액세스 모듈(112)이, 비디오가 클라이언트 장치(100)에서 액세스(예컨대, 재생)되거나, 또는 사용자에게 액세스가능하도록 만들어지기 전에(예컨대, 재생가능하게 만들어지기 전에) 스트리밍된 비디오의 처음 10초를 버퍼링하게 할 수 있다. 컨텐츠 버퍼 데이터 스토어(114)는, 컨텐츠 액세스 모듈(112)이 컨텐츠 서버(104)로부터 컨텐츠 아이템을 네트워크(102) 상에서 컨텐츠 데이터 스트림으로서 액세스할 때, 특히 유용할 수 있고, 이는 일정하지 않은 컨텐츠 데이터 스트림을 발생시킬 수 있는 네트워크 조건(예컨대, 패킷 지연, 패킷 에러, 네트워크 연결의 일시적 손실, 또는 네트워크 속도의 감퇴)에 취약하다.
컨텐츠 버퍼 데이터 스토어(114)는 컨텐츠 액세스 모듈(112)을 통해 사용자에 의해 현재 액세스되고 있는 컨텐츠 아이템의 적어도 이러한 부분들을 위한 컨텐츠 데이터를 일시적으로 저장하도록 구성될 수 있다. 추가로, 컨텐츠 버퍼 데이터 스토어(114)는 컨텐츠 액세스 모듈(112)을 통해 사용자에 의해 최근에 액세스된 컨텐츠 아이템의 이러한 부분들을 위한 컨텐츠 데이터를 일시적으로 저장하도록 구성될 수 있고, 그럼으로써 온라인 소스(예컨대, 컨텐츠 서버(104))로부터의 재-검색의 필요없이도 이러한 부분들을 다시 액세스하는 것을 가능하게 한다.
임시 데이터 저장소를 구현하기 위해, 컨텐츠 버퍼 데이터 스토어(114)는 저장 한계, 데이터 수명, 가장 최근의 액세스 시간, 액세스의 빈도, 컨텐츠 아이템의 부분들에 대응하는 컨텐츠 데이터의 타입, 또는 컨텐츠 데이터가 대응하는 컨텐츠 아이템의 우선순위 등에 기반하여 컨텐츠 데이터를 제거(예컨대, 퍼지(purge))할 수 있다. 예컨대, 컨텐츠 데이터는, 현재 컨텐츠 버퍼 데이터 스토어(114)에 저장된 전체 컨텐츠 데이터가 저장 한계에 도달했거나 초과할 때, 컨텐츠 버퍼 데이터 스토어(114)로부터 제거될 수 있다. 다른 예로, 컨텐츠 데이터는, 컨텐츠 데이터가 언제 수신되었는지(예컨대, 30초 전에 수신됨), 또는 과거의 언제 액세스된 컨텐츠 아이템의 부분에 컨텐츠 데이터가 대응되는지(예컨대, 30초보다 더 전에 액세스된 부분들에 대응됨)에 기반하여 컨텐츠 버퍼 데이터 스토어(114)로부터 제거될 수 있다.
중간 컨텐츠 스트리밍 시스템(106)은, 컨텐츠 아이템을 위한 컨텐츠 데이터가 네트워크(102) 상에서 컨텐츠 서버(104)로부터 클라이언트 장치(100)로 스트리밍됨에 따라 클라이언트 장치에서 로컬로 컨텐츠 아이템을 캐시하도록 구성될 수 있다. 클라이언트 애플리케이션 모듈(110)에 포함될 수 있는, 클라이언트 장치(100)에서의 컨텐츠 액세스 모듈(112)은 중간 컨텐츠 스트리밍 시스템(106)에 의해 컨텐츠 서버(104)로부터 컨텐츠 아이템을 요청할 수 있고, 중간 컨텐츠 스트리밍 시스템(106)은 결국 컨텐츠 아이템(예컨대, 오디오)의 일부 또는 전부를 컨텐츠 데이터(예컨대, 오디오 데이터)의 스트림으로 컨텐츠 액세스 모듈(112)에 제공할 수 있다. 이것은 중간 컨텐츠 스트리밍 시스템(106)이 컨텐츠 액세스 모듈(112)을 위해, 네트워크(102) 상에서 컨텐츠 서버(104)로부터 컨텐츠 데이터를 요청하고 획득하는 것에 의해 달성될 수 있다. 컨텐츠 서버(104)로부터의 컨텐츠 데이터는 중간 컨텐츠 스트리밍 시스템(106)에 의해 데이터 스트림으로 수신될 수 있다. 요청된 컨텐츠 아이템을 위한 컨텐츠 데이터가 컨텐츠 서버(104)로부터 중간 컨텐츠 스트리밍 시스템(106)으로 스트리밍됨에 따라, 중간 컨텐츠 스트리밍 시스템(106)은 컨텐츠 데이터를 컨텐츠 액세스 모듈(112)에 제공할 수 있다. 추가로, 중간 컨텐츠 스트리밍 시스템(106)이 스트리밍된 컨텐츠 데이터를 컨텐츠 서버(104)로부터 수신함에 따라, 중간 컨텐츠 스트리밍 시스템(106)은 클라이언트 장치(100)에서 (예컨대, 시스템(106)에 의해 포함된 컨텐츠 캐시 데이터 스토어로 저장된) 스트리밍된 컨텐츠 데이터를 로컬로 캐시할 수 있고, 동일한 컨텐츠 아이템에 대한 미래의 요청을 위해 캐시된 컨텐츠 데이터를 유지할 수 있다. 중간 컨텐츠 스트리밍 시스템(106)은 컨텐츠 데이터가 클라이언트 장치(100)에 로컬로 캐시되기 전에 또는 후에, 아니면 컨텐츠 데이터가 클라이언트 장치(100)에 로컬로 캐시됨과 동시에 스트리밍된 컨텐츠 데이터를 컨텐츠 액세스 모듈(112)에 제공할 수 있다. 요청된 컨텐츠 아이템을 위한 컨텐츠 데이터를 컨텐츠 액세스 모듈(112)에 제공할 때, 중간 컨텐츠 스트리밍 시스템(106)은 컨텐츠 데이터를 데이터 스트림으로 제공할 수 있다. 추가로, 중간 컨텐츠 스트리밍 시스템(106)으로부터 컨텐츠 액세스 모듈(112)로 가는 데이터 스트림은, 컨텐츠 서버(104)로부터 중간 컨텐츠 스트리밍 시스템(1060으로 요청된 컨텐츠 아이템을 위한 컨텐츠 데이터를 제공하는 데이터 스트림과 포맷 또는 프로토콜에 있어서 유사할 수 있다.
일부 실시예에 따르면, 캐시된 컨텐츠 데이터는 클라이언트 장치(100) 상의 다양한 컨텐츠 액세스 모듈의 버퍼에 유지되는 컨텐츠 데이터와 독립적으로 유지된다. 추가로, 일부 실시예에 따르면, 캐시된 컨텐츠 데이터는 컨텐츠 액세스 모듈의 버퍼가 컨텐츠 데이터를 유지하는 기간보다 더 긴 기간 동안 유지된다. 실시예에 따라, 중간 컨텐츠 스트리밍 시스템(106)은 클라이언트 장치(100)에서 로컬로 동작하는 서버 프로세스로 구현될 수 있다.
컨텐츠 액세스 모듈(112)로부터 중간 컨텐츠 스트리밍 시스템(106)에 의해 수신된 요청은 HTTP, FTP, RTP 등을 포함하는 다양한 타입의 네트워크 프로토콜을 이용할 수 있다. 유사하게, 중간 컨텐츠 스트리밍 시스템(106)으로부터 컨텐츠 서버(104)로 전송된 요청은 다양한 타입의 네트워크 프로토콜을 이용할 수 있다. 일부 실시예에 대해, 중간 컨텐츠 스트리밍 시스템(106)으로부터 컨텐츠 서버(104)로 전송된 요청은, 중간 컨텐츠 스트리밍 시스템(106)이 컨텐츠 아이템에 대해 컨텐츠 액세스 모듈(112)로부터 수신한 요청과 유사하거나, 또는 포맷에 있어서 대응될 수 있다.
컨텐츠 서버(104)로부터 클라이언트 장치(100)로 스트리밍되는 컨텐츠 아이템과 연계하여 수신된 컨텐츠 데이터를 로컬로 캐싱하는 것에 이어서, 중간 컨텐츠 스트리밍 시스템(106)은 동일한 컨텐츠 아이템에 대한 다른 요청을 수신할 수 있다. 이 다른 요청은, 동일한 컨텐츠 아이템을 이전에 요청한 클라이언트 장치(100)에서의 컨텐츠 액세스 모듈(예컨대, 컨텐츠 액세스 모듈(112))로부터, 또는 클라이언트 장치(100)에서의 다른 클라이언트 액세스 모듈에 의해 올 수 있다. 중간 컨텐츠 스트리밍 시스템(106)은 로컬 캐시로부터 중간 컨텐츠 스트리밍 시스템(106)에 의해 이전에 수신된 컨텐츠 아이템의 이러한 부분들에 대응하는 컨텐츠 데이터를 제공함으로써 요청을 충족시킬 수 있다. 중간 컨텐츠 스트리밍 시스템(106)은 또한, 컨텐츠 서버(104)로부터 요청하고, 이후 중간 컨텐츠 스트리밍 시스템(106)에 의해 이전에 수신되지 않은 컨텐츠 아이템의 그러한 부분들을 위한 컨텐츠 데이터를 요청하는 컨텐츠 액세스 모듈(예컨대, 컨텐츠 액세스 모듈(112)에 제공함으로써 요청을 충족시킬 수 있다. 이러한 방식으로, 중간 컨텐츠 스트리밍 시스템(106)은 컨텐츠 아이템의 이전의 스트리밍 세션 동안에 클라이언트 장치에 이미 로컬로 캐시된 컨텐츠 데이터로부터 이득을 취하기 위해 클라이언트 장치(100)에서 독립적인 컨텐츠 액세스 모듈을 가능하게 할 수 있다.
예컨대, 사용자는, 컨텐츠 액세스 모듈(112)을 사용하여 클라이언트 애플리케이션 모듈(110)을 통해 소셜 네트워킹 시스템에 의해 제공되는 스트리밍 비디오 컨텐츠 아이템을 프리뷰하는 것을 선택할 수 있다. 컨텐츠 액세스 모듈(112)은, 사용자가 스트리밍 비디오 컨텐츠 아이템을 프리뷰함에 따라, 스트리밍 비디오 컨텐츠 아이템의 전체 스크린보다 작은 뷰를 제공하도록 구성될 수 있다. 이후, 사용자는, 클라이언트 장치(100)에서 스트리밍 비디오 컨텐츠 아이템의 전체 스크린 뷰를 제공하는 제2 컨텐츠 액세스 모듈(도시되지 않음)을 사용하여, 클라이언트 애플리케이션 모듈(110)을 통해 스트리밍 비디오 컨텐츠 아이템을 보는 것을 선택할 수 있다. 제2 컨텐츠 액세스 모듈이 동일한 스트리밍 비디오 컨텐츠 아이템에 대한 액세스를 요청할 때, 중간 컨텐츠 스트리밍 시스템(106)은, 스트리밍 비디오 컨텐츠 아이템을 수반하는, 클라이언트 장치(100)로 이전의 스트리밍 세션 중에 이미 수신된 스트리밍 비디오 컨텐츠 아이템의 그러한 부분들을 로컬 캐시로부터 제공할 수 있다. 사용된 부분들은 컨텐츠 액세스 모듈(112)을 통한 프리뷰를 수반하는 이전의 세션 동안에 수신된 이러한 부분들을 포함할 수 있다.
요청에 따라서, 중간 컨텐츠 스트리밍 시스템(106)은 특정 탐색 시간(예컨대, 비디오의 시작점보다 늦은 시간)에 기반하여 컨텐츠 아이템을 위한 컨텐츠 데이터를 클라이언트 장치(100)에서 컨텐츠 액세스 모듈(예컨대, 컨텐츠 액세스 모듈(112))에 제공하도록 구성될 수 있고, 그럼으로써 중간 서버가 컨텐츠 아이템을 시작점으로부터 또는 그 전체를 요청하고 수신할 필요를 제거할 수 있다. 예컨대, 클라이언트 장치(100)에서의 사용자에 의한 선택에 기반하여, 컨텐츠 액세스 모듈(112)은 컨텐츠 서버(104)에 의해 제공되는 스트리밍 비디오 컨텐츠 아이템의 특정 부분에 액세스하기 위한 요청을 송신할 수 있고, 상기 부분은 스트리밍 비디오 컨텐츠 아이템에서 특정 시간 위치(예컨대, 특정 분 및 초)에 해당한다. 중간 컨텐츠 스트리밍 시스템(106)은 요청을 수신하고, 요청에 기반하여, 특정 시간 위치에 해당하는 특정 부분에 대한 요청을 충족시키기 위해 어떤 컨텐츠 데이터가 컨텐츠 액세스 모듈(112)에 제공될 필요가 있는지를 식별할 수 있다. 예컨대, 식별된 컨텐츠 데이터에 기반하여, 중간 컨텐츠 스트리밍 시스템(106)은 그것의 로컬 캐시로부터 컨텐츠 데이터를 컨텐츠 액세스 모듈(112)에 제공할 수 있고, 컨텐츠 서버(104)로부터 컨텐츠 데이터를 획득하고, 이후 획득된 컨텐츠 데이터를 컨텐츠 액세스 모듈(112)에 제공하거나, 둘 모두를 할 수 있다.
실시예에 따라, 컨텐츠 아이템에 대한 컨텐츠 액세스 모듈(112)로부터 컨텐츠 서버(104)로의 원래의 요청은 중간 컨텐츠 스트리밍 시스템(106)으로 주소화되거나, 전달되거나, 중간 컨텐츠 스트리밍 시스템(106)에 의해 가로채질 수 있다. 예컨대, 컨텐츠 액세스 애플리케이션은 온라인 컨텐츠 소스(예컨대, 컨텐츠 서버(104))에 의해 제공되는 컨텐츠 아이템에 대한 요청을 중간 컨텐츠 스트리밍 시스템(106)에 직접 전송하도록 구성될 수 있다. 결국, 중간 컨텐츠 스트리밍 시스템(106)은 이용가능한 범위만큼 로컬 캐시로부터 요청된 컨텐츠 아이템을 위한 컨텐츠 데이터를 컨텐츠 액세스 모듈(112)에 제공하고, 컨텐츠 서버(104)로부터 로컬 캐시에서 존재하지 않는 컨텐츠 데이터를 획득하며, 이후 획득된 컨텐츠 데이터를 컨텐츠 액세스 모듈(112)로 제공하거나, 또는 둘 모두를 할 수 있다. 이러한 방식으로, 중간 컨텐츠 스트리밍 시스템(106)은, 클라이언트 장치(100) 상의 컨텐츠 액세스 모듈(112) 및 다른 컨텐츠 액세스 모듈들을 위해, 컨텐츠 액세스 모듈의 요청을 충족시키는데 요구되는 컨텐츠 데이터가 로컬로 캐시되지 않을 때, 컨텐츠 서버(104)로부터 컨텐츠 데이터를 요청할 수 있다.
우선순위-기반 컨텐츠 다운로드 시스템(108)은, 클라이언트 장치(100)에서의 사용자에게 컨텐츠 아이템에 대한 액세스가 제시되기 전에 컨텐츠 아이템의 클라이언트 장치(100)로의 우선순위-기반 사전-다운로드를 용이하게 하도록 구성될 수 있다. 예컨대, 소셜 네트워킹 시스템에 게시물에서 나타나는 스트리밍 온라인 컨텐츠 아이템(예컨대, 비디오 컨텐츠 아이템)은 클라이언트 장치(100)에서의 사용자가 이러한 게시물을 대면(예컨대, 이러한 게시물을 열람)하기 전에, 클라이언트 장치(100)로 우선순위-기반 컨텐츠 다운로드 시스템(108)에 의해 부분적으로 또는 전체가 사전-다운로드될 수 있다. 클라이언트 장치(100)에서의 소셜 네트워크 사용자는 소셜 네트워크 뉴스 피드에서 이러한 게시물을 대면할 수 있고, 하나 이상의 뉴스 게시물은 하나 이상의 온라인 컨텐츠 아이템을 포함한다. 사용자가 클라이언트 애플리케이션 모듈(110)을 통해 뉴스 피드를 열람함에 따라, 뉴스 피드의 하나 이상의 뉴스 게시물에 포함된 컨텐츠 아이템은, 이러한 뉴스 게시물이 뉴스 피드를 통해 (예컨대, 뉴스 피드의) 사용자에게 액세스가능하도록 만들어지기 전에 클라이언트 장치(100)로 전체가 또는 부분적으로 사전-다운로드될 수 있다.
일단 컨텐츠 아이템이 우선순위-기반 컨텐츠 다운로드 시스템(108)에 의해 클라이언트 장치(100)로 사전-다운로드되면, 컨텐츠 아이템은 클라이언트 장치(100)의 로컬 캐시에 저장될 수 있다. 일부 실시예에 따르면, 우선순위-기반 컨텐츠 다운로드 시스템(108)은 중간 컨텐츠 스트리밍 시스템(106)과 동일한 로컬 캐시를 이용한다. 이러한 방식으로 로컬 캐시를 공유함으로써, 중간 컨텐츠 스트리밍 시스템(106)은 우선순위-기반 컨텐츠 다운로드 시스템(108)과 상호동작할 수 있다. 예컨대, 컨텐츠 아이템이 클라이언트 장치(100)에서 액세스를 위해 제시되기 전에, 우선순위-기반 컨텐츠 다운로드 시스템(108)은 중간 컨텐츠 스트리밍 시스템(106)과 공유되는 로컬 캐시로 컨텐츠 아이템의 적어도 일부를 사전-다운로드할 수 있고, 컨텐츠 아이템에 대한 요청이 중간 컨텐츠 스트리밍 시스템(106)에 의해 수신되지 전에 그렇게 할 수 있다. 이후, 컨텐츠 아이템에 대한 요청이 중간 컨텐츠 스트리밍 시스템(106)에 의해 수신될 때, 요청은, 우선순위-기반 컨텐츠 다운로드 시스템(108)에 의해 로컬 캐시로 사전-다운로드된 컨텐츠 아이템의 부분들을 사용하여 중간 컨텐츠 스트리밍 시스템(106)에 의해 충족될 수 있다.
본 명세서에 더 상세히 기술되는 것처럼, 컨텐츠 사전-다운로드의 우선순위화는, 제한 없이: 컨텐츠 아이템이 클라이언트 장치(100)에서의 사용자에 의해 대면될 때, 소셜 네트워킹 뉴스 피드에서 자동-재생되는 것인지 여부; 얼마나 많은 소셜 네트워킹 좋아요 또는 코멘트가 컨텐츠 아이템과 관련되는지; 컨텐츠 아이템과 관련된 소셜 네트워킹 좋아요 또는 코멘트의 품질; 클라이언트 장치(100)에 관한 세부사항; 클라이언트 장치(100)에서 이용가능한 컴퓨팅 자원; 컨텐츠 아이템이 클라이언트 장치(100)에서의 사용자에 의해 대면될 확률; 컨텐츠 아이템의 주제; 및 컨텐츠 아이템을 액세스하기 위한 사용자-선호도를 포함하는 다양한 요소에 기반할 수 있다. 우선순위-기반 컨텐츠 다운로드 시스템(108)은 클라이언트 장치(100)에서 로컬로 동작하는 서버 프로세스로 구현될 수 있다.
컨텐츠 서버(104)는 네트워크(102) 상에서 클라이언트 장치(100)로 컨텐츠 아이템, 가령 오디오, 비디오, 또는 다른 멀티미디어 컨텐츠 아이템을 제공할 수 있다. 본 명세서에 더 상세히 기술되는 것처럼, 컨텐츠 아이템은 텍스트, 이미지, 오디오, 비디오, 상호작용형 컨텐츠 아이템 등을 포함할 수 있다. 컨텐츠 아이템은 광고, 가령 오디오 또는 비디오 광고를 포함할 수 있고, 네트워크상에서 사용자들에 의해 공통으로 공유되는 컨텐츠 아이템, 가령 온라인 오디오 또는 비디오 스트림을 포함할 수 있다. 컨텐츠 아이템은 또한, 가령 비디오가 텍스트 메시지에 임베디드되는 것처럼, 다른 컨텐츠 아이템에 임베디드될 수 있다. 컨텐츠 아이템은 또한, 컨텐츠 서버(104)에 의해 네트워크(102) 상에서 클라이언트 장치(100)로 제공될 수 있는, 음악 파일, 비디오 파일, 문서 등에 대한 하이퍼링크를 포함할 수 있다. 이러한 방식으로, 컨텐츠 서버(104)는 실제의 컨텐츠 아이템(예컨대, 음악, 비디오, 문서 등)을 제공할 필요가 없고, 그 대신 온라인 컨텐츠 자원, 가령 클라우드-기반 서비스 또는 서버에 의해 이용가능한 컨텐츠 아이템의 네트워크 위치로의 링크를 제공할 수 있다. 일부 실시예에서, 제2 컨텐츠 아이템 내에 제1 컨텐츠 아이템으로의 하이퍼링크를 포함시키는 것은 제1 컨텐츠 아이템이 제2 컨텐츠 아이템 속에 임베디드되는 것을 발생시킨다.
컨텐츠 아이템은 클라이언트 장치(100)로 통상적으로 다운로드되는 것들 또는 통상적으로 스트리밍되는 것들을 포함할 수 있다. 예컨대, 온라인으로 제공되는 멀티미디어 파일로의 액세스는 클라이언트 장치로의 데이터 스트림의 방식에 의해, 또는 우선 멀티미디어 파일을 클라이언트 장치로 다운로드하고, 이후 클라이언트 장치에서 다운로드된 멀티미디어 파일로의 액세스를 용이하게 하는 방식에 의해 용이하게 될 수 있다. 따라서, 일부 실시예에서, 컨텐츠 아이템(예컨대, 오디오 또는 비디오 파일)은 컨텐츠 서버(104)에 의해 컨텐츠 데이터의 스트림으로 클라이언트 장치(100)에 제공될 수 있다. 컨텐츠 서버(104)로부터 스트리밍된 컨텐츠 데이터를 수신하면, 클라이언트 장치(100)는 본 명세서에 기술되는 것처럼 중간 컨텐츠 스트리밍 시스템(106), 우선순위-기반 컨텐츠 다운로드 시스템(108), 또는 둘 모두를 통해 스트리밍된 컨텐츠 데이터를 컨텐츠 액세스 모듈(112)에 제공할 수 있다. 컨텐츠 액세스 모듈(112)은 결국 스트리밍된 컨텐츠 데이터를 컨텐츠 버퍼 데이터 스토어(114)에 임시로 저장할 수 있고, 컨텐츠 액세스 모듈(112)은, 컨텐츠 버퍼 데이터 스토어(114)에서의 데이터에 해당하는 컨텐츠 아이템의 이러한 부분들로의 액세스를 클라이언트 장치(100)에서의 사용자에게 제공할 수 있다.
일부 실시예로, 컨텐츠 서버(104)는 도 7에 도시되는 것처럼, 소셜 네트워킹 환경(700)으로 통합된다. 예컨대, 컨텐츠 서버(104)는, 가령 도 7에서 참조 번호 722를 갖는 것처럼, 외부 시스템에 의해 구현될 수 있다. 추가로, 중간 컨텐츠 스트리밍 시스템(106), 우선순위-기반 컨텐츠 다운로드 시스템(108), 또는 둘 다는 도 7에 참조 번호 718 및 720으로 각각 도시되는 것처럼, 소셜 네트워킹 환경(700)으로 통합될 수 있다.
도 1에 도시된 컴포넌트, 및 본 명세서에서 모든 도면들은 예시적인 것일 뿐이며, 다른 실시예들은 추가적인, 더 적은, 또는 상이한 컴포넌트들을 포함할 수 있다. 다른 예로, 일부 실시예들은 2개 이상의 클라이언트 장치, 또는 2개 이상의 컨텐츠 서버를 포함할 수 있음이 인식될 것이다. 추가로, 일부 컴포넌트들은, 관련 세부사항을 불명확하게 만들지 않기 위해, 도 1 및 본 명세서에서의 다른 도면들에 도시되지 않을 수 있다.
도 2는 본 발명의 실시예에 따른 중간 컨텐츠 스트리밍 시스템(106)을 도시한다. 도 2에서, 중간 컨텐츠 스트리밍 시스템(106)은 클라이언트 컨텐츠 요청 모듈(200), 컨텐츠 캐시 모듈(202), 서버 컨텐츠 요청 모듈(204), 컨텐츠 스트리밍 모듈(206), 컨텐츠 퍼지 모듈(208), 및 컨텐츠 캐시 데이터 스토어(210)를 포함한다. 일부 실시예에 따르면, 컨텐츠 캐시 데이터 스토어(210)는 중간 컨텐츠 스트리밍 시스템(106)에 의해 서비스되는 클라이언트 장치(예컨대, 클라이언트 장치(100))를 위한 로컬 캐시로 기능한다. 일부 실시예에 대해, 컨텐츠 캐시 데이터 스토어(210)는 본 명세서에 기술되는 중간 컨텐츠 스트리밍 시스템(106) 및 우선순위-기반 컨텐츠 다운로드 시스템 사이에서 공유되는 로컬 캐시로 기능한다. 도 2에 도시된 컴포넌트들은 추가적인, 더 적은, 또는 상이한 컴포넌트들을 포함할 수 있다. 추가적으로, 일부 컴포넌트들은 관련 세부사항을 불명확하게 만들지 않기 위해, 도 2에 도시되지 않을 수 있다.
클라이언트 컨텐츠 요청 모듈(200)은 컨텐츠 아이템에 대한 요청을 클라이언트 액세스 모듈로부터 수신하도록 구성될 수 있고, 컨텐츠 아이템은 네트워크상에서 컨텐츠 서버에 의해 제공된다. 실시예에 따라, 클라이언트 컨텐츠 요청 모듈(200)은 요청을 클라이언트 액세스 모듈로부터 직접, 포워딩 방식으로, 또는 가로채기(interception) 방식으로 수신할 수 있다. 수신된 요청은 HTTP, FTP, 및 RTP를 포함하는 다양한 네트워크 프로토콜을 포함하는 것들 중 하나일 수 있다. 클라이언트 컨텐츠 요청 모듈(200)은 또한, 수신된 요청을 분석하고, 요청을 충족시키는데 사용될 수 있는 정보를 획득하도록 구성될 수 있다. 예컨대, 요청을 분석함으로써, 클라이언트 컨텐츠 요청 모듈(200)은 요청되는 컨텐츠 아이템을 식별하거나, 컨텐츠 아이템이 탐색되는 컨텐츠 서버를 식별하거나, 요청의 타입을 식별하거나, 또는 컨텐츠 아이템의 특정된 요청 부분(예컨대, 컨텐츠 아이템에서 시간 위치)을 식별할 수 있다.
요청 분석에 기반하여, 클라이언트 컨텐츠 요청 모듈(200)은 컨텐츠 캐시 데이터 스토어(210)에 저장된 컨텐츠 아이템의 하나 이상의 식별된 부분에 해당하는 컨텐츠 데이터의 제1 세트를 식별할 수 있다. 컨텐츠 캐시 데이터 스토어(210)에서 어떠한 컨텐츠 데이터도 컨텐츠 아이템의 식별된 부분에 해당하지 않는다면, 컨텐츠 데이터의 제1 세트는 비어있거나, 또는 컨텐츠 데이터의 제1 세트는 생성되지 않을 수 있다. 추가로, 요청 분석에 기반하여, 클라이언트 컨텐츠 요청 모듈(200)은 또한, 컨텐츠 캐시 데이터 스토어(210)에 저장되지 않거나, (또는 그로부터 누락된) 컨텐츠 아이템의 하나 이상의 식별된 부분에 해당하는 컨텐츠 데이터의 제2 세트를 식별할 수 있다. 컨텐츠 아이템 전부가 (예컨대, 이전의 컨텐츠 스트리밍 세션 동안에) 이미 수신되고 컨텐츠 캐시 데이터 스토어(210)에 저장되는 경우, 컨텐츠 데이터의 제2 세트는 비어있을 수 있거나, 또는 컨텐츠 데이터의 제2 세트는 생성되지 않을 수 있다.
컨텐츠 데이터의 제1 세트, 컨텐츠 데이터의 제2 세트, 또는 둘 다를 식별하는 것은 요청되는 컨텐츠 아이템에 해당하는 저장된 컨텐츠 데이터에 대해 컨텐츠 캐시 데이터 스토어(210)를 확인하는 것, 및 저장된 컨텐츠 데이터가 컨텐츠 액세스 모듈에 의해 요청된 특정 부분에 해당하는지 여부를 결정하는 것을 포함할 수 있다. 추가로, 컨텐츠 데이터의 제2 세트를 식별하는 것은, 컨텐츠 데이터가 컨텐츠 캐시 데이터 스토어에 저장한 것을, 컨텐츠 액세스 모듈에 의해 컨텐츠 아이템이 요청되는 컨텐츠 서버로부터 이용가능한 컨텐츠 데이터와 비교하는 것을 포함할 수 있다.
컨텐츠 캐시 모듈(202)은 컨텐츠 캐시 데이터 스토어(210)로의 액세스를 용이하게 하도록 구성될 수 있다. 예컨대, 컨텐츠 캐시 모듈(202)은, 어떤 컨텐츠 데이터가 컨텐츠 캐시 데이터 스토어(210)에 저장되어있는지를 결정하거나, 어떤 컨텐츠 데이터가 컨텐츠 캐시 데이터 스토어(210)로부터 누락되었는지를 결정하거나, 컨텐츠 캐시 데이터 스토어(210)로 (예컨대, 컨텐츠 서버(104)로부터 수신된) 컨텐츠 데이터의 저장을 용이하게 하거나, 또는 (예컨대, 컨텐츠 퍼지 모듈(208)에 의해) 컨텐츠 캐시 데이터 스토어(210)로부터 컨텐츠 데이터의 제거를 용이하게 하는데 이용될 수 있다. 컨텐츠 캐시 모듈(202)은 또한, 컨텐츠 데이터 수명, 가장 최근의 액세스의 시간, 메타데이터 등을 포함하지만, 이들로 제한되지 않는, 컨텐츠 캐시 데이터 스토어(210)에 저장된 컨텐츠 데이터에 관한 정보를 획득할 수 있다. 컨텐츠 캐시 모듈(202)은 또한, 컨텐츠 액세스 모듈에 의한 요청에 응답하여, 컨텐츠 액세스 모듈로 제공되는 컨텐츠 데이터를 획득하고 중간 컨텐츠 스트리밍 시스템(106)에 제공하는데 이용될 수 있다.
서버 컨텐츠 요청 모듈(204)은 컨텐츠 캐시 데이터 스토어(210)로부터 누락된 컨텐츠 아이템의 식별된 부분들에 해당하는 컨텐츠 데이터의 제2 세트에 대한 요청을 생성하고 컨텐츠 서버로 제출하도록 구성될 수 있다. 일부 실시예에 따르면, 서버 컨텐츠 요청 모듈(204)은 컨텐츠 데이터의 제2 세트에 대한 요청을 제출하고, 그에 응답하여 요청된 컨텐츠 데이터의 제2 세트의 일부 또는 전부를 수신한다. 서버 컨텐츠 요청 모듈(204)에 의해 제출된 요청은 클라이언트 장치의 컨텐츠 액세스 모듈로부터 클라이언트 컨텐츠 요청 모듈(200)이 원래 수신한 요청과 포맷 또는 프로토콜에 있어서 유사할 수 있다. 컨텐츠 서버로부터 컨텐츠 데이터를 수신하면, 서버 컨텐츠 요청 모듈(204)은, 컨텐츠 데이터가 컨텐츠 아이템을 요청하는 컨텐츠 액세스 모듈로 (예컨대, 컨텐츠 스트리밍 모듈(206)을 통해) 제공되기 전에, 수신된 컨텐츠 데이터를 (예컨대, 컨텐츠 캐시 모듈(202)을 통해) 컨텐츠 캐시 데이터 스토어(210)에 저장할 수 있다.
컨텐츠 스트리밍 모듈(206)은 중간 컨텐츠 스트리밍 시스템(106)에서 수신된 컨텐츠 데이터를 컨텐츠 아이템을 요청하는 컨텐츠 액세스 모듈에 데이터 스트림으로 제공하도록 구성될 수 있다. 일부 실시예에 따르면, 컨텐츠 스트리밍 모듈(206)은 컨텐츠 데이터 스트림을 생성하고 이후 제공하며, 컨텐츠 데이터 스트림은, 서버 컨텐츠 요청 모듈(204)에 의한 요청에 응답하여 컨텐츠 서버로부터 수신된 컨텐츠 데이터 스트림과 포맷 또는 프로토콜에 있어서 유사할 수 있다. 컨텐츠 데이터 스트림은 컨텐츠 캐시 데이터 스토어(210)로부터 컨텐츠 캐시 모듈(202)에 의해 제공된 컨텐츠 데이터나, 요청된 컨텐츠 아이템을 제공하는 컨텐츠 서버로부터 서버 컨텐츠 요청 모듈(204)에 의해 획득되고 제공된 컨텐츠 데이터, 또는 이들 모두를 포함할 수 있다. 일부 실시예에 따르면, 서버 컨텐츠 요청 모듈(204)에 의해 획득된 컨텐츠 데이터는 (예컨대, 컨텐츠 캐시 모듈(202)을 통해) 우선 컨텐츠 캐시 데이터 스토어(210)에 저장되고, 컨텐츠 스트리밍 모듈(206)은 컨텐츠 캐시 데이터 스토어(210)에 저장되는 컨텐츠 데이터로부터 컨텐츠 데이터 스트림을 생성한다.
컨텐츠 퍼지 모듈(208)은, 클라이언트 장치의 저장 한계, 컨텐츠 데이터의 수명, 컨텐츠 데이터의 마지막 액세스 시간, 컨텐츠 데이터의 액세스의 빈도, 컨텐츠 데이터의 타입, 컨텐츠 아이템의 부분들에 대한 해당 여부, 또는 컨텐츠 데이터가 대응되는 컨텐츠 아이템의 우선순위 등을 제한 없이 포함하는 다수의 요인에 기반하여 컨텐츠 캐시 데이터 스토어(210)에 컨텐츠 데이터를 퍼지하도록 구성될 수 있다. 일부 실시예에 따르면, 컨텐츠 퍼지 모듈(208)은, 더 높은 우선순위를 갖는 제2 컨텐츠 아이템에 해당하는 컨텐츠 데이터를 퍼지하기 전에 더 낮은 우선순위를 갖는 제1 컨텐츠 아이템에 해당하는 컨텐츠 데이터를 퍼지한다. 컨텐츠 아이템의 우선순위를 결정하는 것과 관련된 추가 세부사항이 본 명세서에 기술된다.
도 3은 본 발명의 실시예에 따른 우선순위-기반 컨텐츠 다운로드 시스템(108)을 도시한다. 도 3에서, 우선순위-기반 컨텐츠 다운로드 시스템(108)은 뉴스 피드 모니터 모듈(300), 컨텐츠 우선순위 모듈(302), 컨텐츠 사전-다운로드 모듈(304), 및 컨텐츠 캐시 모듈(306)과 컨텐츠 캐시 데이터 스토어(308)를 포함한다. 일부 실시예에 따르면, 컨텐츠 캐시 데이터 스토어(308)는 우선순위-기반 컨텐츠 다운로드 시스템(108)에 의해 서비스되는 클라이언트 장치(예컨대, 클라이언트 장치(100))를 위한 로컬 캐시로 기능한다. 일부 실시예들에 대해, 컨텐츠 캐시 데이터 스토어(308)는 본 명세서에 기술되는 우선순위-기반 컨텐츠 다운로드 시스템(108) 및 중간 컨텐츠 스트리밍 시스템 사이에서 공유되는 로컬 캐시로 기능한다. 도 3에 도시된 컴포넌트들은 추가의, 더 적은 수의, 또는 상이한 컴포넌트들을 포함할 수 있다. 추가로, 일부 컴포넌트들은 관련 세부사항을 불명확하게 하지 않기 위해 도 3에 도시되지 않을 수 있다.
뉴스 피드 모니터 모듈(300)은 뉴스 피드를 통해 사용자에게 액세스가능하게 만들어진 하나 이상의 컨텐츠 아이템에 대한 뉴스 피드를 모니터하도록 구성될 수 있다. 본 명세서에서 더 상세히 기술되는 것처럼, 뉴스 피드는 각각 하나 이상의 컨텐츠 아이템을 포함할 수 있는 하나 이상의 뉴스 게시물을 포함할 수 있다. 모니터링되는 뉴스 피드는 소셜 네트워킹 시스템에 의해 제공되고, 독립형 애플리케이션, 가령 소셜 네트워킹 애플리케이션 또는 소셜 네트워킹 웹 페이지에 액세스하는 웹 브라우저를 통해 액세스가능한 것일 수 있다. 뉴스 피드 모니터 모듈(300)에 의해 모니터링되는 컨텐츠 아이템은, 뉴스 피드를 통해 사용자에게 현재 보이는 것(예컨대, 사용자에게 현재 보여지는 뉴스 게시물에 포함된 것), 뉴스 피드를 통해 제시되도록 스케줄된 것, 또는 둘 다일 수 있다.
모니터링 동안에, 뉴스 피드 모니터 모듈(300)은 뉴스 피드를 통해 사용자에게 제시되도록 스케줄된 하나 이상의 컨텐츠 아이템을 식별할 수 있다. 더 상세히 본 명세서에 기술되는 것처럼, 뉴스 피드를 통해 제시되도록 스케줄된 컨텐츠 아이템은 뉴스 피드에 제시되도록 스케줄된 뉴스 게시물에 포함된 것일 수 있다. 추가로, 뉴스 피드에 제시되도록 스케줄된 뉴스 게시물은 뉴스 피드에 아직 추가되어야 하는 것, 뉴스 피드로부터의 이전의 제거 후에 뉴스 피드로 아직 다시 추가되어야 하는 것, 뉴스 피드에 이미 추가되었으나 아직 사용자에 의해 뉴스 피드를 통해 열람되어야 하는 것, 또는 사용자에 의해 뉴스 피드를 통해 적어도 한번 이미 열람된 것이지만 현재 사용자의 시야에 있지 않은 것일 수 있다. 뉴스 피드 모니터 모듈(300)은 하나 이상의 컨텐츠 아이템을 주기적으로 또는 연속적으로 감지하도록 구성될 수 있다. 뉴스 피드가 소셜 네트워킹 시스템에 의해 제공되는 경우에, 뉴스 피드 모니터 모듈(300)은 소셜 네트워킹 시스템에 의해 관리되는 소셜 그래프를 사용하여 컨텐츠 아이템에 대한 뉴스 피드를 모니터링할 수 있다.
컨텐츠 우선순위 모듈(302)은 컨텐츠 아이템과 관련된 요인들에 기반하여 주어진 컨텐츠 아이템의 우선순위를 결정하도록 구성될 수 있다. 실시예에 따라, 컨텐츠 아이템의 우선순위는, 컨텐츠 아이템의 사전-다운로드의 순서(예컨대, 더 높은 우선순위를 갖는 컨텐츠 아이템이 먼저 사전-다운로드됨), 어떤 로컬로 캐시된 컨텐츠 아이템이 클라이언트 장치로부터 퍼지되어야 하는지의 순서(예컨대, 낮은 우선순위를 갖는 컨텐츠 아이템에 대한 컨텐츠 데이터가 먼저 퍼지됨), 또는 컨텐츠 아이템이 (예컨대, 컨텐츠 아이템의 우선순위가 사전-다운로드에 대한 임계치에 도달하는지 여부에 기반하여) 사전-다운로드되어야 하는지 여부를 결정하는데 사용될 수 있다. 일부 실시예에서, 우선순위는 주어진 컨텐츠 아이템에 관한 다른 동작을 결정할 수 있다. 컨텐츠 아이템에 대한 우선순위를 결정하는 것은: 컨텐츠 아이템이 사용자에게 가시적일 때 자동-재생되는지 여부, 컨텐츠 아이템이 광고와 관련되는지 여부; 사용자의 선호도; 클라이언트 장치의 자원의 이용가능성(예컨대, 메모리, 프로세서 속도, 네트워크 대역폭 등), 컨텐츠 아이템의 컨텐츠 타입(예컨대, 스트리밍 비디오, 오디오, 또는 프레젠테이션); 제1 컨텐츠 아이템의 메타데이터(예컨대, 제작자, 발행자, 주제, 제목 등); 컨텐츠 아이템과 관련된 소셜 네트워킹 정보를 제한 없이 포함하는 임의의 수의 요소들에 기반할 수 있다. 일부 실시예에 대해, 소셜 네트워킹 정보는 소셜 네트워크상의 소셜 네트워크 사용자들에 의한 컨텐츠 아이템의 좋아요의 수(예컨대, 친구 또는 가까운 가족 구성원인 소셜 네트워크 사용자들에 의해 좋아요된 컨텐츠 아이템들에 대한 높은 우선순위), 소셜 네트워크 상의 소셜 네트워크 사용자들에 의한 컨텐츠 아이템의 공유의 수(예컨대, 좋아요가 더 많을수록, 컨텐츠 아이템의 인기가 더 높고, 따라서 우선순위가 더 높음), 또는 소셜 네트워크 상의 소셜 네트워크 사용자들에 의한 컨텐츠 아이템과 관련된 코멘트의 수(예컨대, 더 많은 코멘트가 있으면, 컨텐츠 아이템이 더욱 흥미롭고, 따라서 우선순위가 더 높음)을 포함한다. 소셜 네트워킹 정보는 소셜 네트워크상에서 제1 컨텐츠 아이템을 좋아요한 한 명 이상의 소셜 네트워크 사용자들을 식별하거나, 소셜 네트워크상에서 제1 컨텐츠 아이템을 공유한 한 명 이상의 소셜 네트워크 사용자들을 식별하거나, 또는 소셜 네트워크상에서 제1 컨텐츠 아이템에 대해 코멘트한 한 명 이상의 소셜 네트워크 사용자들을 식별할 수 있다. 컨텐츠 아이템의 우선순위를 결정하는데 사용되는 소셜 정보는 그것의 다양한 기능을 지원하기 위해 소셜 네트워킹 시스템에 의해 관리되는 소셜 그래프에 의해 제공될 수 있다.
컨텐츠 사전-다운로드 모듈(304)은 하나 이상의 컨텐츠 아이템 전체 또는 부분을 클라이언트 장치로 사전-다운로드하도록 구성될 수 있고, 컨텐츠 아이템은 뉴스 피드 모니터 모듈(300)에 의해 모니터링되는 뉴스 피드에서 제시되도록 스케줄된다. 추가로, 컨텐츠 사전-다운로드 모듈(304)은, 클라이언트 장치에서의 클라이언트 액세스 모듈이 클라이언트 아이템으로의 액세스를 요청하기 전에 하나 이상의 컨텐츠 아이템 전체 또는 부분을 클라이언트 장치로 사전-다운로드하도록 구성될 수 있다. 더 상세히 본 명세서에서 기술되는 것처럼, 일단 컨텐츠 아이템의 컨텐츠 데이터가 컨텐츠 사전-다운로드 모듈(304)에 의해 클라이언트 장치로 사전-다운로드되면, 컨텐츠 데이터는 컨텐츠 캐시 데이터 스토어(308)로 저장될 수 있다. 이후, 사전-다운로드된 컨텐츠 아이템으로의 액세스를 요청하는 컨텐츠 액세스 모듈에는 가능한 정도까지 컨텐츠 캐시 데이터 스토어(308)로부터의 컨텐츠 데이터가 제공될 수 있다. 이러한 방식으로, 적어도 컨텐츠 아이템의 사전-다운로드된 부분들로의 액세스는, 컨텐츠 서버로부터 직접 컨텐츠 아이템에 대한 컨텐츠 데이터를 획득해야 하는 경우보다 더 빠를 수 있다. 컨텐츠 아이템과 관련된 모든 컨텐츠 데이터보다 적은 것들이 컨텐츠 캐시 데이터 스토어(308)로 저장된 경우, 컨텐츠 액세스 모듈은, 본 명세서에 기술된 중간 컨텐츠 스트리밍 시스템을 통하거나, 컨텐츠 서버로부터 직접, 또는 둘의 임의의 조합을 사용함으로써 필요한 컨텐츠 데이터를 획득할 수 있다.
실시예에 따라, 얼마나 많이 주어진 컨텐츠 아이템이 컨텐츠 사전-다운로드 모듈(304)에 의해 사전-다운로드되는지는: 사용자 선호도(예컨대, 오로지 최초 30초만 사전-다운로드하기); 시스템 선호도(예컨대, 소셜 네트워킹 시스템 디폴트 설정); 컨텐츠 아이템의 전체 크기; 컨텐츠 아이템의 타입(예컨대, 비디오 또는 오디오 컨텐츠 아이템); (예컨대, 컨텐츠 우선순위 모듈(302)에 의해 결정되는) 컨텐츠 아이템의 우선순위; 클라이언트 장치의 자원의 이용가능성(예컨대, 메모리, 프로세서 속도, 네트워크 대역폭 등); 클라이언트 장치에서의 사용자에 대한 관련성; 및 클라이언트 장치에서의 사용자에 의한 관심의 가능성을 제한 없이 포함하는 다양한 요인들에 의존할 수 있다. 예컨대, 높은 우선순위를 갖는 컨텐츠 아이템들은 낮은 우선순위를 갖는 컨텐츠 아이템들보다 많은 사전-다운로드된 컨텐츠 데이터를 가질 수 있다.
컨텐츠 캐시 모듈(306)은 컨텐츠 캐시 데이터 스토어(308)로의 액세스를 용이하게 하도록 구성될 수 있다. 예컨대, 컨텐츠 캐시 모듈(306)은 어떤 컨텐츠 데이터가 컨텐츠 캐시 데이터 스토어(308)에 저장되어있는지를 결정하거나, 어떤 컨텐츠 데이터가 컨텐츠 캐시 데이터 스토어(308)로부터 누락되는지를 결정하거나, (예컨대, 컨텐츠 사전-다운로드 모듈(304)에 의해 수신되고 사전-다운로드된) 컨텐츠 데이터의 컨텐츠 캐시 데이터 스토어(308)로의 저장을 용이하게 하거나, 또는 컨텐츠 데이터의 컨텐츠 캐시 데이터 스토어(308)로부터의 제거를 용이하게 하는데 이용될 수 있다. 컨텐츠 캐시 모듈(306)은 또한, 컨텐츠 데이터 수명, 마지막 액세스의 시간, 메타데이터 등을 포함하지만 이들로 제한되지 않는, 컨텐츠 캐시 데이터 스토어(308)에 저장된 컨텐츠 데이터에 관한 정보를 획득할 수 있다.
도 3은 뉴스 피드에 관련하여 도시되고 기술되지만, 일부 실시예에서, 우선순위-기반 컨텐츠 다운로드 시스템(108)은 독립형 애플리케이션을 통해 제공되는 컨텐츠 아이템, 또는 웹 브라우저에 의해 열람가능한 웹 페이지에 임베디드된 컨텐츠 아이템을 포함하지만, 이들로 제한되지 않는 컨텐츠 아이템을 배포하기 위한 다른 방법으로 이용될 수 있다.
도 4는 본 발명의 실시예에서 사용되는 예시적인 뉴스 피드(400)를 도시한다. 뉴스 피드(400)는 소셜 네트워킹 시스템에 의해 제공되는 것일 수 있고, 각각 소셜 네트워킹 시스템에 게시되거나 감지된 하나 이상의 이벤트를 기술하는 하나 이상의 뉴스 아이템들(이하, "뉴스 게시물")을 제공하도록 구성될 수 있다. 예컨대, 뉴스 피드(400)는 소셜 네트워킹 시스템을 지원하는 소셜 그래프 데이터의 노드, 에지, 또는 계수에 기반하는 하나 이상의 뉴스 게시물을 포함할 수 있다.
본 명세서에 더 상세히 기술되는 것처럼, 소셜 네트워킹 시스템은 복수의 에지에 의해 상호연결되는 복수의 노드를 포함하는 "소셜 그래프"를 생성하고 관리할 수 있으며, 소셜 그래프에서 각각의 노드는 다른 노드에 행위를 하거나 및/또는 다른 노드에 의해 행위가 가해질 수 있는 엔티티를 표현할 수 있다. 소셜 그래프는 예컨대, 사용자들, 비-인간 엔티티, 컨텐츠 아이템, 웹 페이지, 그룹, 활동, 메시지, 컨셉, 및 소셜 네트워킹 시스템에서 객체에 의해 표현될 수 있는 임의의 다른 것들을 포함하는 다양한 타입의 노드들을 포함할 수 있다. 추가로, 소셜 그래프는 소셜 그래프에서 노드 사이의 경로에 대한 가중치를 반영하고, 소셜 그래프에서 노드들 사이의 관련성에 대한 척도로서 기능하는 계수(예컨대, 가중치에 기반하여, 계수들은 사용자가 친구를 맺은 다른 사람보다 그녀의 가장 친한 친구에 대해 사용자가 더 가깝다고 표시할 수 있음)를 포함할 수 있다. 따라서, 소셜 그래프 데이터에 포함된 노드, 에지, 또는 계수에 기반하여, 뉴스 피드(400)는 소셜 네트워킹 시스템의 소셜 그래프에서 주어진 노드에 대한 뉴스 게시물의 관계에 따라 하나 이상의 뉴스 게시물들로 채워질 수 있다. 예컨대, 뉴스 피드(400)는 특정 소셜 네트워킹 사용자를 표현하는 노드와 관련하여 생성된 맞춤형 소셜 네트워킹 뉴스 피드일 수 있다.
도 4에 도시되는 것처럼, 뉴스 피드(400)는 복수의 뉴스 게시물들(402-1, 402-2, 402-3, 402-4, 402-5)(이하, "뉴스 게시물(402)")을 포함한다. 뉴스 피드(400)는 소셜 네트워킹 시스템의 방식으로 제공될 수 있고, 독립형 애플리케이션, 가령 소셜 네트워킹 애플리케이션 또는 소셜 네트워킹 웹 페이지에 액세스하는 웹 브라우저를 통해 액세스가능할 수 있다. 도 4에서 뉴스 게시물(P-1, P-2)은 클라이언트 장치 디스플레이(404)를 통해 이미 사용자에 의해 열람된 뉴스 게시물일 수 있는 한편, 뉴스 게시물(P+1, P+2)은 클라이언트 장치의 사용자에 의한 액세스를 위해 클라이언트 장치 디스플레이(404)를 통해 제시되도록 스케줄된 뉴스 게시물일 수 있다. 실시예에 따라, 뉴스 게시물(402)은 뉴스 피드(400)에서 게시되는 시퀀스에 따라 열람될 수 있다. 본 명세서에서 더 상세히 사용되는 것처럼, 뉴스 피드에서 제시되도록 스케줄된 뉴스 게시물 또는 컨텐츠 아이템은, 예컨대, 뉴스 피드에 아직 추가되어야 할 것, 뉴스 피드로부터의 이전의 제거 후에 뉴스 피드로 아직 다시 추가되어야 할 것, 뉴스 피드로 이미 추가되었으나, 사용자에 의해 뉴스 피드를 통해 아직 보여져야 하는 것, 또는 사용자에 의해 뉴스 피드를 통해 적어도 한번 이미 보여졌으나, 현재 사용자의 시야에 있지 않은 것을 포함할 수 있다.
실시예에 따라, 뉴스 게시물(402) 각각은 하나 이상의 컨텐츠 아이템을 포함할 수 있다. 컨텐츠 아이템을 포함시킬 때, 뉴스 게시물(402)은 하이퍼링크 방식, 컨텐츠 아이템을 뉴스 게시물의 컨텐츠에 임베디드시키는 방식, 또는 둘 다에 의해 컨텐츠 아이템을 포함시킬 수 있다. 소셜 네트워킹 시스템의 맥락에서, 뉴스 피드(400)는, 소셜 네트워킹 시스템을 지원하는 소셜 그래프 데이터에 대한 하나 이상의 변경사항, 또는 뉴스 피드(400)를 현재 보고 있는 소셜 네트워킹 사용자의 행동을 포함하는 다양한 요인들에 기반하여 추가 뉴스 게시물로 업데이트될 수 있다. 소셜 그래프 데이터에 대한 변경사항은 소셜 네트워크 이벤트들이 소셜 그래프 데이터로 노드로서 언제 추가되는지를 포함할 수 있다. 이렇게 추가된 노드의 뉴스 피드(400)를 현재 보고 있는 소셜 네트워킹 사용자에 대한 관계에 기반하여, 뉴스 게시물들이 뉴스 피드(400)에 추가될 수 있다.
도 4에 또한, 도시되는 것처럼, 뉴스 피드(400)는 클라이언트 장치 디스플레이(404)에 대해 배치되어서 뉴스 피드(400)의 특정 부분이 클라이언트 장치 디스플레이(404)를 통해 가시적이도록 한다. 도 4에 도시되는 것처럼, 클라이언트 장치 디스플레이(404)에 대한 뉴스 피드(400)의 위치는 클라이언트 장치 디스플레이(404)를 통해 뉴스 피드(400)를 열람하는 사용자로 하여금 오로지 뉴스 게시물(P0), 뉴스 게시물(P-1)의 하부, 및 게시물(P+1)의 상부만 볼 수 있도록 한다. 사용자가 클라이언트 장치 디스플레이(404)에 대해 수직으로 뉴스 피드(400)를 재배치하면(예컨대, 클라이언트 장치로의 사용자 입력에 기반하여 뉴스 피드(400)를 스크롤 업하거나 다운하면), 클라이언트 장치 디스플레이(404)에서 사용자에 의한 뉴스 게시물(402)의 일부 또는 전부의 가시성이 증가하거나 감소할 수 있다. 추가로, 사용자가 클라이언트 장치 디스플레이(404)에 대해 수직으로 뉴스 피드(400)를 재배치함에 따라, 뉴스 피드(400)는 자동으로 추가 뉴스 게시물로 채워지거나, 뉴스 피드(400)에서 현재 뉴스 게시물이 비워지거나, 또는 둘 모두가 될 수 있다. 예컨대, 사용자가 뉴스 피드(400)를 재배치하여 뉴스 피드(400)의 뉴스 게시물(P+2)이 클라이언트 장치 디스플레이(404)의 시야로 오도록 한다면, 뉴스 게시물(P-2)은 뉴스 피드(400)의 상부로부터 제거될 수 있고, 뉴스 게시물(P+3)(도시되지 않음)이 뉴스 피드(400)의 하부에 추가될 수 있다.
본 명세서에서 더 상세히 기술되는 것처럼, 뉴스 피드(400)에 대해, 뉴스 게시물(P+1) 및 뉴스 게시물(P+2)은 (클라이언트 장치 디스플레이(404)를 통해 사용자에 의해 아직 열람되어야 하기 때문에) 뉴스 피드를 통한 액세스를 위한 사용자에 대한 최종적 제시를 위해 스케줄된 뉴스 게시물로서 여겨질 수 있다. 일부 실시예에서, 뉴스 피드(400)의 다양한 양태, 가령 행동, 배향, 외관 및 동작은 도 4에 도시된 것, 또는 본 명세서에 기술된 것과는 상이할 수 있다.
뉴스 피드(400)를 통해, 뉴스 게시물(402) 중 하나에 포함된 컨텐츠 아이템은 클라이언트 장치에서 사용자에 의해 액세스가능할 수 있다. 예컨대, 일단 뉴스 피드(400)에 포함된 뉴스 게시물이 클라이언트 장치 디스플레이(404)를 통해 가시적이게 되면, 뉴스 게시물들에 포함된 임의의 컨텐츠 아이템(예컨대, 스트리밍 비디오 컨텐츠 아이템)은 클라이언트 장치에서 사용자에게 액세스가능하게 될 수 있다. 일부 실시예에 따라, 컨텐츠 아이템을 갖는 뉴스 게시물(402) 중 하나가 뉴스 피드(400)를 통해 액세스가능하게 되기 전에, 우선순위-기반 컨텐츠 다운로드 시스템은 컨텐츠 아이템을 전체로서 또는 부분적으로 클라이언트 장치에 사전-다운로드할 수 있다. 예컨대, 사용자가 뉴스 피드(400)에 대해 클라이언트 장치 디스플레이(404)를 재배치하여 뉴스 게시물(P+2)이 클라이언트 장치 디스플레이(404)를 통해 가시권에 들어오도록 하고 (시야에 한 번에 사용자에게 액세스가능하도록 하면), 뉴스 게시물(P+2)에 포함된 임의의 컨텐츠 아이템은 클라이언트 장치로 전체가 또는 부분적으로 사전-다운로드될 수 있다. 그렇게 하여서, 뉴스 게시물(P+2)에 포함된 컨텐츠 아이템(예컨대, 자동-재생되는 비디오 또는 오디오)은, 뉴스 게시물(P+2)이 클라이언트 장치 디스플레이(404)를 통해 시야로 들어오자마자 액세스되도록 준비될 수 있다. 일부 실시예에 따르면, 우선순위-기반 컨텐츠 다운로드 시스템은 뉴스 게시물(P+1)에 포함된 제1 컨텐츠 아이템에 대한 제1 우선순위를 결정하고, 뉴스 게시물(P+2)에 포함된 제2 컨텐츠 아이템에 대한 제2 우선순위를 결정하며, 제1 우선순위가 제2 우선순위보다 높거나 같다면 제2 컨텐츠 아이템을 사전-다운로드하기 전에 제1 컨텐츠 아이템의 일부나 전부를 클라이언트 장치로 사전-다운로드하고, 제2 우선순위가 제1 우선순위보다 높거나 같다면 제1 컨텐츠 아이템을 사전-다운로드하기 전에 제2 컨텐츠 아이템의 일부나 전부를 클라이언트 장치로 사전-다운로드한다.
도 5는 본 발명의 실시예에 따른, 중간 컨텐츠 스트리밍을 위한 예시적인 프로세스(500)를 도시한다. 일부 실시예에 따르면, 프로세스(500)는 클라이언트 장치(100)에서 중간 컨텐츠 스트리밍 시스템(106)에 의해 수행되는 것일 수 있다. 블록(502)에서, 컨텐츠 서버로부터 컨텐츠 아이템에 대한 컨텐츠 액세스 애플리케이션에 의한 요청이 수신될 수 있다. 본 명세서에서 더 상세히 기술되는 것처럼, 컨텐츠 액세스 애플리케이션은 클라이언트 장치에서 동작할 수 있고, 컨텐츠 액세스 애플리케이션에 의한 요청은 동일한 클라이언트 장치에서 수신될 수 있다. 실시예에 따라, 요청은 직접 수신, 포워딩(예컨대, 클라이언트 장치상의 컴포넌트가 블록(502)에 의한 프로세싱에 대한 모든 온라인 컨텐츠 아이템 요청을 포워딩하도록 구성됨), 또는 가로채기 방식으로 수신될 수 있다. 추가로, 요청은 HTTP, FTP, 및 RTP를 포함하지만 이들로 제한되지 않는 하나 이상의 타입의 네트워크 프로토콜을 포함할 수 있다.
블록(504)에서, 요청이 분석될 수 있다. 요청을 분석함으로써, 프로세스(500)는 요청되는 컨텐츠 아이템을 식별하거나, 컨텐츠 아이템이 검색되는 컨텐츠 서버를 식별하거나, 요청의 타입을 식별하거나, 컨텐츠 아이템의 구체적으로 요청된 부분들(예컨대, 컨텐츠 아이템에서의 시간 위치)을 식별할 수 있다.
블록(506)에서, 요청된 컨텐츠 아이템의 하나 이상의 부분들이 식별될 수 있다. 예컨대, 프로세스(500)는 컨텐츠 아이템의 요청된 부분들을 식별하기 위해 블록(504)에 의해 제공되는 요청 분석을 이용할 수 있다.
블록(508)에서, 컨텐츠 데이터의 제1 세트가 식별될 수 있고, 여기서 컨텐츠 데이터의 제1 세트는 로컬 캐시에 저장된 컨텐츠 아이템의 하나 이상의 식별된 부분들에 해당한다. 로컬 캐시에서의 컨텐츠 데이터가 컨텐츠 아이템의 식별된 부분들에 해당하지 않는 경우, 컨텐츠 데이터의 제1 세트는 비어있을 수 있고, 컨텐츠 데이터의 제1 세트가 생성되지 않거나, 블록(508) 및 블록(510) 중 하나 또는 둘 다가 스킵(skip)될 수 있다. 일부 실시예를 위해, 로컬 캐시는 블록(502)에서 컨텐츠 아이템에 대한 요청을 수신하고 컨텐츠 아이템을 요청하는 클라이언트 액세스 애플리케이션을 동작하는 클라이언트 장치와 동일한 클라이언트 장치에 위치할 수 있다. 컨텐츠 데이터의 제1 세트를 식별하는 것은 요청되는 컨텐츠 아이템에 해당하는 저장된 컨텐츠 데이터를 위한 로컬 캐시를 체크하는 것과 저장된 컨텐츠 데이터가 컨텐츠 액세스 애플리케이션에 의해 요청되는 특정 부분들에 해당하는지 여부를 결정하는 것을 포함할 수 있다.
블록(510)에서, 컨텐츠 데이터의 제1 세트의 적어도 일부는 로컬 캐시로부터 컨텐츠 액세스 애플리케이션에 제공될 수 있다. 더 상세히 본 명세서에서 상술하는 것처럼, 로컬 캐시는 컨텐츠 아이템에 대한 요청을 블록(502)에서 수신하고 컨텐츠 아이템을 요청하는 클라이언트 액세스 애플리케이션을 동작하는 클라이언트 장치와 동일한 클라이언트 장치에 위치할 수 있다. 추가로, 컨텐츠 데이터는 로컬 캐시로부터 컨텐츠 데이터 스트림으로 컨텐츠 액세스 애플리케이션에 제공될 수 있다.
블록(512)에서, 컨텐츠 데이터의 제2 세트가 식별될 수 있고, 여기서 컨텐츠 데이터의 제2 세트는 로컬 캐시로부터 누락된 컨텐츠 아이템의 하나 이상의 식별된 부분들에 해당한다. 컨텐츠 아이템 전부가 이미 수신되고 로컬 캐시에 저장된 경우(예컨대, 이전의 컨텐츠 스트리밍 세션 동안), 컨텐츠 데이터의 제2 세트는 비어있을 수 있거나, 컨텐츠 데이터의 제2 세트는 생성되지 않을 수 있거나, 하나 이상의 블록(512 내지 520)이 스킵될 수 있다. 더 상세히 본 명세서에 기술되는 것처럼, 로컬 캐시는 블록(502)에서 컨텐츠 아이템에 대한 요청을 수신하고 컨텐츠 아이템을 요청하는 클라이언트 액세스 애플리케이션을 동작하는 클라이언트 장치와 동일한 클라이언트 장치에 위치할 수 있다. 추가로, 컨텐츠 데이터의 제2 세트를 식별하는 것은 요청되는 컨텐츠 아이템에 해당하는 저장된 컨텐츠 데이터를 위해 로컬 캐시를 확인하는 것, 및 저장된 컨텐츠 데이터가 컨텐츠 액세스 애플리케이션에 의해 요청되는 특정 부분들에 해당하는지 여부를 결정하는 것을 포함할 수 있다. 또한, 컨텐츠 데이터의 제2 세트를 식별하는 것은 로컬 캐시에 컨텐츠 데이터가 저장한 것과 컨텐츠 아이템이 컨텐츠 액세스 애플리케이션에 의해 요청되는 컨텐츠 서버로부터 이용가능한 컨텐츠 데이터를 비교하는 것을 포함할 수 있다.
블록(514)에서, 컨텐츠 데이터의 제2 세트의 적어도 일부가 컨텐츠 서버로부터 요청될 수 있고, 블록(516)에서 컨텐츠 서버로부터의 컨텐츠 데이터가 컨텐츠 서버로부터 수신된다. 일부 실시예에 따르면, 프로세스(500)는 컨텐츠 데이터의 제2 세트에 대한 컨텐츠 서버로의 요청을 생성하기 위해 블록(504)에 의해 제공되는 요청 분석을 이용한다. 분석에 기반하여, 프로세스(500)는 블록(502)에서 컨텐츠 액세스 애플리케이션으로부터 수신된 요청과 (예컨대, 포맷 또는 프로토콜에 있어서) 유사한 컨텐츠 서버로의 요청을 생성할 수 있다. 컨텐츠 서버로부터의 컨텐츠 데이터는 데이터 스트림으로서 블록(516)에서 수신될 수 있고, 데이터 스트림은, (예컨대, 만약 중간 컨텐츠 스트리밍 시스템(106)이 컨텐츠 데이터 스트림에 연루되지 않은 경우와 같이) 컨텐츠 서버가 컨텐츠 데이터를 컨텐츠 액세스 애플리케이션에 직접 제공한다면, 컨텐츠 서버에 의해 컨텐츠 액세스 애플리케이션으로 제공된 데이터 스트림과 유사할 수 있다.
블록(518)에서, (예컨대, 블록(514)의 요청에 응답하여) 컨텐츠 서버로부터 수신된 컨텐츠 데이터의 제2 세트는 로컬 캐시에 저장될 수 있다. 더 상세히 본 명세서에 기술되는 것처럼, 로컬 캐시는 블록(502)에서 컨텐츠 아이템에 대한 요청을 수신하고 컨텐츠 아이템을 요청하는 컨텐츠 액세스 애플리케이션을 동작하는 클라이언트 장치와 동일한 클라이언트 장치에 위치할 수 있다.
블록(520)에서, 컨텐츠 데이터의 적어도 일부가 로컬 캐시로부터 컨텐츠 액세스 애플리케이션에 제공될 수 있다. 블록(510)과 유사하게, 컨텐츠 데이터는 로컬 캐시로부터 컨텐츠 데이터 스트림으로 컨텐츠 액세스 애플리케이션에 제공될 수 있다. 일부 실시예를 위해, 블록(510), 블록(520), 또는 둘 다에 의해 컨텐츠 액세스 애플리케이션으로 제공되는 데이터 스트림은 블록(516)에서 컨텐츠 서버로부터 컨텐츠 데이터를 수신하는데 사용되는 데이터 스트림과 유사할 수 있다.
실시예에 따라, 도 5에 도시된 동작들은 도시된 대안적 순서로 수행될 수 있고, 하나 이상의 동작은 직렬로(in series) 또는 실질적으로 병렬로 수행될 수 있다. 예컨대, 컨텐츠 데이터의 제1 세트를 수반하는 블록(508)의 동작들은, 컨텐츠 데이터의 제2 세트를 수반하는 하나 이상의 블록들(512, 514, 516, 518)의 동작들과 병렬로 또는 실질적으로 병렬로 수행될 수 있다. 다른 예로, 블록(518)의 동작들 및 블록(520)의 동작들은 병렬로 또는 실질적으로 병렬로 수행될 수 있다. 또 다른 예로, 블록(520)의 동작들은 블록(518)의 동작들 이전에 수행될 수 있다. 일부 실시예를 위해, 중간 컨텐츠 스트리밍을 위한 프로세스는 도시된 동작들을 거진 수행한다.
도 6은 본 발명의 실시예에 따른 우선순위-기반 컨텐츠 다운로딩을 위한 예시적인 프로세스(600)를 도시한다. 일부 실시예에 따르면, 프로세스(600)는 우선순위-기반 컨텐츠 다운로드 시스템(108)에 의해 수행되는 것일 수 있다. 블록(602)에서, 클라이언트 장치의 디스플레이상의 뉴스 피드(예컨대, 뉴스 피드(400))는 컨텐츠 아이템을 위해 모니터링될 수 있다. 더 상세히 본 명세서에 기술되는 것처럼, 모니터링되는 컨텐츠 아이템들은 뉴스 피드를 통해 현재 사용자에게 가시적인 것, 뉴스 피드를 통해 제시되도록 스케줄된 것, 또는 둘 다일 수 있다.
블록(604)에서, 뉴스 피드를 통해 사용자에게 제시되도록 스케줄된 제1 컨텐츠 아이템이 식별될 수 있다. 더 상세히 본 명세서에서 기술되는 것처럼, 뉴스 피드를 통해 제시되도록 스케줄된 컨텐츠 아이템은 뉴스 피드에 제시되도록 스케줄된 뉴스 게시물에 포함된 것일 수 있다. 추가로, 뉴스 피드에 제시되도록 스케줄된 뉴스 게시물은, 뉴스 피드에 아직 추가돼야 하는 것, 뉴스 피드로부터의 이전의 제거 후에 뉴스 피드로 다시 추가되어야 하는 것, 뉴스 피드에 이미 추가되었으나 사용자에 의해 뉴스 피드를 통해 아직 보여져야 하는 것, 또는 사용자에 의해 뉴스 피드를 통해 적어도 한 번 이미 보였으나, 현재 사용자의 시야에 있지 않은 것일 수 있다.
블록(606)에서, 제1 컨텐츠 아이템에 대한 제1 우선순위가 결정될 수 있다. 더 상세히 본 명세서에서 기술되는 것처럼, 컨텐츠 아이템에 대한 우선순위를 결정하는 것은: 컨텐츠 아이템이 사용자에게 가시적일 때, 자동-재생되는지 여부; 컨텐츠 아이템이 광고와 관련되는지 여부; 사용자의 선호도; 클라이언트 장치의 자원의 이용가능성(예컨대, 메모리, 프로세서 속도, 네트워크 대역폭 등); 컨텐츠 아이템의 컨텐츠 타입(예컨대, 스트리밍 비디오, 오디오, 또는 프레젠테이션); 제1 컨텐츠 아이템의 메타데이터(예컨대, 저자, 발행자, 주제, 제목 등); 컨텐츠 아이템과 관련된 소셜 네트워킹 정보를 제한 없이 포함하는 임의의 수의 요인들에 기반할 수 있다. 일부 실시예를 위해, 소셜 네트워킹 정보는, 소셜 네트워크 상의 소셜 네트워크 사용자들에 의한 컨텐츠 아이템의 좋아요의 수, 소셜 네트워크 상의 소셜 네트워크 사용자들에 의한 컨텐츠 아이템의 공유의 수, 또는 소셜 네트워크 상의 소셜 네트워크 사용자들에 의한 컨텐츠 아이템과 관련된 코멘트의 수를 포함한다. 소셜 네트워킹 정보는 소셜 네트워크상에서 제1 컨텐츠 아이템을 좋아요한 한 명 이상의 소셜 네트워크 사용자를 식별하거나, 소셜 네트워크상에서 제1 컨텐츠 아이템을 공유한 한 명 이상의 소셜 네트워크 사용자를 식별하거나, 또는 소셜 네트워크상에서 제1 컨텐츠 아이템에 대해 코멘트한 한 명 이상의 소셜 네트워크 사용자를 식별할 수 있다. 컨텐츠 아이템의 우선순위를 결정하기 위해 사용된 소셜 정보는 그것의 다양한 기능을 지원하기 위해 소셜 네트워킹 시스템에 의해 관리되는 소셜 그래프에 의해 제공될 수 있다.
블록(608)에서, 사용자에게 뉴스 피드를 통해 제시되도록 스케줄된 제2 컨텐츠 아이템이 식별될 수 있고, 블록(610)에서, 제2 컨텐츠 아이템에 대한 제2 우선순위가 결정될 수 있다. 제2 컨텐츠 아이템에 대한 제2 우선순위는 블록(606)에서 제1 컨텐츠 아이템에 대한 제1 우선순위가 결정되는 것과 유사한 방식으로 결정될 수 있다.
블록(612)에서, 제1 컨텐츠 아이템의 적어도 일부는, 제2 우선순위를 고려한 제1 우선순위에 기반하여, 제2 컨텐츠 아이템이 클라이언트 장치로 사전-다운로드되기 전에 클라이언트 장치로 사전-다운로드될 수 있다. 이는, 예컨대, 제1 우선순위 및 제2 우선순위가 비교되고 제1 우선순위가 제2 우선순위보다 높은 것으로 결정되는 경우에 발생할 수 있다. 컨텐츠 아이템을 클라이언트 장치로 사전-다운로드할 때, 사전-다운로드된 컨텐츠 아이템의 부분들은 클라이언트 장치에 위치한 로컬 캐시에 저장될 수 있다. 이용되는 로컬 캐시는 본 명세서에 기술되는 중간 컨텐츠 스트리밍 시스템과 공유되는 것일 수 있다. 일부 실시예에서, 컨텐츠 아이템의 사전-다운로드는 프로세스(600)를 위해 본 명세서에 기술되는 중간 컨텐츠 스트리밍 시스템이 컨텐츠를 사전-다운로드하도록 명령함으로써 용이하게 될 수 있다.
블록(614)에서, 제2 컨텐츠 아이템의 적어도 일부는, 제1 우선순위를 고려한 제2 우선순위에 기반하여, 제1 컨텐츠 아이템의 적어도 일부가 클라이언트 장치로 사전-다운로드된 후에 클라이언트 장치로 사전-다운로드될 수 있다. 일부 실시예에 따르면, 제2 컨텐츠 아이템은, 제1 컨텐츠 아이템이 클라이언트 장치로의 사전-다운로드를 시작한 후이지만, 제1 컨텐츠 아이템의 사전-다운로드가 완료되기 전에 클라이언트 장치로의 사전-다운로드를 시작할 수 있다. 이러한 방식으로, 제1 및 제2 컨텐츠 아이템은 가능할 때 클라이언트 장치로 실질적으로 병렬로 사전-다운로드될 수 있다.
블록(616)에서, 제1 컨텐츠 아이템은 뉴스 피드를 통해 사용자에게 제시될 수 있다. 추가로, 블록(618)에서, 제2 컨텐츠 아이템은 뉴스 피드를 통해 사용자에게 제시될 수 있다. 뉴스 피드를 통해 컨텐츠 아이템을 제시함으로써, 컨텐츠 아이템은 뉴스 피드를 통해 사용자에게 액세스가능하게 될 수 있다. 일부 실시예에서, 일단 컨텐츠 아이템이 클라이언트 장치로 사전-다운로드되고 뉴스 피드를 통해 제시되면, 컨텐츠 아이템은 사용자의 시야에서(예컨대, 클라이언트 장치 디스플레이(404)에서 사용자에 의해 선택될 때(예컨대, 사용자는 컨텐츠 아이템을 재생하는 것을 선택함), 액세스된다. 일부 실시예에서, 일단 컨텐츠 아이템이 클라이언트 장치로 사전-다운로드되고 뉴스 피드를 통해 제시되면, 컨텐츠 아이템은, 컨텐츠 아이템이 사용자의 시야(예컨대, 클라이언트 장치 디스플레이(404))로 들어올 때, 자동-액세스(예컨대, 자동-재생)된다.
실시예에 따라, 도 6에 도시된 동작들은 도시되는 것에 대안적인 순서로 수행될 수 있고, 하나 이상의 동작들은 직렬로 또는 실질적으로 병렬로 수행될 수 있다. 추가로, 일부 실시예들에 대해, 우선순위-기반 컨텐츠 다운로드를 위한 프로세스는 도시되는 것들 대부분을 수행한다.
도 7은 본 발명의 실시예에 따른 소셜 네트워킹 환경(700)에서 중간 컨텐츠를 스트리밍하고 우선순위-기반의 컨텐츠를 다운로드하기 위한 시스템의 네트워크 다이어그램의 예를 도시한다. 소셜 네트워킹 환경(700)은 하나 이상의 사용자 장치(710), 하나 이상의 외부 시스템(722), 소셜 네트워킹 시스템(730), 및 네트워크(750)를 포함한다. 예시적인 목적을 위해, 도 7에 도시된 소셜 네트워킹 환경(700)의 실시예는 단일 외부 시스템(722) 및 단일 사용자 장치(710)를 포함한다. 하지만, 다른 실시예로, 소셜 네트워킹 환경(700)은 더 많은 사용자 장치(710) 및 더 많은 외부 시스템(722)을 포함할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(730)은 소셜 네트워크 제공자에 의해 운영되는 한편, 외부 시스템(722)은, 상이한 엔티티들에 의해 운영될 수 있는 점에서 소셜 네트워킹 시스템(730)으로부터 분리되어 있다. 하지만, 다양한 실시예로, 소셜 네트워킹 시스템(730) 및 외부 시스템(722)은 소셜 네트워킹 시스템(730)의 사용자들 (또는 구성원들)에게 소셜 네트워킹 서비스를 제공하기 위해 함께 동작한다. 이러한 측면에서, 소셜 네트워킹 시스템(730)은, 외부 시스템(722)과 같은 다른 시스템들이 인터넷을 통해 사용자에게 소셜 네트워킹 서비스 및 기능을 제공하는데 사용할 수 있는 플랫폼 또는 백본을 제공한다.
사용자 장치(710)는 사용자로부터 입력을 수신하고 네트워크(750)를 통해 데이터를 송수신할 수 있는 하나 이상의 컴퓨팅 장치를 포함한다. 일실시예로, 사용자 장치(710)는 예컨대, Microsoft Windows 호환가능한 운영 시스템(OS), Apple OS X, 및/또는 리눅스 배포판을 실행하는 종래의 컴퓨터 시스템이다. 다른 실시예로, 사용자 장치(710)는 가령 스마트폰, 태블릿, PDA(personal digital assistant), 모바일 전화 등과 같은 컴퓨터 기능을 갖는 장치일 수 있다. 사용자 장치(710)는 네트워크(750)를 통해 통신하도록 구성된다. 사용자 장치(710)는 예컨대, 사용자 장치(710)의 사용자가 소셜 네트워킹 시스템(730)과 상호작용할 수 있게 하는 브라우저 애플리케이션과 같은 애플리케이션을 실행할 수 있다. 또 다른 실시예로, 사용자 장치(710)는 iOS 및 ANDROID와 같은 사용자 장치(710)의 네이티브 운영 시스템에 의해 제공되는 API(application programming interface)를 통해 소셜 네트워킹 시스템(730)과 상호작용한다. 사용자 장치(710)는, 유선 및/또는 무선 통신 시스템을 사용하는 로컬 영역 및 광역 네트워크의 임의의 조합을 포함할 수 있는 네트워크(750)를 통해 외부 시스템(722) 및 소셜 네트워킹 시스템(730)과 통신하도록 구성된다.
일실시예로, 네트워크(750)는 표준 통신 기술 및 프로토콜을 사용한다. 따라서, 네트워크(750)는 Ethernet, 702.11, WiMAX(worldwide interoperability for microwave access), 3G, 4G, CDMA, GSM, LTE, DSL(digital subscriber line) 등과 같은 기술을 사용하는 링크를 포함할 수 있다. 유사하게, 네트워크(750)에서 사용되는 네트워킹 프로토콜은 MPLS(multiprotocol label switching), TCP/IP(transmission control protocol/Internet protocol), UDP(User Datagram Protocol), HTTP(hypertext transport protocol), SMTP(simple mail transfer protocol), FTP(file transfer protocol) 등을 포함할 수 있다. 네트워크(750) 상에서 교환되는 데이터는 HTML(hypertext markup language) 및 XML(extensible markup language)을 포함하는 기술 및/또는 포맷을 사용하여 표현될 수 있다. 추가로, 모든 또는 일부 링크는 SSL(secure sockets layer), TLS(transport layer security), 및 IPsec(Internet Protocol security)와 같은 종래의 암호화 기술을 사용하여 암호화될 수 있다.
일실시예로, 사용자 장치(710)는 브라우저 애플리케이션(712)을 사용하여, 외부 시스템(722) 및 소셜 네트워킹 시스템(730)으로부터 수신된 마크업 언어 문서(714)를 프로세싱함으로써 외부 시스템(722) 및/또는 소셜 네트워킹 시스템(730)으로부터의 컨텐츠를 디스플레이할 수 있다. 마크업 언어 문서(714)는 컨텐츠 및 컨텐츠의 포맷 또는 프레젠테이션을 기술하는 하나 이상의 명령어들을 식별한다. 마크업 언어 문서(714)에 포함된 명령어들을 실행함으로써, 브라우저 애플리케이션(712)은 마크업 언어 문서(714)에 의해 기술된 포맷 또는 프레젠테이션을 사용하여 식별된 컨텐츠를 디스플레이한다. 예컨대, 마크업 언어 문서(714)는, 외부 시스템(722) 및 소셜 네트워킹 시스템(730)으로부터 검색된 텍스트 및/또는 이미지 데이터를 포함하는 다수의 프레임들을 갖는 웹 페이지를 생성하고 디스플레이하기 위한 명령어들을 포함한다. 다양한 실시예로, 마크업 언어 문서(714)는 XML(extensible markup language) 데이터, XHTML(extensible hypertext markup language) 데이터, 또는 다른 마크업 언어 데이터를 포함하는 데이터 파일을 포함한다. 추가로, 마크업 언어 문서(714)는 JSON(JavaScript Object Notation) 데이터, 패딩(padding)을 갖는 JSON(JSONP), 및 외부 시스템(722)과 사용자 장치(710) 사이의 데이터 상호교환을 용이하게 하는 자바스크립트 데이터를 포함할 수 있다. 사용자 장치(710)상의 브라우저 애플리케이션(712)은 마크업 언어 문서(714)를 디코딩하기 위해 자바스크립트 컴파일러를 사용할 수 있다.
마크업 언어 문서(714)는 또한, FLASH™ 또는 Unity™ 애플리케이션들, SilverLight™ 애플리케이션 프레임워크(framework) 등과 같은 애플리케이션 또는 애플리케이션 프레임워크를 포함하거나 링크할 수 있다.
일실시예로, 사용자 장치(710)는 또한, 사용자 장치(710)의 사용자가 소셜 네트워킹 시스템(730)으로 로그되는지 여부를 표시하는 데이터를 포함하는 하나 이상의 쿠키(716)를 포함하고, 이는 소셜 네트워킹 시스템(730)으로부터 사용자 장치(710)로 통신되는 데이터의 수정을 가능하게 할 수 있다.
외부 시스템(722)은, 네트워크(750)를 사용하여 사용자 장치(710)로 통신되는 하나 이상의 웹 페이지들(724a, 724b)을 포함하는 하나 이상의 웹 서버들을 포함한다. 외부 시스템(722)은 소셜 네트워킹 시스템(730)으로부터 분리된다. 예컨대, 외부 시스템(722)은 제1 도메인과 연관되는 한편, 소셜 네트워킹 시스템(730)은 분리된 소셜 네트워킹 도메인과 연관된다. 외부 시스템(722)에 포함된 웹 페이지들(724a, 724b)은 컨텐츠를 식별하고 식별된 컨텐츠의 포맷 또는 프레젠테이션을 특정하는 명령어들을 포함하는 마크업 언어 문서(714)를 포함한다.
일실시예로, 사용자 장치(710)는, 컨텐츠 아이템을 위한 컨텐츠 데이터가 네트워크(750) 상에서 컨텐츠 서버, 가령 외부 시스템(722)으로부터 사용자 장치(710)로 스트리밍됨에 따라, 컨텐츠 아이템을 사용자 장치(710)에서 로컬로 캐시하도록 구성된 중간 컨텐츠 스트리밍 시스템(718)을 포함한다. 사용자 장치(710)에서의 중간 컨텐츠 스트리밍 시스템(718)을 통해, 소셜 네트워킹 시스템(730)에 의해 제공되는 웹 페이지들을 액세스할 수 있는 사용자 장치(710)에서의 브라우저 애플리케이션(712)은 웹 페이지들에 포함되지만, 외부 시스템(722)에 의해 제공되는 컨텐츠 아이템(예컨대, 오디오)의 일부 또는 전부를 요청할 수 있다. 외부 시스템(722)으로부터 중간 컨텐츠 스트리밍 시스템(718)에 의해 (예컨대, 데이터 스트림으로) 일단 수신되면, 컨텐츠 데이터는, 데이터 스트림으로 중간 컨텐츠 스트리밍 시스템(718)에 의해 브라우저 애플리케이션(712)(예컨대, 브라우저 애플리케이션(712)에서의 컨텐츠 액세스 플러그인)으로 제공될 수 있다. 추가로, 외부 시스템(772)으로부터 중간 컨텐츠 스트리밍 시스템(718)에 의해 수신된 컨텐츠 데이터는 사용자 장치(710)에서 로컬로 캐시될 수 있다. 사용자 장치(710)에서의 로컬 캐시는 사용자 장치(710)에 의한 동일한 컨텐츠 아이템에 대한 미래의 요청을 위해서 유지될 수 있다. 동일한 컨텐츠 아이템에 대한 후속의 요청을 위해, 중간 컨텐츠 스트리밍 시스템(718)은 사용자 장치(710)에서의 로컬 캐시로부터 외부 시스템(722)으로부터 이전에 수신된 컨텐츠 아이템의 이러한 부분들을 제공할 수 있고, 외부 시스템(722)으로부터 사용자 장치(710)에서 로컬로 캐시되지 않은 부분들을 획득할 수 있고, 그렇게 획득된 부분들을 그에 따라 제공할 수 있다.
일실시예로, 사용자 장치(710)는, 소셜 네트워킹 시스템(730)에 의해 제공되고 브라우저 애플리케이션(712)을 통해 액세스가능한 소셜 네트워킹 뉴스 피드를 통해서와 같이, 사용자 장치(710)에서의 사용자에게 컨텐츠 아이템으로의 액세스가 제공되기 전에 사용자 장치(710)로의 컨텐츠 아이템의 우선순위-기반의 사전-다운로딩을 용이하게 하도록 구성된 우선순위-기반 컨텐츠 다운로드 시스템(720)을 포함한다. 예컨대, 사용자가 브라우저 애플리케이션(712)을 통해 이러한 뉴스 피드를 열람함에 따라, 뉴스 피드의 하나 이상의 뉴스 게시물에 포함된 컨텐츠 아이템들은, 이러한 뉴스 게시물이 뉴스 피드를 통해 (예컨대, 뉴스 피드의) 사용자에게 액세스가능하게 만들어지기 전에, 사용자 장치(710)로 전체가 또는 부분적으로 사전-다운로드될 수 있다.
소셜 네트워킹 시스템(730)은 복수의 사용자들을 포함하는 소셜 네트워크를 위해 소셜 네트워크의 사용자들에게 소셜 네트워크의 다른 사용자들과 통신하고 상호작용하는 능력을 제공하는 하나 이상의 컴퓨팅 장치를 포함한다. 본 명세서에 더 상세히 기술되는 것처럼, 소셜 네트워크는 그래프 즉, 에지 및 노드를 포함하는 데이터 구조로 표현될 수 있다. 데이터 베이스, 객체, 클래스, 메타 구성요소, 파일, 또는 임의의 다른 데이터 구조를 포함하지만 이에 제한되지 않는 다른 데이터 구조가 또한, 소셜 네트워크를 표현하는데 사용될 수 있다.
사용자들은 소셜 네트워킹 시스템(730)에 가입할 수 있고, 이후 그들이 연결되고자 하는 소셜 네트워킹 시스템(730)의 임의의 수의 다른 사용자들에 대한 연결을 추가할 수 있다. 본 명세서에서 사용되는 용어 "친구"는, 사용자가 소셜 네트워킹 시스템(730)을 통해 연결, 연관, 또는 관계를 형성한 소셜 네트워킹 시스템(730)의 임의의 다른 사용자를 의미한다. 예컨대, 일실시예로, 소셜 네트워킹 시스템(730)에서의 사용자들이 소셜 그래프에서 노드로 표현된다면, 용어 "친구"는 2개의 사용자 노드를 직접 연결하고 그 사이에 형성되는 에지를 의미할 수 있다.
연결은 사용자에 의해 명시적으로 추가되거나 사용자의 공통의 특징(예컨대, 동일한 교육 기관의 졸업생들인 사용자들)에 기반하여 소셜 네트워킹 시스템(730)에 의해 자동으로 생성될 수 있다. 예컨대, 제1 사용자는 구체적으로 특정의 다른 사용자를 친구로 선택한다. 소셜 네트워킹 시스템(730)에서의 연결은 보통 양방향이지만, 그럴 필요는 없고, 따라서 용어들 "사용자" 및 "친구"는 준거 기준(frame of reference)에 따른다. 소셜 네트워킹 시스템(730)의 사용자들 사이의 연결은 보통 양방향("쌍방향"), 또는 "상호적"이지만, 연결들은 또한, 일방적, 또는 "일방향"일 수 있다. 예컨대, Bob과 Joe가 모두 소셜 네트워킹 시스템(730)의 사용자들이고 서로에게 연결되어있다면, Boe과 Joe는 서로의 연결들이다. 반면에, Bob이 소셜 네트워킹 시스템(730)으로 Joe에 의해 통신되는 데이터를 열람하기 위해 Joe에게 연결하기를 희망하지만, Joe가 상호 연결을 형성하기를 희망하지 않는다면, 일방향 연결이 확립될 수 있다. 사용자들 사이의 연결은 직접적인 연결일 수 있지만, 소셜 네트워킹 시스템(730)의 일부 실시예들은 하나 이상의 연결 레벨 또는 이격도를 통한 간접적인 연결을 허용한다.
사용자들 사이의 연결을 확립 및 관리하고 사용자들 사이의 상호작용을 허용하는 것에 추가로, 소셜 네트워킹 시스템(730)은 사용자들에게 소셜 네트워킹 시스템(730)에 의해 지원되는 다양한 타입의 아이템들에 대해 행위를 수행할 능력을 제공한다. 이러한 아이템들을, 소셜 네트워킹 시스템(730)의 사용자들이 속할 수 있는 그룹들 또는 네트워크들(즉, 사람들, 엔티티들, 및 컨셉들의 소셜 네트워크), 사용자가 관심있을 수 있는 이벤트 또는 캘린더 엔트리들, 사용자가 소셜 네트워킹 시스템(730)을 통해 사용할 수 있는 컴퓨터-기반의 애플리케이션들, 사용자가 소셜 네트워킹 시스템(730)에 의해 제공되거나 소셜 네트워킹 시스템(730)을 통한 서비스를 통해 아이템들을 사거나 팔 수 있도록 하는 거래들, 사용자가 소셜 네트워킹 시스템(730) 내에서 혹은 밖에서 수행할 수 있는 광고와의 상호작용들을 포함할 수 있다. 이들은 사용자가 소셜 네트워킹 시스템(730)에 대해 행동할 수 있는 아이템들의 몇몇 예시에 불과하며, 많은 다른 예들이 가능하다. 사용자는 소셜 네트워킹 시스템(730)에서 또는 소셜 네트워킹 시스템(730)과 분리되거나 네트워크(750)를 통해 소셜 네트워킹 시스템(730)으로 연결된 외부 시스템(722)에서, 표현될 수 있는 어떤 것과도 상호작용할 수 있다.
소셜 네트워킹 시스템(730)은 또한, 다양한 엔티티들을 링크할 수 있다. 예컨대, 소셜 네트워킹 시스템(730)은 사용자가 API, 웹 서비스, 또는 다른 통신 채널을 통해 외부 시스템(722) 또는 다른 엔티티들과 상호작용하는 것뿐만 아니라 사용자들 서로와 상호작용할 수 있게 한다. 본 명세서에서 논의되는 것처럼, 소셜 네트워킹 시스템(730)은 복수의 에지에 의해 상호연결된 복수의 노드를 포함하는 "소셜 그래프"를 생성하고 관리할 수 있고, 소셜 그래프에서의 각각의 노드는 다른 노드에 대해 행동할 수 있거나 및/또는 다른 노드가 행동할 수 있는 엔티티를 표현할 수 있다. 소셜 그래프는, 예컨대 사용자들, 비-인간 엔티티들, 컨텐츠 아이템, 웹 페이지, 그룹, 활동, 메시지, 컨셉, 및 소셜 네트워킹 시스템(730)에서 객체에 의해 표현될 수 있는 임의의 다른 것들을 포함하는 다양한 타입의 노드들을 포함할 수 있다. 본 명세서에서 더욱 상세히 기술되는 것처럼, 소셜 그래프에서의 2개의 노드 사이의 에지는 2개의 노드 사이의 특정 유형의 연결 또는 연관을 표현할 수 있고, 에지는 노드 연결로부터 또는 노드들 중 하나가 다른 노드에 대해 수행하는 행위로부터 발생할 수 있다. 추가로 논의되는 것처럼, 노드 사이의 에지에는 가중치가 부과될 수 있고, 에지의 가중치는 노드 사이의 연결 또는 연관의 강도와 같은 에지와 연관된 속성을 표현할 수 있다. 상이한 타입의 에지에는 상이한 가중치가 제공될 수 있다.
소셜 네트워킹 시스템(730)은 또한, 소셜 네트워킹 시스템(730)과의 사용자 상호작용을 향상시키는 사용자-생성된 컨텐츠를 포함한다. 사용자-생성된 컨텐츠는, 사용자가 소셜 네트워킹 시스템(730)에 추가, 업로드, 전송 또는 "게시"할 수 있는 모든 것을 포함할 수 있다. 예컨대, 사용자는 사용자 장치(710)로부터 소셜 네트워킹 시스템(730)에 게시물을 통신한다. 게시물은 상태 업데이트 또는 다른 텍스트 데이터, 위치 정보, 사진과 같은 이미지, 비디오, 링크, 음악, 또는 다른 유사한 데이터 및/또는 미디어와 같은 데이터를 포함할 수 있다. 컨텐츠는 또한, 제3자에 의해 소셜 네트워킹 시스템(730)에 추가될 수 있다. 컨텐츠 "아이템"들은 소셜 네트워킹 시스템(730)에서 객체로 표현될 수 있다. 이러한 방식으로, 소셜 네트워킹 시스템(730)의 사용자들은, 다양한 통신 채널을 통해 미디어의 다양한 타입의 텍스트 및 컨텐츠 아이템을 게시함으로써 서로와 통신하도록 장려된다. 이러한 통신은 사용자들 서로간의 상호작용을 증가시키고 사용자가 소셜 네트워킹 시스템(730)과 상호작용하는 빈도를 증가시킨다.
소셜 네트워킹 시스템(730)은 웹 서버(732), API 요청 서버(734), 사용자 프로필 스토어(736), 연결 스토어(738), 행위 로거(740), 활동 로그(742), 및 인증 서버(744)를 포함한다. 본 발명의 일실시예로, 소셜 네트워킹 시스템(730)은 다양한 애플리케이션을 위해 추가의, 더 적은 수의, 혹은 상이한 컴포넌트들을 포함할 수 있다. 네트워크 인터페이스, 보안 메커니즘, 부하 균형기(load balancer), 장애복구 서버(failover server), 관리 및 네트워크 운영 콘솔 등과 같은 다른 컴포넌트들은 시스템의 세부사항을 불명확하게 만들지 않기 위해 도시되지 않는다.
사용자 프로필 스토어(736)는, 사용자에 의해 선언되었거나 소셜 네트워킹 시스템(730)에 의해 추론된 경력, 학력, 취미 또는 선호도, 위치 등과 같은 인명적, 인구학적, 및 다른 타입의 기술적 정보를 포함하는 사용자 계정에 관한 정보를 관리한다. 이 정보는 사용자 프로필 스토어(736)에 저장되어서, 각각의 사용자가 고유하게 식별되도록 한다. 소셜 네트워킹 시스템(730)은 또한, 연결 스토어(738)에서의 상이한 사용자들 사이의 하나 이상의 연결을 기술하는 데이터를 저장한다. 연결 정보는 유사하거나 공통되는 경력, 그룹 멤버쉽, 취미, 또는 학력을 갖는 사용자들을 표시할 수 있다. 추가로, 소셜 네트워킹 시스템(730)은 상이한 사용자들 사이의 사용자-정의된 연결을 포함하여, 사용자들이 다른 사용자들과의 그들의 관계를 특정할 수 있도록 한다. 예컨대, 사용자-정의된 연결은 사용자가 사용자의 실제-삶에서의 관계들, 가령 친구들, 동료들, 파트너들 등에 필적하는 다른 사용자들과의 관계를 생성할 수 있도록 한다. 사용자들은 미리 정의된 타입의 연결로부터 선택하거나 필요에 따라 그들 스스로의 연결 타입을 정의할 수 있다. 소셜 네트워킹 시스템(730)에서의 다른 노드들과의 연결, 가령 비-인간 엔티티들, 버킷, 클러스터 센터, 이미지, 관심사, 페이지, 외부 시스템, 컨셉 등이 또한, 연결 스토어(738)에 저장된다.
소셜 네트워킹 시스템(730)은 사용자가 상호작용할 수 있는 객체들에 관한 데이터를 관리한다. 이 데이터를 관리하기 위해, 사용자 프로필 스토어(736) 및 연결 스토어(738)는 소셜 네트워킹 시스템(730)에 의해 관리되는 객체들의 대응하는 타입의 인스턴스들을 저장한다. 각각의 객체 타입은 객체의 타입에 적절한 정보는 저장하는데 적합한 정보 필드를 가진다. 예컨대, 사용자 프로필 스토어(736)는 사용자의 계정 및 사용자의 계정과 관련된 정보를 기술하기에 적절한 필드를 갖는 데이터 구조를 포함한다. 특정 타입의 새로운 객체가 생성될 때, 소셜 네트워킹 시스템(730)은 대응하는 타입의 새로운 데이터 구조를 초기화하고, 고유한 객체 식별자를 그것에 할당하며, 필요에 따라 객체에 데이터를 추가한다. 이는 예컨대, 사용자가 소셜 네트워킹 시스템(730)의 사용자가 되고, 소셜 네트워킹 시스템(730)이 사용자 프로필 스토어(736)에 사용자 프로필의 새로운 인스턴스를 생성하며, 고유한 식별자를 사용자 계정에 할당하고, 사용자에 의해 제공된 정보로 사용자 계정의 필드를 채우는 것을 시작할 때에 발생할 수 있다.
연결 스토어(738)는 사용자의 다른 사용자들에 대한 연결, 외부 시스템(722)으로의 연결 또는 다른 엔티티들로의 연결을 기술하는데 적절한 데이터 구조를 포함한다. 연결 스토어(738)는 또한, 연결 타입을 사용자의 연결과 연관시킬 수 있고, 연결 타입은 사용자에 관한 정보에 대한 액세스를 규제하기 위해 사용자의 개인정보 설정과 함께 사용될 수 있다. 본 발명의 일실시예로, 사용자 프로필 스토어(736) 및 연결 스토어(738)는 연합된 데이터베이스로 구현될 수 있다.
연결 스토어(738), 사용자 프로필 스토어(736), 및 활동 로그(742)에 저장된 데이터는 소셜 네트워킹 시스템(730)이 상이한 객체들 사이의 관계를 식별하기 위해 다양한 객체 및 노드를 연결하는 에지를 식별하도록 노드를 사용하는 소셜 그래프를 생성할 수 있도록 한다. 예컨대, 제1 사용자가 소셜 네트워킹 시스템(730)에서 제2 사용자와의 연결을 확립한다면, 사용자 프로필 스토어(736)로부터의 제1 사용자 및 제2 사용자의 사용자 계정들은 소셜 그래프에서 노드로서 역할을 할 수 있다. 연결 스토어(738)에 의해 저장된 제1 사용자 및 제2 사용자 사이의 연결은 제1 사용자 및 제2 사용자와 연관된 노드들 사이의 에지이다. 이 예로 계속하면, 제2 사용자는 이후, 소셜 네트워킹 시스템(730) 내에서 제1 사용자에게 메시지를 전송할 수 있다. 저장될 수 있는 이 메시지를 전송하는 행위는, 제1 사용자 및 제2 사용자를 표현하는 소셜 그래프에서의 2개의 노드 사이의 또 다른 에지이다. 추가로, 메시지 자체는 식별될 수 있고, 제1 사용자 및 제2 사용자를 표현하는 노드들에 연결된 또 다른 노드로서 소셜 그래프에 포함될 수 있다.
다른 예로, 제1 사용자는 소셜 네트워킹 시스템(730)에 의해 관리되는 이미지에서 (또는 대안으로, 소셜 네트워킹 시스템(730) 외부의 다른 시스템에 의해 관리되는 이미지)에서 제2 사용자를 태그할 수 있다. 이미지는 그 자체가 소셜 네트워킹 시스템(730)에서 노드로 표현될 수 있다. 이러한 태깅 행위는 제1 사용자 및 제2 사용자 사이의 에지를 생성할 뿐만 아니라 소셜 그래프에서 또한, 노드가 되는 각각의 사용자들 및 이미지 사이의 에지를 생성할 수 있다. 또 다른 예로, 사용자가 이벤트에 참석하는 것을 확인한다면, 사용자 및 이벤트는 사용자 프로필 스토어(736)로부터 획득되는 노드들이며, 여기서 이벤트의 참석은 활동 로그(742)로부터 검색될 수 있는 노드 사이의 에지이다. 소셜 그래프를 생성하고 관리함으로써, 소셜 네트워킹 시스템(730)은 상이한 타입의 객체 및 상호작용과 그 객체들 사이의 연결을 기술하는 데이터를 포함하고, 소셜적으로 관련된(socially relevant) 정보의 풍부한 소스를 제공한다.
웹 서버(732)는 네트워크(750)를 통해 소셜 네트워킹 시스템(730)을 하나 이상의 사용자 장치(710) 및/또는 하나 이상의 외부 시스템(722)으로 링크한다. 웹 서버(732)는, 가령 Java, JavaScript, Flash, XML 등과 같은 다른 웹-연관 컨텐츠뿐만 아니라 웹 페이지들을 서빙한다. 웹 서버(732)는 메일 서버 또는 소셜 네트워킹 시스템(730)과 하나 이상의 사용자 장치(710) 사이의 메시지를 수신하고 라우팅하기 위한 다른 메시징 기능을 포함할 수 있다. 메시지는 인스턴트 메시지, 큐잉된 메시지(예컨대, 이메일), 텍스트 및 SMS 메시지, 또는 임의의 다른 적절한 메시지 포맷일 수 있다.
API 요청 서버(734)는, 하나 이상의 API 함수를 호출함으로써 하나 이상의 외부 시스템(722) 및 사용자 장치(710)가 소셜 네트워킹 시스템(730)으로부터 액세스 정보를 호출하도록 한다. API 요청 서버(734)는 또한, API들을 호출함으로써 외부 시스템(722)이 소셜 네트워킹 시스템(730)으로 정보를 전송하도록 할 수 있다. 일실시예로, 외부 시스템(722)은 네트워크(750)를 통해 소셜 네트워킹 시스템(730)으로 API 요청을 전송하고, API 요청 서버(734)는 API 요청을 수신한다. API 요청 서버(734)는, API 요청 서버(734)가 네트워크(750)를 통해 외부 시스템(722)으로 통신하는 적절한 응답을 생성하기 위해 API 요청과 연관된 API를 호출함으로써 그 요청을 프로세싱한다. 예컨대, API 요청에 응답하여, API 요청 서버(734)는 가령 외부 시스템(722)으로 로그된 사용자의 연결과 같은 사용자와 연관된 데이터를 수집하고, 수집된 데이터를 외부 시스템(722)으로 통신한다. 다른 실시예로, 사용자 장치(710)는 외부 시스템(722)과 동일한 방식으로 소셜 네트워킹 시스템(730)과 API들을 통해 통신한다.
행위 로거(740)는 소셜 네트워킹 시스템(730) 안에서의 및/또는 밖에서의 사용자 행위에 관한 통신을 웹 서버(732)로부터 수신할 수 있다. 행위 로거(740)는 사용자 행위에 관한 정보로 활동 로그(742)를 채워서 소셜 네트워킹 시스템(730)이 소셜 네트워킹 시스템(730) 내에서 및 소셜 네트워킹 시스템(730) 밖에서 그것의 사용자들에 의해 행해진 다양한 행위를 발견할 수 있도록 한다. 특정 사용자가 소셜 네트워킹 시스템(730) 상의 다른 노드에 관해 행한 임의의 행위는, 활동 로그(742) 또는 유사한 데이터베이스 또는 다른 데이터 저장소에 관리되는 정보를 통해 각각의 사용자의 계정과 연관될 수 있다. 식별되고 저장된 소셜 네트워킹 시스템(730) 내에서 사용자에 의해 행해진 행위의 예들은 예컨대, 다른 사용자로의 연결의 추가, 다른 사용자에게 메세지를 전송, 다른 사용자로부터의 메시지를 읽기, 다른 사용자와 연관된 컨텐츠를 열람, 다른 사용자에 의해 게시된 이벤트에 참석, 이미지를 게시, 이미지를 게시하는 것의 시도, 또는 다른 사용자 또는 다른 객체와 상호작용하는 다른 행위들을 포함할 수 있다. 사용자가 소셜 네트워킹 시스템(730) 내에서 행위를 행할 때, 행위는 활동 로그(742)에 기록된다. 일실시예로, 소셜 네트워킹 시스템(730)은 활동 로그(742)를 엔트리들의 데이터베이스로서 관리한다. 행위가 소셜 네트워킹 시스템(730) 내에서 행해질 때, 행위에 대한 엔트리는 활동 로그(742)에 추가된다. 활동 로그(742)는 행위 로그라고 언급될 수 있다.
추가로, 사용자 행위는 가령 소셜 네트워킹 시스템(730)으로부터 분리된 외부 시스템(722)과 같이 소셜 네트워킹 시스템(730)의 외부의 엔트리 내에서 발생하는 컨셉 및 행위와 연관될 수 있다. 예컨대, 행위 로거(740)는 웹 서버(732)로부터 외부 시스템(722)과의 사용자 상호작용을 기술하는 데이터를 수신할 수 있다. 이 예에서, 외부 시스템(722)은 소셜 그래프에서의 구조화된 행위 및 객체에 따라 사용자의 상호작용을 보고한다.
사용자가 외부 시스템(722)과 상호작용하는 행위들의 다른 예들은, 사용자가 외부 시스템(722) 또는 다른 엔티티에 대한 관심을 표현하는 것, 사용자가 외부 시스템(722) 또는 외부 시스템(722) 내의 웹 페이지(724a)를 논의하는 코멘트를 소셜 네트워킹 시스템(730)에 게시하는 것, 사용자가 외부 시스템(722)과 연관된 URL(Uniform Resource Locator) 또는 다른 식별자를 소셜 네트워킹 시스템(730)에 게시하는 것, 사용자가 외부 시스템(722)과 연관된 이벤트에 참석하는 것, 또는 외부 시스템(722)과 관련된 사용자에 의한 임의의 다른 행위를 포함한다. 따라서, 활동 로그(742)는 소셜 네트워킹 시스템(730)의 사용자 및 소셜 네트워킹 시스템(730)으로부터 분리된 외부 시스템(722) 사이의 상호작용을 기술하는 행위들을 포함할 수 있다.
인증 서버(744)는 소셜 네트워킹 시스템(730)의 사용자들의 하나 이상의 개인정보 설정을 강제한다. 사용자의 개인정보 설정은 어떻게 사용자와 연관된 특정 정보가 공유될 수 있는지를 결정한다. 개인정보 설정은 사용자와 연관된 특정 정보의 명세(specification) 및 정보가 공유될 수 있는 엔티티 또는 엔티티들의 명세를 포함한다. 정보가 공유될 수 있는 엔티티들의 예들은 다른 사용자들, 애플리케이션, 외부 시스템(722), 또는 정보에 잠재적으로 액세스할 수 있는 임의의 엔티티를 포함할 수 있다. 사용자에 의해 공유될 수 있는 정보는 가령, 프로필 사진, 사용자와 연관된 전화번호, 사용자의 연결, 연결을 추가하기, 사용자의 프로필 정보를 변경하기와 같은 사용자에 의해 행해진 행위 등과 같은 사용자 계정 정보를 포함한다.
개인정보 설정 명세가 상이한 레벨의 입상도(granularity)에서 제공될 수 있다. 예컨대, 개인정보 설정은 다른 사용자들과 공유될 특정 정보를 식별할 수 있고; 개인정보 설정은 직장 전화번호 또는 가령, 프로필 사진, 집 전화번호, 및 상태와 같은 관련된 정보의 특정 세트를 식별한다. 대안으로, 개인정보 설정은 사용자와 연관된 모든 정보에 적용될 수 있다. 특정 정보에 액세스할 수 있는 엔티티들의 세트의 명세는 또한, 다양한 레벨의 입상도에서 특정될 수 있다. 정보가 공유될 수 있는 다양한 세트의 엔티티들은 예컨대, 사용자의 모든 친구들, 친구들의 모든 친구들, 모든 애플리케이션, 또는 모든 외부 시스템(722)을 포함할 수 있다. 일실시예는 엔티티들의 세트의 명세가 엔티티들의 목록을 포함할 수 있도록 한다. 예컨대, 사용자는 특정 정보에 액세스하는 것이 허용되는 외부 시스템(722)의 리스트를 제공할 수 있다. 다른 실시예는 명세가, 정보에 액세스하는 것이 허용되지 않은 예외들을 함께 갖는 엔티티들의 세트를 포함하도록 한다. 예컨대, 사용자는 모든 외부 시스템(722)이 사용자의 작업 정보에 액세스할 수 있도록 하지만, 작업 정보에 액세스하는 것이 허용되지 않는 외부 시스템(722)의 리스트를 특정할 수 있다. 특정 실시예들은 특정 정보를 액세스하는 것이 허용되지 않는 예외들의 리스트를 "차단 리스트"라고 할 수 있다. 사용자에 의해 특정된 차단 리스트에 속하는 외부 시스템(722)은 개인정보 설정에 특정된 정보를 액세스하는 것으로부터 차단된다. 정보의 명세의 입상도 및 정보가 공유되는 엔티티들의 명세의 입상도의 다양한 조합이 가능하다. 예컨대, 모든 개인 정보는 친구들과 공유될 수 있는 한편, 모든 작업 정보는 친구의 친구들과 공유될 수 있다.
인증 서버(744)는 사용자와 연관된 특정 정보가 사용자의 친구들, 외부 시스템(722), 및/또는 다른 애플리케이션과 엔티티들에 의해 액세스될 수 있는지 여부를 결정하는 로직을 포함한다. 외부 시스템(722)은 가령 사용자의 직장 전화번호와 같은 사용자의 더 개인적이고 민감한 정보에 액세스하기 위해 인증 서버(744)로부터의 인증이 필요할 수 있다. 사용자의 개인정보 설정에 기반하여, 인증 서버(744)는, 다른 사용자, 외부 시스템(722), 애플리케이션, 또는 다른 엔티티가 사용자에 의해 행해진 행위에 관한 정보를 포함하는 사용자와 연관된 정보에 액세스하는 것이 허용되는지 여부를 결정한다.
전술한 프로세스, 시스템, 및 특징들은 광범위하게 다양한 네트워크 및 컴퓨팅 환경에서 광범위하게 다양한 기계 및 컴퓨터 시스템 구조에 의해 구현될 수 있다. 도 8은 상기에 식별된 하나 이상의 컴퓨팅 장치를 구현하도록 사용될 수 있는 컴퓨터 시스템(800)의 예를 도시한다. 컴퓨터 시스템(800)은 컴퓨터 시스템(800)이 본 명세서에 기술된 프로세스 및 특징들을 수행하도록 야기하는 명령어들의 세트들을 포함한다. 컴퓨터 시스템(800)은 다른 기계들에 연결(예컨대, 네트워크화)될 수 있다. 네트워크화된 배치에서, 컴퓨터 시스템(800)은 클라이언트-서버 네트워크 환경에서의 서버 기계 또는 클라이언트 기계의 용량으로 또는 피어-투-피어 (또는 분산형) 네트워크 환경에서의 피어 기계로서 동작할 수 있다. 본 발명의 일실시예로, 컴퓨터 시스템(800)은 클라이언트 장치(100), 소셜 네트워킹 시스템(730), 또는 이들의 컴포넌트 중 하나일 수 있다.
컴퓨터 시스템(800)은, 본 명세서에 기술된 프로세스 및 특징에 관련되고, 컴퓨터-판독가능한 매체에 저장된 프로세서(802), 캐시 메모리(804), 및 하나 이상의 실행가능한 모듈 및 드라이버를 포함한다. 추가로, 컴퓨터 시스템(800)은 고성능 입력/출력(I/O) 버스(806) 및 표준 I/O 버스(808)를 포함한다. 호스트 브리지(810)는 프로세서(802)를 고성능 I/O 버스(806)에 연결하는 한편, I/O 버스 브리지(812)는 2개의 버스들(806, 808)을 서로 연결한다. 시스템 메모리(814) 및 하나 이상의 네트워크 인터페이스(816)는 버스(806)에 연결된다. 컴퓨터 시스템(800)은 비디오 메모리 및 비디오 메모리에 연결된 디스플레이 장치(도시되지 않음)를 더 포함할 수 있다. 대용량 저장소(818) 및 I/O 포트(820)는 버스(808)에 연결된다. 컴퓨터 시스템(800)은 선택적으로 키보드, 포인팅 장치, 디스플레이 장치, 또는 버스(808)에 연결된 다른 입력/출력 장치들(도시되지 않음)을 포함할 수 있다. 전체적으로, 이러한 구성요소들은, 캘리포니아 산타 클라라의 인텔사에 의해 제조된 x86-호환 프로세서, 및 캘리포니아 서니데일의 AMD(Advanced Micro Devices), Inc.에 의해 제조된 x86-호환 프로세서뿐만 아니라 임의의 다른 적절한 프로세서에 기반하는 컴퓨터 시스템을 포함하지만 이에 제한되지 않는 컴퓨터 하드웨어 시스템의 넓은 카테고리를 표현하도록 의도되었다.
운영 시스템은, 소프트웨어 애플리케이션(도시되지 않음)으로 오가는 데이터의 입력 및 출력을 포함하는 컴퓨터 시스템(800)의 동작을 관리하고 제어한다. 운영 시스템은 시스템상에 실행되는 소프트웨어 애플리케이션과 시스템의 하드웨어 컴포넌트들 사이의 인터페이스를 제공한다. 가령 LINUX 운영 시스템, 캘리포니아 쿠퍼티노의 Apple Computer Inc.로부터 이용가능한 Apple Macintosh 운영 시스템, UNIX 운영 시스템, Microsoft® Windows® 운영 시스템, BSD 운영 시스템 등과 같은 임의의 적절한 운영 시스템이 이용될 수 있다. 다른 구현도 가능하다.
컴퓨터 시스템(800)의 구성요소들은 아래에서 더 상세하게 기술된다. 특히, 네트워크 인터페이스(816)는 컴퓨터 시스템(800) 및 가령 Ethernet(예컨대, IEEE 802.3) 네트워크, 백플레인(backplane) 등과 같은 임의의 광범위의 네트워크 사이의 통신을 제공한다. 대용량 저장소(818)는 앞서 식별된 각각의 컴퓨팅 시스템들에 의해 구현되는 상기 프로세스들 및 특징들을 수행하는 프로그래밍 명령어들 및 데이터를 위한 영구적인 저장소를 제공하는 한편, 시스템 메모리(814)(예컨대, DRAM)는 프로세서(802)에 의해 실행될 때 데이터 및 프로그래밍 명령어들을 위한 임시적인 저장소를 제공한다. I/O 포트(820)는, 컴퓨터 시스템(800)에 연결될 수 있는 추가 주변 장치들 사이의 통신을 제공하는 하나 이상의 직렬 및/또는 병렬 통신 포트일 수 있다.
컴퓨터 시스템(800)은 다양한 시스템 구조들을 포함할 수 있고, 컴퓨터 시스템(800)의 다양한 컴포넌트들은 재정렬될 수 있다. 예컨대, 캐시(804)는 프로세서(802)를 갖는 온-칩일 수 있다. 대안으로, 캐시(804) 및 프로세서(802)는 프로세서(802)가 "프로세서 코어"로 불리는 "프로세서 모듈"로 함께 패킹(pack)될 수 있다. 더욱이, 본 발명의 특정 실시예들은 상기의 컴포넌트들 전부를 요구하지도 않고 포함하지도 않을 수 있다. 예컨대, 표준 I/O 버스(808)에 연결된 주변 장치들은 고성능 I/O 버스(806)에 연결될 수 있다. 추가로, 일부 실시예로, 단일 버스만이 존재할 수 있고, 컴퓨터 시스템(800)의 컴포넌트들은 단일 버스에 연결될 수 있다. 더욱이, 컴퓨터 시스템(800)은 가령 추가적인 프로세서, 저장 장치, 또는 메모리와 같은 추가 컴포넌트들을 포함할 수 있다.
일반적으로, 본 명세서에 기술된 프로세스 및 특징들은 운영 시스템 또는 특정 애플리케이션, 컴포넌트, 프로그램, 객체, 모듈 또는 "프로그램"으로 불리는 일련의 명령어들의 일부로서 구현될 수 있다. 예컨대, 하나 이상의 프로그램들은 본 명세서에 기술된 특정 프로세스들을 실행하는데 사용될 수 있다. 프로그램들은 전형적으로 하나 이상의 프로세서에 의해 읽혀지고 실행될 때 컴퓨터 시스템(800)이 본 명세서에 기술된 프로세스 및 특징들을 실행하는 동작들을 수행하도록 야기하는 하나 이상의 명령어들을 컴퓨터 시스템(800)에서 다양한 메모리 및 저장 장치에서 포함할 수 있다. 본 명세서에 기술된 프로세스 및 특징들은 소프트웨어, 펌웨어, 하드웨어(예컨대, 애플리케이션 고유의 집적 회로(application specific integrated circuit; ASIC), 또는 이들의 임의의 조합에서 구현될 수 있다.
하나의 구현예로, 본 명세서에 기술된 프로세스 및 특징들은, 컴퓨터 시스템(800)에 의해 실행되는 일련의 실행가능한 모듈로서 분산형 컴퓨팅 환경에서 개별적으로 또는 집합적으로 구현될 수 있다. 전술한 모듈들은 하드웨어, 컴퓨터-판독가능한 매체 (또는 기계-판독가능한 매체), 또는 이들 모두의 조합에 의해 실현될 수 있다. 예컨대, 모듈은 가령, 프로세서(802)와 같은 하드웨어 시스템에서의 프로세서에 의해 실행되는 복수의 또는 일련의 명령어들을 포함할 수 있다. 초기에, 일련의 명령어들은 가령, 대용량 저장소(818)와 같은 저장 장치에 저장될 수 있다. 하지만, 일련의 명령어들은 임의의 적절한 컴퓨터-판독가능한 저장 매체에 저장될 수 있다. 더욱이, 일련의 명령어들은 로컬에서 저장될 필요가 없으며, 네트워크 인터페이스(816)를 통해 가령 네트워크상의 서버와 같은 원격 저장 장치로부터 수신될 수 있다. 명령어들은 가령 대용량 저장소(818)와 같은 저장 장치로부터 시스템 메모리(814)로 복사되고, 이후 프로세서(802)에 의해 액세스되고 실행된다. 다양한 구현예에서, 모듈 또는 모듈들은 프로세서나 복수의 프로세서들에 의하여 하나 또는 복수의 위치, 예컨대 병렬 프로세싱 환경의 복수의 서버에서 실행될 수 있다.
컴퓨터-판독가능한 매체의 예들은, 가령 휘발성 및 비-휘발성 메모리 장치와 같은 기록 가능한 타입의 매체; 고체 상태 메모리(solid state memory; SSD); 플로피 및 다른 제거가능한 디스크; 하드 디스크 드라이브, 자기 매체; 광학 디스크(예컨대, CD ROMS(Compact Disk Read-Only Memory), DVDs(Digital Versatile Disks)); 다른 유사한 비-일시적 (또는 일시적), 실체적 (또는 비-실체적) 저장 매체; 또는 본 명세서에 기술되는 임의의 하나 이상의 프로세스 및 특징을 수행하는 컴퓨터 시스템(800)에 의해 실행하기 위한 일련의 명령어들을 저장하고, 인코딩하고, 운반하는데 적절한 임의의 타입의 매체를 포함하지만, 이에 제한되지 않는다.
설명하기 위한 목적을 위해, 발명의 설명의 완전한 이해를 제공하도록 다수의 구체적인 세부사항들이 언급된다. 하지만, 본 명세서의 실시예들은 이러한 구체적인 세부사항들 없이도 실행될 수 있음이 통상의 기술자에게 자명해질 것이다. 일부 예에서, 모듈, 구조, 프로세스, 특징, 및 장치는 발명의 설명을 불명확하게 하는 것을 피하기 위해 블록 다이어그램의 형태로 도시된다. 다른 예에서, 기능적 블록 다이어그램 및 흐름 다이어그램은 데이터 및 로직의 흐름을 표현하도록 도시된다. 블록 다이어그램 및 흐름 다이어그램의 컴포넌트들(예컨대, 모듈, 블록, 구조, 장치, 특징 등)은 본 명세서에 명시적으로 기술되고 도시된 것과 다른 방식으로 다양하게 조합되고, 분리되고, 제거되고, 재정렬되고, 대체될 수 있다.
본 명세서에서의 "일실시예", "실시예", "다른 실시예들", "다른 실시예", "일련의 실시예", "일부 실시예", "다양한 실시예" 등에 대한 언급은, 실시예와 연계되어 기술된 특정의 특징, 설계, 구조, 또는 특성이 본 명세서의 적어도 하나의 실시예에 포함되는 것을 의미한다. 본 명세서에서의 다양한 위치에서 가령, "일실시예로", "하나의 실시예로", 또는 "다른 실시예로"와 같은 구절이 나타나는 것은 동일한 실시예를 언급하거나 혹은 다른 실시예들과 상호 배타적이며 분리된 또는 대안적 실시예들을 필연적으로 언급하는 것은 아니다. 더욱이, "실시예" 등에 대한 명시적인 언급이 있는지와 무관하게, 다양하게 조합될 수 있고 일부 실시예들에 포함될 수 있는 다양한 특징들이 기술되지만, 이들은 또한, 다른 실시예들에서 다양하게 생략된다. 유사하게, 일부 실시예들에 대한 선호사항 또는 요구사항일 수 있지만 다른 실시예들에서는 그렇지 않을 수 있는 다양한 특징들이 기술된다.
본 명세서에 사용되는 용어는 원칙적으로 가독성 및 훈시적 목적을 위해서 선택되었으며, 발명의 대상을 묘사하거나 제한하기 위해 선택된 것은 아니다. 따라서, 본 발명의 범위는, 본 발명의 상세한 설명에 의해 제한되는 것이 아니며, 본 출원이 기초로 하는 제출되는 청구범위에 의해 정의되는 것으로 의도되었다. 그러므로, 본 발명의 실시예들의 개시내용은 이하의 청구범위에서 정의되는 본 발명의 범위를 제한하는 것이 아니라 본 발명의 범위의 예시가 되도록 의도되었다.
Claims (20)
- 사용자에 의한 액세스를 위해 뉴스 피드에 제시되도록 스케줄된 제1 컨텐츠 아이템을 식별하는 단계;
제1 컨텐츠 아이템에 대한 제1 우선순위를 결정하는 단계; 및
제1 컨텐츠 아이템이 사용자에 의한 액세스를 위해 뉴스 피드에 제시되기 전에, 제1 우선순위에 기반하여 제1 컨텐츠 서버로부터 클라이언트 장치로 제1 컨텐츠 아이템의 적어도 일부를 사전-다운로드하는 단계를 포함하고,
상기 뉴스 피드는 클라이언트 장치의 디스플레이에 제시되는 컴퓨터 구현 방법. - 제 1 항에 있어서,
제1 컨텐츠 아이템의 적어도 일부가 클라이언트 장치로 사전-다운로드된 후에, 뉴스 피드에 제1 컨텐츠 아이템을 제시하는 단계를 더 포함하는 컴퓨터 구현 방법. - 제 1 항에 있어서,
사용자에 의한 액세스를 위해 뉴스 피드에 제시되도록 스케줄된 제2 컨텐츠 아이템을 식별하는 단계;
제2 컨텐츠 아이템에 대한 제2 우선순위를 결정하는 단계;
제1 컨텐츠 서버로부터 클라이언트 장치로 제1 컨텐츠 아이템의 적어도 일부를 사전-다운로드하기 전에, 제1 우선순위보다 높은 우선순위인 제2 우선순위에 기반하여 제2 컨텐츠 서버로부터 클라이언트 장치로 제2 컨텐츠 아이템의 적어도 일부를 사전-다운로드하는 단계를 더 포함하는 컴퓨터 구현 방법. - 제 3 항에 있어서,
사용자에 의한 액세스를 위해 뉴스 피드에 제2 컨텐츠 아이템을 제시하는 단계를 더 포함하는 컴퓨터 구현 방법. - 제 1 항에 있어서,
제1 우선순위를 결정하는 단계는 제1 컨텐츠 아이템이 사용자에게 가시적일 때, 자동-재생되는지 여부에 기반하는 컴퓨터 구현 방법. - 제 1 항에 있어서,
제1 우선순위를 결정하는 단계는 제1 컨텐츠 아이템이 광고와 관련되는지 여부에 기반하는 컴퓨터 구현 방법. - 제 1 항에 있어서,
제1 우선순위를 결정하는 단계는 사용자의 선호도에 기반하는 컴퓨터 구현 방법. - 제 1 항에 있어서,
제1 우선순위를 결정하는 단계는 클라이언트 장치의 자원의 이용가능성에 기반하는 컴퓨터 구현 방법. - 제 1 항에 있어서,
제1 우선순위를 결정하는 단계는 제1 컨텐츠 아이템의 컨텐츠 타입에 기반하는 컴퓨터 구현 방법. - 제 1 항에 있어서,
제1 우선순위를 결정하는 단계는 제1 컨텐츠 아이템의 메타데이터에 기반하는 컴퓨터 구현 방법. - 제 1 항에 있어서,
제1 우선순위를 결정하는 단계는 제1 컨텐츠 아이템과 관련된 소셜 네트워킹 정보에 기반하는 컴퓨터 구현 방법. - 제 11 항에 있어서,
소셜 네트워킹 정보는 소셜 네트워크상의 소셜 네트워크 사용자들에 의한 제1 컨텐츠 아이템의 좋아요의 수를 포함하는 컴퓨터 구현 방법. - 제 11 항에 있어서,
소셜 네트워킹 정보는 소셜 네트워크상의 소셜 네트워크 사용자들에 의한 제1 컨텐츠 아이템의 공유의 수를 포함하는 컴퓨터 구현 방법. - 제 11 항에 있어서,
소셜 네트워킹 정보는 소셜 네트워크상의 소셜 네트워크 사용자들에 의한 제1 컨텐츠 아이템과 관련된 코멘트의 수를 포함하는 컴퓨터 구현 방법. - 제 11 항에 있어서,
소셜 네트워킹 정보는 소셜 네트워크상에서 제1 컨텐츠 아이템을 좋아요한 한 명 이상의 소셜 네트워크 사용자를 식별하는 컴퓨터 구현 방법. - 제 11 항에 있어서,
소셜 네트워킹 정보는 소셜 네트워크상에서 제1 컨텐츠 아이템을 공유한 한 명 이상의 소셜 네트워크 사용자를 식별하는 컴퓨터 구현 방법. - 제 11 항에 있어서,
소셜 네트워킹 정보는 소셜 네트워크상에서 제1 컨텐츠 아이템에 관해 코멘트한 한 명 이상의 소셜 네트워크 사용자를 식별하는 컴퓨터 구현 방법. - 제 1 항에 있어서,
뉴스 피드는 소셜 네트워크에 관한 것인 컴퓨터 구현 방법. - 적어도 하나의 프로세서; 및
적어도 하나의 프로세서가:
사용자에 의한 액세스를 위해 뉴스 피드에 제시되도록 스케줄된 제1 컨텐츠 아이템을 식별하고;
제1 컨텐츠 아이템에 대한 제1 우선순위를 결정하며; 및
제1 컨텐츠 아이템이 사용자에 의한 액세스를 위해 뉴스 피드에 제시되기 전에, 제1 우선순위에 기반하여 제1 컨텐츠 서버로부터 클라이언트 장치로 제1 컨텐츠 아이템의 적어도 일부를 사전-다운로드하는 것을 수행하도록 명령하게끔 구성된 명령어를 저장하는 메모리를 포함하며,
상기 뉴스 피드는 클라이언트 장치의 디스플레이에 제시되는 컴퓨터 시스템. - 실행시, 컴퓨터 시스템으로 하여금:
사용자에 의한 액세스를 위해 뉴스 피드에 제시되도록 스케줄된 제1 컨텐츠 아이템을 식별하는 단계;
제1 컨텐츠 아이템에 대한 제1 우선순위를 결정하는 단계; 및
제1 컨텐츠 아이템이 사용자에 의한 액세스를 위해 뉴스 피드에 제시되기 전에, 제1 우선순위에 기반하여 제1 컨텐츠 서버로부터 클라이언트 장치로 제1 컨텐츠 아이템의 적어도 일부를 사전-다운로드하는 단계를 포함하는 컴퓨터 구현 방법을 수행하도록 하는 컴퓨터-실행가능한 명령어를 저장하고,
상기 뉴스 피드는 클라이언트 장치의 디스플레이에 제시되는 컴퓨터-저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/154,040 | 2014-01-13 | ||
US14/154,040 US20150201001A1 (en) | 2014-01-13 | 2014-01-13 | Systems and methods for priority-based digital content downloading |
PCT/US2014/011537 WO2015105518A1 (en) | 2014-01-13 | 2014-01-14 | Systems and methods for priority-based digital content downloading |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160106626A true KR20160106626A (ko) | 2016-09-12 |
Family
ID=53522380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167020550A KR20160106626A (ko) | 2014-01-13 | 2014-01-14 | 우선순위-기반의 디지털 컨텐츠 다운로드를 위한 시스템 및 방법 |
Country Status (10)
Country | Link |
---|---|
US (1) | US20150201001A1 (ko) |
EP (1) | EP2976743B1 (ko) |
JP (1) | JP6502385B2 (ko) |
KR (1) | KR20160106626A (ko) |
CN (1) | CN105900131A (ko) |
AU (1) | AU2014376324A1 (ko) |
CA (1) | CA2934707A1 (ko) |
IL (1) | IL246368B (ko) |
MX (1) | MX366184B (ko) |
WO (1) | WO2015105518A1 (ko) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101871827B1 (ko) | 2017-02-07 | 2018-06-28 | (주)망고플레이트 | 콘텐츠 우선순위 개인화 장치, 방법 및 프로그램 |
KR101871828B1 (ko) | 2017-07-03 | 2018-06-28 | (주)망고플레이트 | 온라인 콘텐츠의 대표 이미지 선정 장치 및 방법 |
KR20180091778A (ko) | 2018-06-20 | 2018-08-16 | (주)망고플레이트 | 콘텐츠 우선순위 개인화 장치, 방법 및 프로그램 |
KR20220118774A (ko) | 2021-02-19 | 2022-08-26 | 주식회사 에이아이온 | 마이크로러닝 콘텐츠 큐레이션의 신뢰도 향상을 위한 동적 콘텐츠 평판 순위 결정 방법 |
KR102521744B1 (ko) * | 2022-12-30 | 2023-04-14 | 주식회사 에스티씨랩 | 디지털 서비스 기반 유량 제어 서버, 방법 및 api 유량 제어 시스템 |
WO2024025252A1 (ko) * | 2022-07-26 | 2024-02-01 | 에스케이텔레콤 주식회사 | 오프-디맨드 기반 콘텐츠 다운로드를 위한 방법 및 장치 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6188490B2 (ja) * | 2013-08-28 | 2017-08-30 | キヤノン株式会社 | 画像表示装置、制御方法およびコンピュータプログラム |
US9787799B2 (en) | 2014-02-27 | 2017-10-10 | Dropbox, Inc. | Systems and methods for managing content items having multiple resolutions |
US10885104B2 (en) | 2014-02-27 | 2021-01-05 | Dropbox, Inc. | Systems and methods for selecting content items to store and present locally on a user device |
CN104468578B (zh) * | 2014-12-10 | 2017-12-26 | 怀效宁 | 一种无线通讯的优先通讯系统和通讯方法 |
US9629186B2 (en) * | 2014-11-20 | 2017-04-18 | Xiaoning Huai | Device and a method of an emergency handling wireless communication system |
US9680898B2 (en) * | 2014-09-15 | 2017-06-13 | Sony Corporation | Comment link to streaming media |
KR20160057862A (ko) * | 2014-11-14 | 2016-05-24 | 삼성전자주식회사 | 디스플레이 제어 방법 및 그 전자 장치 |
US9723095B2 (en) * | 2014-12-05 | 2017-08-01 | At&T Intellectual Property I, L.P. | Multi delivery method policy controlled client proxy |
US10656935B2 (en) | 2015-10-13 | 2020-05-19 | Home Box Office, Inc. | Maintaining and updating software versions via hierarchy |
US10623514B2 (en) | 2015-10-13 | 2020-04-14 | Home Box Office, Inc. | Resource response expansion |
US10198355B2 (en) | 2015-10-29 | 2019-02-05 | Dropbox, Inc. | Proving a dynamic digital content cache |
US10575160B2 (en) * | 2016-03-30 | 2020-02-25 | Vitrotv Hk Ltd | Systems and methods for operating display devices with dual pathway connections |
JP7097880B2 (ja) * | 2016-11-01 | 2022-07-08 | コーネル ユニバーシティー | Malt1分解のための化合物 |
CN106878372B (zh) * | 2016-11-07 | 2020-10-02 | 阿里巴巴集团控股有限公司 | 信息推送方法及装置 |
US10796273B2 (en) | 2016-11-18 | 2020-10-06 | Livible, Inc. | Platform for management and organization of personal property |
US10891342B2 (en) * | 2017-01-12 | 2021-01-12 | Google Llc | Content data determination, transmission and storage for local devices |
US10698740B2 (en) | 2017-05-02 | 2020-06-30 | Home Box Office, Inc. | Virtual graph nodes |
CN107277031A (zh) * | 2017-06-30 | 2017-10-20 | 广东欧珀移动通信有限公司 | 一种网络视频下载方法、装置、存储介质和终端 |
EP3547645B1 (en) * | 2018-03-30 | 2020-12-09 | Facebook, Inc. | System, method and computer-readable storage medium for prefetching content |
US11050843B2 (en) | 2018-03-30 | 2021-06-29 | Facebook, Inc. | Systems and methods for prefetching content |
US10587674B1 (en) * | 2018-06-08 | 2020-03-10 | Katomy Holdings LLC | Systems and methods for controlling in which order elements of a set of displayable content are transferred via an online connection |
US11640429B2 (en) * | 2018-10-11 | 2023-05-02 | Home Box Office, Inc. | Graph views to improve user interface responsiveness |
US10983677B2 (en) | 2018-11-16 | 2021-04-20 | Dropbox, Inc. | Prefetching digital thumbnails from remote servers to client devices based on a dynamic determination of file display criteria |
US11475092B2 (en) * | 2018-12-21 | 2022-10-18 | Home Box Office, Inc. | Preloaded content selection graph validation |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020002602A1 (en) * | 2000-04-17 | 2002-01-03 | Mark Vange | System and method for serving a web site from multiple servers |
US7010762B2 (en) * | 2002-02-27 | 2006-03-07 | At&T Corp. | Pre-loading content to caches for information appliances |
WO2004034698A1 (ja) * | 2002-10-09 | 2004-04-22 | Matsushita Electric Industrial Co., Ltd. | 情報処理装置 |
GB0310929D0 (en) * | 2003-05-13 | 2003-06-18 | Koninkl Philips Electronics Nv | Portable device for storing media content |
US20050138143A1 (en) * | 2003-12-23 | 2005-06-23 | Thompson Blake A. | Pre-fetching linked content |
US20060277271A1 (en) * | 2005-06-07 | 2006-12-07 | Yahoo! Inc. | Prefetching content based on a mobile user profile |
US20090047000A1 (en) * | 2007-08-17 | 2009-02-19 | Vibe Solutions Group, Inc. | Method and Apparatus for a Web Browser-Based Multi-Channel Content Player |
JP2010016534A (ja) * | 2008-07-02 | 2010-01-21 | Hitachi Ltd | コンテンツ受信再生方法およびコンテンツ受信再生装置 |
US7975025B1 (en) * | 2008-07-08 | 2011-07-05 | F5 Networks, Inc. | Smart prefetching of data over a network |
JP2010154271A (ja) * | 2008-12-25 | 2010-07-08 | Toshiba Corp | 情報受信再生装置および情報受信再生方法 |
US9143381B2 (en) * | 2009-04-16 | 2015-09-22 | Microsoft Technology Licenising, LLC | Sequenced transmission of digital content items |
US20130138637A1 (en) * | 2009-09-21 | 2013-05-30 | Walter Bachtiger | Systems and methods for ranking media files |
US8539161B2 (en) * | 2009-10-12 | 2013-09-17 | Microsoft Corporation | Pre-fetching content items based on social distance |
US20120072835A1 (en) * | 2010-09-20 | 2012-03-22 | UberMedia, Inc. | Microblog Client |
US9052806B2 (en) * | 2010-12-20 | 2015-06-09 | Facebook, Inc. | User interface for presenting media items of social networking service in media reel |
EP2783283B1 (en) * | 2011-10-24 | 2019-03-06 | Incoming Pty Ltd | Mobile content delivery method and device with recommendation-based pre-fetching |
US9479552B2 (en) * | 2012-05-30 | 2016-10-25 | Verizon Patent And Licensing, Inc. | Recommender system for content delivery networks |
WO2014059650A1 (zh) * | 2012-10-18 | 2014-04-24 | 华为终端有限公司 | 一种音频管理方法及装置 |
US9928209B2 (en) * | 2012-11-07 | 2018-03-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Pre-buffering of content data items to be rendered at a mobile terminal |
US9326026B2 (en) * | 2013-10-31 | 2016-04-26 | At&T Intellectual Property I, Lp | Method and apparatus for content distribution over a network |
-
2014
- 2014-01-13 US US14/154,040 patent/US20150201001A1/en not_active Abandoned
- 2014-01-14 MX MX2016009174A patent/MX366184B/es active IP Right Grant
- 2014-01-14 WO PCT/US2014/011537 patent/WO2015105518A1/en active Application Filing
- 2014-01-14 EP EP14878214.7A patent/EP2976743B1/en not_active Not-in-force
- 2014-01-14 CA CA2934707A patent/CA2934707A1/en not_active Abandoned
- 2014-01-14 KR KR1020167020550A patent/KR20160106626A/ko not_active Application Discontinuation
- 2014-01-14 CN CN201480072987.6A patent/CN105900131A/zh active Pending
- 2014-01-14 AU AU2014376324A patent/AU2014376324A1/en not_active Abandoned
- 2014-01-14 JP JP2016563772A patent/JP6502385B2/ja active Active
-
2016
- 2016-06-21 IL IL246368A patent/IL246368B/en not_active IP Right Cessation
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101871827B1 (ko) | 2017-02-07 | 2018-06-28 | (주)망고플레이트 | 콘텐츠 우선순위 개인화 장치, 방법 및 프로그램 |
KR101871828B1 (ko) | 2017-07-03 | 2018-06-28 | (주)망고플레이트 | 온라인 콘텐츠의 대표 이미지 선정 장치 및 방법 |
KR20180091778A (ko) | 2018-06-20 | 2018-08-16 | (주)망고플레이트 | 콘텐츠 우선순위 개인화 장치, 방법 및 프로그램 |
KR20220118774A (ko) | 2021-02-19 | 2022-08-26 | 주식회사 에이아이온 | 마이크로러닝 콘텐츠 큐레이션의 신뢰도 향상을 위한 동적 콘텐츠 평판 순위 결정 방법 |
WO2024025252A1 (ko) * | 2022-07-26 | 2024-02-01 | 에스케이텔레콤 주식회사 | 오프-디맨드 기반 콘텐츠 다운로드를 위한 방법 및 장치 |
KR102521744B1 (ko) * | 2022-12-30 | 2023-04-14 | 주식회사 에스티씨랩 | 디지털 서비스 기반 유량 제어 서버, 방법 및 api 유량 제어 시스템 |
WO2024144275A1 (ko) * | 2022-12-30 | 2024-07-04 | 주식회사 에스티씨랩 | 디지털 서비스 기반 유량 제어 서버, 방법 및 시스템 |
Also Published As
Publication number | Publication date |
---|---|
EP2976743A4 (en) | 2016-11-23 |
CA2934707A1 (en) | 2015-07-16 |
JP2017509088A (ja) | 2017-03-30 |
EP2976743B1 (en) | 2020-10-07 |
CN105900131A (zh) | 2016-08-24 |
IL246368B (en) | 2020-05-31 |
AU2014376324A1 (en) | 2016-07-14 |
WO2015105518A1 (en) | 2015-07-16 |
EP2976743A1 (en) | 2016-01-27 |
IL246368A0 (en) | 2016-08-31 |
JP6502385B2 (ja) | 2019-04-17 |
MX2016009174A (es) | 2017-01-23 |
MX366184B (es) | 2019-07-01 |
US20150201001A1 (en) | 2015-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6502385B2 (ja) | 優先度ベースのデジタル・コンテンツ・ダウンロードのためのシステムおよび方法 | |
US11115491B2 (en) | Residential cache appliance utilizing a social network | |
US10200427B2 (en) | Systems and methods for streaming digital content using an intermediate server | |
US9508102B2 (en) | Methods and systems for tracking of user interactions with content in social networks | |
US10248867B2 (en) | Systems and methods for providing playback of selected video segments | |
US10084885B2 (en) | Systems and methods for substituting references to content | |
US11206235B1 (en) | Systems and methods for surfacing content | |
US10932006B2 (en) | Systems and methods for previewing content | |
US20180189030A1 (en) | Systems and methods for providing content | |
US20200401522A1 (en) | Systems and methods for providing content | |
US11704008B2 (en) | Systems and methods for augmenting content | |
KR20180044358A (ko) | 컨텐츠 표시를 위한 시스템 및 방법 | |
US11361021B2 (en) | Systems and methods for music related interactions and interfaces | |
US11032596B2 (en) | Systems and methods for generating content streams | |
JP6687752B2 (ja) | 階層アーキテクチャに基づきビデオのデータ分析を提供するためのシステムおよび方法 | |
US10524011B2 (en) | Systems and methods for utilizing social metrics to provide videos in video categories | |
US10904359B2 (en) | Systems and methods for smart scheduling of outbound data requests | |
US20190057415A1 (en) | Systems and methods for providing content item collections based on probability of spending time on related content items in a social networking system | |
US20180157757A1 (en) | Systems and methods for generating content |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E601 | Decision to refuse application |