KR102294326B1 - 연결 해제의 기간을 위한 애플리케이션 데이터의 프리페치 - Google Patents
연결 해제의 기간을 위한 애플리케이션 데이터의 프리페치 Download PDFInfo
- Publication number
- KR102294326B1 KR102294326B1 KR1020167028066A KR20167028066A KR102294326B1 KR 102294326 B1 KR102294326 B1 KR 102294326B1 KR 1020167028066 A KR1020167028066 A KR 1020167028066A KR 20167028066 A KR20167028066 A KR 20167028066A KR 102294326 B1 KR102294326 B1 KR 102294326B1
- Authority
- KR
- South Korea
- Prior art keywords
- application
- application data
- computing device
- mobile computing
- computer network
- Prior art date
Links
Images
Classifications
-
- 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
-
- H04L67/2847—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- 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/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- 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/01—Protocols
- H04L67/04—Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
-
- H04L67/22—
-
- H04L67/26—
-
- H04L67/2861—
-
- H04L67/325—
-
- 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/535—Tracking the activity of the user
-
- 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/55—Push-based network services
-
- 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/59—Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
-
- 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/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/62—Establishing a time schedule for servicing the requests
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
Abstract
통신 네트워크로부터의 연결 해제의 기간 동안 모바일 컴퓨팅 디바이스 상에서 동작 중인 애플리케이션에 의한 사용을 위한 애플리케이션 데이터를 프리페치하여 제공하는 애플리케이션 데이터 프리페치 실시예가 제시된다. 이러한 방식으로, 네트워크 연결 해제의 기간 동안에도 온라인 경험이 달성될 수 있다. 일 구현에서, 애플리케이션 데이터가 클라우드 기반 애플리케이션 데이터 프리페치 서비스에 의해 모바일 컴퓨팅 디바이스로 푸시된다. 다른 구현에서, 모바일 컴퓨팅 디바이스가 애플리케이션 데이터를 프리페치하는 작업 및 이를 애플리케이션에 제공하는 작업을 담당한다.
Description
모바일 컴퓨팅 디바이스의 보급과 함께 모바일 애플리케이션이 급증하였다. 또한 무선 설치도 급증하여, 인터넷 연결 지역을 확대하고 개선시켰다. 전형적으로, 모바일 컴퓨팅 디바이스가 어떤 형태의 통신 네트워크를 통해 인터넷에 무선으로 연결되어 있는 시간 동안, 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션이 애플리케이션 서버에 웹 콘텐츠 등을 요청하거나, 애플리케이션 서버가 애플리케이션에 콘텐츠를 푸시하려고 시도한다.
애플리케이션 서버가 콘텐츠를 애플리케이션에 푸시하려고 시도하는 경우에, 전형적으로 푸시 시스템이 이용된다. 이러한 시스템은 다수의 모바일 운영 체제 플랫폼에 의해 현재 지원되는 특징이다. 이러한 푸시 시스템은 전형적으로 애플리케이션 서버가 모바일 컴퓨팅 디바이스 상에서 동작 중인 애플리케이션으로 새로운 콘텐츠를 푸시할 수 있게 한다. 하나의 이러한 널리 사용되는 시스템은 푸시 통지(push notification)이다. 푸시 통지는 새로운 데이터가 이용가능할 때 애플리케이션 서버가 모바일 컴퓨팅 디바이스 사용자에게 통보할 수 있게 한다. 종종 푸시 통지는 임베디드 동작(embedded action)을 포함한다. 모바일 디바이스 사용자가 통지를 클릭할 때, 임베디드 동작은 애플리케이션을 시작하고 그 후에 새로운 데이터의 다운로드를 개시한다. 그에 부가하여, 전형적으로 애플리케이션 서버는 사용자 동작 없이 제한된 수의 문자들을 사용자의 모바일 디바이스로 전달할 수 있다. 예를 들어, 최신 뉴스의 헤드라인이 모바일 컴퓨팅 디바이스 상에서 실행 중인 뉴스 애플리케이션으로 푸시될 수 있다.
디바이스 또는 사용자의 참여 없이, 모바일 컴퓨팅 디바이스로의 콘텐츠의 다운로드를 강요하거나 개시하는 것에 의해 애플리케이션으로의 콘텐츠의 전달을 용이하게 하려고 하는 다른 푸시 시스템이 최근에 등장하였다. 보다 상세하게는, 이 새로운 푸시 시스템들 중 하나에서, 모바일 컴퓨팅 디바이스가 전원이 켜질 때 콘텐츠가 다운로드된다. 이 새로운 푸시 시스템들 중 다른 것들은 매 24시간마나 한번씩 단일의 파일의 백그라운드 다운로드를 가능하게 하고, 그 후에는 제한된 콘텐츠를 전달하기 위해 푸시 통지가 사용된다. 또 다른 새로운 푸시 시스템은 실제로는 콘텐츠를 애플리케이션으로 푸시하지 않고, 시작 대기 시간(launch wait time)을 감소시키기 위해 애플리케이션 시작(application launching) 이전에 콘텐츠를 프리페치(prefetch)한다. 일단 시작되면, 애플리케이션은 통상의 방식으로 콘텐츠를 요청한다.
이 발명의 내용은 이하에서 발명을 실시하기 위한 구체적인 내용에 추가로 기술되는 선택된 개념들을 간략화된 형태로 소개하기 위해 제공된다. 이 발명의 내용은 청구된 발명 요지의 핵심적인 특징들 또는 필수적인 특징들을 확인하기 위한 것이 아니며, 청구된 발명 요지의 범주를 정하는 데 보조 수단으로 사용되기 위한 것도 아니다.
본원에 기술되는 애플리케이션 데이터 프리페치 실시예는 일반적으로 통신 네트워크로부터의 연결 해제의 기간 동안 모바일 컴퓨팅 디바이스 상에서 동작 중인 애플리케이션에 의한 사용을 위한 애플리케이션 데이터를 프리페치하여 제공한다. 이러한 방식으로, 모바일 컴퓨팅 디바이스가 오프라인일 때에도 온라인 경험이 달성될 수 있다.
보다 상세하게는, 하나의 예시적인 실시예는 애플리케이션 데이터를 모바일 컴퓨팅 디바이스로 푸시하는 것을 포함한다. 먼저, 애플리케이션 트래픽 데이터가 모바일 컴퓨팅 디바이스로부터 수신된다. 이 애플리케이션 트래픽 데이터는 애플리케이션에 관련된 애플리케이션 데이터가 획득될 수 있는 네트워크 사이트를 명시하는 적어도 하나의 컴퓨터 네트워크 주소들을 포함한다. 통신 네트워크로부터의 연결 해제의 기간 동안 애플리케이션의 동작을 가능하게 하기 위해 프리페치되어야 하는 애플리케이션 데이터를 식별하기 위해 수신된 애플리케이션 트래픽 데이터가 분석된다. 식별된 애플리케이션 데이터가 이어서 프리페치되고, 모바일 컴퓨팅 디바이스가 통신 네트워크에 연결되어 있는 시간 동안 이 데이터의 적어도 일부가 모바일 컴퓨팅 디바이스에 제공된다.
애플리케이션 데이터를 모바일 컴퓨팅 디바이스로 푸시하는 것은 일 구현에서 클라우드 기반 애플리케이션 데이터 프리페치 서비스에 의해 처리된다. 이 구현에서, 모바일 컴퓨팅 디바이스는 전술한 애플리케이션 트래픽 데이터를 수집하고 저장하며, 이를 주기적으로 통신 네트워크를 통해 서비스에 제공한다. 그에 부가하여, 모바일 컴퓨팅 디바이스는 프리페치된 애플리케이션 데이터를 통신 네트워크를 통해 서비스 또는 중간 사전-스테이징 사이트(intermediary pre-staging site)로부터 수신하고 저장한다. 이전에 살펴본 바와 같이, 프리페치된 애플리케이션 데이터는 연결 해제의 기간 동안 동작을 가능하게 하기 위해 애플리케이션에 의해 사용된다.
다른 예시적인 실시예에서, 클라우드 기반 서비스가 관여되지 않고, 모바일 컴퓨팅 디바이스가 애플리케이션 데이터를 프리페치하는 작업 및 이를 애플리케이션에 제공하는 작업을 담당한다. 이 예시적인 실시예에서, 모바일 컴퓨팅 디바이스는 전술한 애플리케이션 트래픽 데이터를 수집하고 저장하며, 이어서 이를 분석하여 통신 네트워크로부터의 연결 해제의 기간 동안 애플리케이션의 동작을 가능하게 하기 위해 프리페치되어야 하는 애플리케이션 데이터를 식별한다. 그에 부가하여, 모바일 컴퓨팅 디바이스는 식별된 애플리케이션 데이터를 프리페치한다. 이어서, 애플리케이션이 연결 해제의 기간 동안 모바일 컴퓨팅 디바이스 상에서 동작 중일 때, 애플리케이션을 위해 가상 연결-네트워크 인터페이스(virtual connected-network interface)가 시뮬레이트된다. 이 시뮬레이트된 인터페이스는 애플리케이션 데이터에 대한 애플리케이션으로부터의 요청을 인터셉트(intercept)하고, 인터셉트된 요청에 대응하는 프리페치된 애플리케이션 데이터가 저장되었을 때, 각각의 인터셉트된 요청에 대응하는 저장된 프리페치된 애플리케이션 데이터를 애플리케이션에 제공한다. 요청된 애플리케이션 데이터가 프리페치되어 저장되지 않았으면, 이용가능하지 않음 메시지(non-availability message)가 발행된다.
이하의 설명, 첨부된 청구범위 및 첨부 도면과 관련하여 본 개시 내용의 특정의 특징들, 양태들 및 장점들이 더 잘 이해될 것이다.
도 1은 본원에 기술되는 애플리케이션 데이터 프리페치 실시예를 구현하기 위한 아키텍처 프레임워크의 예시적인 실시예를 간략화된 형태로 나타낸 도면.
도 2는 애플리케이션 데이터를 모바일 컴퓨팅 디바이스로 푸시하는 프로세스의 일 실시예를 전체적으로 간략히 나타낸 흐름도.
도 3은 임베디드 URL(embedded URL)을 식별하기 위해 사용될 수 있는 예시적인 정규식(regular expression)의 세트의 구분 기호(delimiter) 및 파일 유형을 열거하는 표를 나타낸 도면.
도 4는 수정된 형태를 보여주는 주소들을 네트워크 사이트에 액세스하는 데 사용될 수 있는 사용가능 형태로 변환하는 것을 포함하는 하나 이상의 컴퓨터 네트워크 주소들을 식별하는 프로세스의 일 실시예를 전체적으로 간략히 나타낸 흐름도.
도 5는 수정된 URL을 변환하는 데 사용될 수 있는 예시적인 문법 규칙(grammatical rule)들의 세트를 제공하는 표를 나타낸 도면.
도 6은, 동일한 애플리케이션의 다른 사용자들에 대한 URL의 인기도에 기초하여, 식별된 URL들의 리스트에 추가할 URL을 획득하는 프로세스의 일 실시예를 전체적으로 간략히 나타낸 흐름도.
도 7a 및 도 7b는 통신 네트워크로부터의 연결 해제의 기간 동안 프리페치된 애플리케이션 데이터를 애플리케이션에 제공하는 프로세스의 일 실시예를 전체적으로 간략히 나타낸 연속적인 흐름도.
도 8은 본원에 기술되는 애플리케이션 데이터 프리페치 실시예를 구현하는 예시적인 시스템을 구성하는 범용 컴퓨팅 디바이스를 나타낸 도면.
도 9a 및 도 9b는 모바일 컴퓨팅 디바이스가 통신 네트워크로부터의 연결 해제의 기간 동안 모바일 컴퓨팅 디바이스 상에서 동작 중인 애플리케이션에 의한 사용을 위한 애플리케이션 데이터를 프리페치하는 프로세스의 일 실시예를 전체적으로 간략히 나타낸 연속적인 흐름도.
도 1은 본원에 기술되는 애플리케이션 데이터 프리페치 실시예를 구현하기 위한 아키텍처 프레임워크의 예시적인 실시예를 간략화된 형태로 나타낸 도면.
도 2는 애플리케이션 데이터를 모바일 컴퓨팅 디바이스로 푸시하는 프로세스의 일 실시예를 전체적으로 간략히 나타낸 흐름도.
도 3은 임베디드 URL(embedded URL)을 식별하기 위해 사용될 수 있는 예시적인 정규식(regular expression)의 세트의 구분 기호(delimiter) 및 파일 유형을 열거하는 표를 나타낸 도면.
도 4는 수정된 형태를 보여주는 주소들을 네트워크 사이트에 액세스하는 데 사용될 수 있는 사용가능 형태로 변환하는 것을 포함하는 하나 이상의 컴퓨터 네트워크 주소들을 식별하는 프로세스의 일 실시예를 전체적으로 간략히 나타낸 흐름도.
도 5는 수정된 URL을 변환하는 데 사용될 수 있는 예시적인 문법 규칙(grammatical rule)들의 세트를 제공하는 표를 나타낸 도면.
도 6은, 동일한 애플리케이션의 다른 사용자들에 대한 URL의 인기도에 기초하여, 식별된 URL들의 리스트에 추가할 URL을 획득하는 프로세스의 일 실시예를 전체적으로 간략히 나타낸 흐름도.
도 7a 및 도 7b는 통신 네트워크로부터의 연결 해제의 기간 동안 프리페치된 애플리케이션 데이터를 애플리케이션에 제공하는 프로세스의 일 실시예를 전체적으로 간략히 나타낸 연속적인 흐름도.
도 8은 본원에 기술되는 애플리케이션 데이터 프리페치 실시예를 구현하는 예시적인 시스템을 구성하는 범용 컴퓨팅 디바이스를 나타낸 도면.
도 9a 및 도 9b는 모바일 컴퓨팅 디바이스가 통신 네트워크로부터의 연결 해제의 기간 동안 모바일 컴퓨팅 디바이스 상에서 동작 중인 애플리케이션에 의한 사용을 위한 애플리케이션 데이터를 프리페치하는 프로세스의 일 실시예를 전체적으로 간략히 나타낸 연속적인 흐름도.
애플리케이션 데이터 프리페치 실시예의 이하의 상세한 설명에서, 본원의 일부를 형성하고, 예시로서, 애플리케이션 데이터 프리페치가 실시될 수 있는 구체적인 실시예들이 도시되어 있는 첨부 도면들이 참조된다. 애플리케이션 데이터 프리페치의 범주를 벗어나지 않고, 다른 실시예들이 이용될 수 있고 구조적 변경들이 행해질 수 있다는 것을 잘 알 것이다.
또한 유의할 점은, 명확함을 위해, 본원에 기술되는 애플리케이션 데이터 프리페치 실시예들을 설명하는 데 특정 용어들에 의존할 것이고 이 실시예들이 그렇게 선택된 특정 용어들로 제한되는 것으로 의도되어 있지 않다는 것이다. 게다가, 각각의 특정 용어가 유사한 목적을 달성하기 위해 대체로 유사한 방식으로 동작하는 그의 기술적 등가물들 모두를 포함한다는 것을 잘 알 것이다. 본원에서 "일 실시예", 또는 "다른 실시예", 또는 "예시적인 실시예", 또는 "대안의 실시예", 또는 "일 구현", 또는 "다른 구현", 또는 "예시적인 구현", 또는 "대안의 구현"이라고 하는 것은 실시예 또는 구현과 관련하여 기술된 특정의 특징, 특정의 구조, 또는 특정의 특성이 애플리케이션 데이터 프리페치의 적어도 하나의 실시예에 포함될 수 있다는 것을 의미한다. 명세서의 다양한 곳에서 나오는 문구들 "일 실시예에서", "다른 실시예에서" "예시적인 실시예에서", "대안의 실시예에서", "일 구현에서", "다른 구현에서", "예시적인 구현에서", 및 "대안의 구현에서"는 모두가 꼭 동일한 실시예 또는 구현을 지칭하는 것도 아니고, 별개의 또는 대안의 실시예들/구현들이 다른 실시예들/구현들과 상호 배타적이지도 않다. 게다가, 애플리케이션 데이터 프리페치의 하나 이상의 실시예들 또는 구현들을 나타내는 프로세스 흐름의 순서가 본질적으로 임의의 특정의 순서가 그에 대한 어떤 제한도 암시하지 않는다는 것을 나타내지 않는다.
이하의 용어들이 본 설명 전체에 걸쳐 사용될 것이고, 따라서 편의상 여기에 정의될 것이다. "애플리케이션 데이터"라는 용어는 본원에서 일반적으로, 네트워크 사이트(예컨대, 인터넷 또는 개인 인트라넷 사이트(private intranet site))에서 발견되는 텍스트, 영상, 사운드, 비디오 및 애니메이션(이들로 제한되지 않음)을 비롯한, 텍스트, 시각적 또는 청각적 콘텐츠와 같은 웹 콘텐츠는 물론, 임의의 연관된 메타데이터 등을 지칭하는 데 사용된다. 그에 부가하여, "모바일 컴퓨팅 디바이스"라는 용어는 본원에서 일반적으로, 예로서, 랩톱 또는 노트북 컴퓨터, 스마트폰, 태블릿 컴퓨터, PDA(personal data assistant) 등(이들로 제한되지 않음)과 같은 휴대용 디바이스를 지칭하는 데 사용된다. 게다가, (연결 해제의 기간에서과 같이) "연결 해제"라는 용어는 본원에서 그리고 청구범위에서 일반적으로 통신 네트워크에의 연결이 존재하지 않거나 미리 정해진 문턱값에 기초하여 너무 약하거나 느린 것을 지칭하는 데 사용된다.
1.0
연결 해제의 기간을 위한 애플리케이션 데이터의 프리페치
본원에 기술되는 애플리케이션 데이터 프리페치 실시예는 일반적으로 통신 네트워크로부터의 연결 해제의 기간 동안 모바일 컴퓨팅 디바이스 상에서 동작 중인 애플리케이션에 의한 사용을 위한 애플리케이션 데이터를 프리페치한다. 이러한 방식으로, 온라인 경험이 연결의 기간 동안에만 달성되는 것은 아니다. 오히려, 연결 경험의 착각(illusion)이 연결 해제의 기간으로 확장될 수 있다.
모바일 컴퓨팅 디바이스가 전형적으로 하루 중 적어도 하나의 시점에서 통신 네트워크에 연결되기만 하면, 프리페치된 애플리케이션 데이터를 획득하기 위해 연결의 기간을 이용하는 것이 가능하다. 프리페치된 애플리케이션 데이터는 이어서 연결 해제의 기간 동안 온라인 경험의 착각을 생성하는 데 사용된다. 이것은 매끄러운 온라인 사용자 경험, 보다 저렴한 네트워크(Wi-Fi 등)의 사용을 통한 어쩌면 보다 낮은 대역폭 비용, 및 배터리 수명의 보다 효율적인 사용 모두의 면에서 영향을 미친다.
본원에 기술되는 애플리케이션 데이터 프리페치 실시예는 모바일 컴퓨팅 디바이스 상에서 동작 중인 애플리케이션에 중점을 두고 있다. 전형적으로, 모바일 브라우저를 통하는 것보다 애플리케이션을 통해 보다 많은 웹 콘텐츠가 액세스된다. 이것은 일반적인 브라우징보다는 애플리케이션에 중점을 두는 것을 아주 관련성 있게 만든다. 유의할 점은 애플리케이션 거동 및 웹 콘텐츠(이하의 설명에서 애플리케이션 데이터라고 보다 널리 지칭될 것임)에의 액세스가 일반 브라우저의 거동 및 웹 콘텐츠에의 액세스와 상당히 다르다는 것이다.
도 1은 본원에 기술되는 애플리케이션 데이터 프리페치 실시예를 구현하기 위한 아키텍처 프레임워크의 예시적인 실시예를 간략화된 형태로 나타낸 것이다. 도 1에 예시된 바와 같이, 아키텍처 프레임워크는 하나 이상의 모바일 컴퓨팅 디바이스(100)(그 중 하나가 도시되어 있음), 하나 이상의 통신 네트워크(102), 및 클라우드(104)를 포함한다. 클라우드 컴퓨팅의 기술에서 잘 알려진 바와 같이, 클라우드(104)는 일반적으로 상이한 지리적 영역들에 위치될 수 있는 복수의 클라우드 컴퓨팅 디바이스(106)(그 중 하나가 도시되어 있음)를 포함한다. 네트워크(102)는 모바일 컴퓨팅 디바이스(100)가 클라우드 컴퓨팅 디바이스(106)와 통신하고 그와 정보를 교환할 수 있게 한다. 네트워크(102)가 아주 다양한 근거리 및 원거리 네트워킹 기술을 이용할 수 있다는 것을 잘 알 것이다. 제한이 아닌 예로서, 예시적인 실시예에서, 전술한 통신은 인터넷 또는 독점적 인트라넷을 사용하여, 임의의 적절한 통신 네트워크(102)(셀룰러 또는 Wi-Fi 네트워크, 또는 인터넷 서비스 공급자의 케이블 루프(cable loop) 이용, 또는 DSL(digital subscriber line) 네트워크 등을 통해 달성된다.
도 1을 다시 참조하면, 제한이 아닌 예로서, 모바일 컴퓨팅 디바이스(100)는 스마트폰, 또는 태블릿 컴퓨터, 또는 PDA(personal digital assistant), 또는 웨어러블 디바이스 등일 수 있다. 사용자(도시되지 않음)는 애플리케이션(110)을 실행하기 위해 모바일 컴퓨팅 디바이스(100)를 이용한다. 유의할 점은 사용자가 모바일 컴퓨팅 디바이스 상에서 다수의 애플리케이션을 개별적으로 또는 동시에 실행할 수 있다는 것이다. 그렇지만, 다른 애플리케이션들에 대해 아키텍처 및 프로세스가 단순히 반복되기 때문에, 본 설명에서는 편의상 하나의 애플리케이션만이 언급될 것이다. 프리페치된 애플리케이션 데이터 관리자(112)를 호스팅하기 위해 모바일 컴퓨팅 디바이스가 사용된다.
도 1을 다시 참조하면, 애플리케이션 데이터 프리페치 서비스(108)를 호스팅하기 위해 클라우드 컴퓨팅 디바이스들(106) 중 하나 이상이 사용된다. 유의할 점은, 애플리케이션 데이터 프리페치 서비스(108)가 도 1에서 단일의 컴퓨팅 디바이스(106) 상에서 동작하는 것으로 도시되어 있지만, 이럴 필요가 없다는 것이다. 오히려, 서비스의 컴포넌트들이 (도시되지 않은) 임의의 적절한 통신 네트워크를 통해 서로 통신하는 다수의 클라우드 컴퓨팅 디바이스에 걸쳐 분산되어 있을 수 있다.
클라우드 기반 애플리케이션 데이터 프리페치 서비스(108) 및 모바일 디바이스 기반 프리페치된 애플리케이션 데이터 관리자(112)가 이제부터 보다 상세히 기술될 것이다.
1.1
애플리케이션 데이터 프리페치 서비스
도 1을 또다시 참조하면, 애플리케이션 데이터 프리페치 서비스(108)는 2 개의 상위 레벨 컴포넌트 - 즉, 애플리케이션 데이터 식별 및 프리페치 모듈(114), 및 프리페치된 데이터 제공 모듈(116) - 를 포함한다. 애플리케이션 데이터 식별 및 프리페치 모듈(114)은 일반적으로 연결 해제의 기간 동안 동작하기 위해 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션에 의해 필요하게 되는 애플리케이션 데이터를 프리페치하기 위해 나중에 사용되는 컴퓨터 네트워크 주소들을 식별한다. 프리페치된 데이터 제공 모듈(116)은 프리페치된 애플리케이션 데이터를, 각종의 지능적으로 결정되고 비용 효율적인 방식으로, 모바일 컴퓨팅 디바이스(100)로 푸시한다.
도 2는 앞서 기술된 모듈들을 사용하여 애플리케이션 데이터를 모바일 컴퓨팅 디바이스로 푸시하는 프로세스의 일반적인 실시예를 간략하게 나타낸 것이다. 먼저, 하나 이상의 컴퓨팅 디바이스가 애플리케이션 트래픽 데이터를 수신한다(프로세스 동작(200)). 이 애플리케이션 트래픽 데이터는 일반적으로 애플리케이션에 관련된 애플리케이션 데이터가 획득될 수 있는 네트워크 사이트를 명시하는 적어도 하나의 컴퓨터 네트워크 주소들을 포함한다. 통신 네트워크로부터의 연결 해제의 기간 동안 애플리케이션의 동작을 가능하게 하기 위해 프리페치되어야 하는 애플리케이션 데이터를 식별하기 위해 수신된 애플리케이션 트래픽 데이터가 분석된다(프로세스 동작(202)). 식별된 애플리케이션 데이터가 이어서 프리페치된다(프로세스 동작(304)). 일 구현에서, 이전에 기술된 애플리케이션 데이터 식별 및 프리페치 모듈이 전술한 프로세스 동작들을 담당한다. 다음에, 모바일 컴퓨팅 디바이스가 통신 네트워크에 연결되어 있는 시간 동안 애플리케이션 데이터의 적어도 일부가 그 디바이스에 제공된다(프로세스 동작(206)). 일 구현에서, 이전에 기술된 프리페치된 데이터 제공 모듈이 이 마지막 작업을 담당한다. 전술한 동작들 각각이 이제부터 보다 상세히 기술될 것이다.
1.1.1
애플리케이션 트래픽 데이터의 수신
애플리케이션 트래픽 데이터는 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션에 의해 통신 네트워크를 통해 애플리케이션 데이터에 대해 행해진 요청 및 모바일 컴퓨팅 디바이스의 사용자와 애플리케이션 간의 상호작용(과거의 애플리케이션 트래픽)은 물론, 그 요청에 응답하여 반환된 애플리케이션 데이터(페치된 애플리케이션 트래픽 데이터)를 총칭하여 지칭한다. 본 설명에서 나중에 보다 상세히 기술될 것인 바와 같이, 모바일 컴퓨팅 디바이스 상에 존재하는 프리페치된 애플리케이션 데이터 관리자는 애플리케이션이 동작 중일 시간 동안 애플리케이션 트래픽 데이터를 수집하는 것 및 애플리케이션 데이터가 획득되는 사이트와 그리고/또는 사용자와 상호작용하는 것을 담당한다. 모바일 컴퓨팅 디바이스로부터 애플리케이션 데이터 프리페치 서비스에 의해 수신되는 것은 수집된 애플리케이션 트래픽 데이터이다.
애플리케이션 트래픽 데이터가 분석될 때 애플리케이션 트래픽 데이터에 의해 부과되는 부하를 최소화하기 위해, 일 실시예에서, 비텍스트 및 비애플리케이션 MIME 타입 페이로드에 의해 생성된 불필요한 오버헤드를 없애기 위해 적절한 필터들이 이용된다. 유의할 점은, 대안의 애플리케이션 데이터 프리페치 실시예에서, 이 필터링 동작이, 애플리케이션 트래픽 데이터가 애플리케이션 데이터 프리페치 서비스로 송신되기 전에, 그 대신에 모바일 컴퓨팅 디바이스 상에 존재하는 프리페치된 애플리케이션 데이터 관리자에 의해 수행될 수 있다는 것이다. 애플리케이션 데이터 프리페치 서비스는 (필터링되거나 필터링되지 않은) 애플리케이션 트래픽 데이터를 분석하고, 이에 대해서는 다음에 기술될 것이다.
1.1.2
애플리케이션 트래픽 데이터의 분석
애플리케이션 트래픽 데이터가 수신되면, 관련성 있는 애플리케이션 데이터를 식별하기 위해 애플리케이션 트래픽 데이터가 분석된다. 유의할 점은 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션에 의해 사용되는 애플리케이션 데이터가 일반적으로 전술한 애플리케이션 트래픽 데이터에서 발견되는 컴퓨터 네트워크 주소를 통해 획득된다는 것이다. 이와 같이, 일 실시예에서, 관련성 있는 애플리케이션 데이터를 식별하기 위해 수신된 애플리케이션 트래픽 데이터를 분석하는 것은 관련성 있는 애플리케이션 데이터가 획득될 수 있는 네트워크 사이트에 액세스하기 위해 사용될 수 있는 하나 이상의 컴퓨터 네트워크 주소들을 식별하는 것을 포함한다. 전형적으로, 컴퓨터 네트워크 주소는 URL(Uniform Resource Locator)일 것이다. 편의상, 이하의 설명이 URL을 언급할 것이지만, 임의의 다른 컴퓨터 네트워크 주소 포맷이 URL 대신에 또는 그에 부가하여 이용될 수 있다는 것을 잘 알 것이다.
애플리케이션이 애플리케이션 데이터를 획득하기 위해 전형적으로 요청하는 2 가지 일반 유형의 URL - 정적 URL(static URL) 및 임베디드 URL - 이 있다. 정적 URL은 애플리케이션 코드 자체 내에 하드코딩되는 것이다. 이와 같이, 일 실시예에서, 전술한 하나 이상의 컴퓨터 네트워크 주소들을 식별하는 것은 애플리케이션에 하드코딩된 하나 이상의 컴퓨터 네트워크 주소들을 식별하는 것을 포함한다.
전형적으로, 정적 URL과 연관된 애플리케이션 데이터는 애플리케이션이 처음 시작될 때 또는 (뉴스 애플리케이션의 스포츠 섹션과 같은) 애플리케이션의 주요 자리 표시자(placeholder)가 보기 위해 선택될 때 항상 페치된다. 그에 따라, 일 실시예에서, 정적 URL을 식별하는 것은 주어진 애플리케이션의 다수의 실행에 걸쳐 빈번히 또는 항상 페치되는 그 URL을 찾아내는 것을 포함한다. 그렇지만, 캐시 만료(cache expiration)가 또한 정적 URL의 식별에 고려되어야만 한다. 특정의 URL이 주어진 실행에서 페치되지 않는 경우에, 사본이 애플리케이션의 캐시에 이미 존재하고 사본이 아직 만료되지 않았을 수 있다. 이것은 URL이 페치되지 않았지만, 그에 의해 액세스된 애플리케이션 데이터가 애플리케이션에 의해 여전히 사용되었을 수 있다는 것을 의미한다. 모바일 애플리케이션의 전용 캐시(private cache)의 내용에 액세스하는 것이 전형적으로 실현가능하지 않기 때문에, 일 실시예에서, 캐시 만료 시간을 추적하기 위해, HTTP 메시지의 캐시 제어(cache-control) TTL(time-to-live) 지시문(directive)이 그 대신에 모니터링된다. 이것을 아는 것에 의해, 연관된 애플리케이션 데이터가 로컬 캐시 또는 애플리케이션 서버로부터 페치되었는지에 관계없이, 애플리케이션이 주어진 URL을 요청한 횟수를 정확하게 예측하는 것이 가능하다. 이것은 URL 요청 빈도수를 계산하는 정확도를 개선시키는 것에 의해 정적 URL 예측을 개선시킨다.
임베디드 URL에 대해서와 같이, 정적 URL이 정적 URL과 연관된 텍스트 및 태그 데이터에서 발견될 수 있거나, 이전에 수신된 애플리케이션 데이터로부터 추출될 수 있다. 애플리케이션 데이터에 링크하는 URL이 정적 URL에서 또는 이전에 수신된 애플리케이션 데이터에서 발견될 수 있다면, 일 실시예에서, 전술한 하나 이상의 컴퓨터 네트워크 주소들을 식별하는 것은 식별된 하드코딩된 컴퓨터 네트워크 주소 또는 주소들을 사용하여 획득되는 애플리케이션 데이터에 열거된 하나 이상의 보조 컴퓨터 네트워크 주소들을 식별하는 것을 포함한다. 게다가, 보조 URL을 사용하여 액세스된 이전의 수신된 애플리케이션 데이터에서 보다 많은 URL들이 발견될 수 있다. 이것이 주어지면, 일 실시예에서, 전술한 하나 이상의 컴퓨터 네트워크 주소들을 식별하는 것은 식별된 보조 컴퓨터 네트워크 주소 또는 주소들을 사용하여 획득되는 애플리케이션 데이터에 열거된 하나 이상의 부가 컴퓨터 네트워크 주소들을 식별하는 것을 포함한다.
일 실시예에서, 임베디드 URL은, 미리 정해진 정규식들의 리스트를 사용하여, 이전에 식별된 URL 주소에서의 또는 이전에 식별된 URL 주소를 통해 액세스된 애플리케이션 데이터에서의 텍스트 및 태그들로부터 식별(및 추출)된다. 유의할 점은 이 정규식이 인코딩 제약조건을 우회할 수 있다는 것이다. 도 3에 도시된 표는 임베디드 URL을 식별하는 데 사용될 수 있는 구분 기호 및 파일 유형을 열거한다.
유의할 점은 임베디드 URL이 2 가지 상이한 형태 - 수정된 URL(modified UR) 및 축어적 URL(verbatim URL) - 를 취할 수 있다는 것이다. 2 가지 임베디드 URL 형태 사이의 차이점은 HTTP 응답 페이로드에서의 임베디드 링크(embedded link)가, 요청되기 전에, (예컨대, 리터럴(literal)을 추가하는 것 및/또는 링크에서의 다른 것을 대체하는 것) 변경될 때, 링크는 수정된 URL인 것으로 간주되는 반면, 링크가 나올 때 링크가 요청되면, 링크가 축어적 URL인 것으로 간주된다. 애플리케이션의 요청된 애플리케이션 데이터의 최대 50%가 수정된 URL과 연관되어 있는 것으로 추정된다.
이와 같이, 일 실시예에서, 하나 이상의 컴퓨터 네트워크 주소들을 식별하는 것의 일부는 수정된 형태를 보여주는 주소들을 네트워크 사이트에 액세스하는 데 사용될 수 있는 사용가능 형태로 변환하는 것을 포함한다. 도 4를 참조하면, 하나의 예시적인 구현에서, 이 변환은 먼저 수정된 URL을 종래의 URL 세그먼트화 방법을 사용하여 성분 부분들로 세그먼트화하는 것(프로세스 동작(400))을 포함한다. 다음에, 이전에 선택되지 않은 성분 부분이 선택되고(프로세스 동작(402)), 선택된 성분과 연관된 미리 정해진 치환 성분(substitute component) 또는 미리 정해진 부가 성분(additional component) 주제가 있는지가 결정된다(프로세스 동작(404)). 있는 경우, 표시된 치환 또는 추가가 선택된 성분에 대해 행해진다(프로세스 동작(406)). 없는 경우, 선택된 성분에 대해 어떤 변경도 행해지지 않는다. 이어서 수정된 URL의 임의의 선택되지 않은 성분이 남아 있는지가 결정된다(프로세스 동작(408)). 그러한 경우, 동작(402 내지 408)이 적절한 방식으로 반복된다. 그렇지 않은 경우, 이제 완전히 변환된 URL이 사용가능 URL로서 지정되고(프로세스 동작(410)), 절차가 종료된다.
수정된 URL과 애플리케이션 데이터에 액세스하기 위해 애플리케이션에 의해 사용되는 대응하는 URL의 비교에 기초하는 것은 물론 통상의 변환을 사용하는 것에 의해 변환 라이브러리(translation library)를 생성하기 위해, 수정된 URL 성분과 연관된 미리 정해진 치환 성분 또는 미리 정해진 부가 성분 주제의 리스트가 기계 변환 방식을 사용하여 발생될 수 있다. 도 5에 도시된 표는 수정된 URL을 변환하는 데 사용될 수 있는 예시적인 문법 규칙들의 세트를 제공한다.
앞서 기술된 정적 URL 및 임베디드 URL에 부가하여, 일 실시예에서, 애플리케이션을 통해 모바일 컴퓨팅 디바이스의 사용자에 의해 액세스되는 URL이 애플리케이션 트래픽 데이터로부터 추출되고 식별된 URL들의 리스트에 포함된다. 게다가, 일 실시예에서, 애플리케이션 데이터 프리페치 서비스는, 동일한 애플리케이션의 다른 사용자들에 대한 URL의 인기도에 기초하여, 식별된 URL들의 리스트에 추가할 URL을 획득한다. 예를 들어, 도 6을 참조하면, 이것의 일 구현은 먼저 애플리케이션 데이터 프리페치 서비스를 이용하여 다른 컴퓨팅 디바이스들 상에서 동작 중인 동일한 애플리케이션에 의해 액세스되고 있는 컴퓨터 네트워크 주소들(예컨대, URL)을 모니터링하는 것(프로세스 동작(600))을 포함한다. 다른 컴퓨팅 디바이스들 상에서 동작 중인 애플리케이션에 의해 미리 정해진 문턱값을 초과하는 빈도수로 액세스되고 있는 하나 이상의 인기있는 컴퓨터 네트워크 주소들이 식별되고(프로세스 동작(602)), 식별된 인기있는 컴퓨터 네트워크 주소들을 통해 액세스가능한 네트워크 사이트 또는 사이트들 상에서 발견되는 애플리케이션 데이터가 프리페치하기 위해 명시된다(프로세스 동작(604)). 이 애플리케이션 데이터가 이어서 다른 식별된 URL과 연관된 애플리케이션 데이터과 함께 프리페치된다(프로세스 동작(606)).
유의할 점은, 어떤 경우에, 애플리케이션이, 애플리케이션 데이터를 페치할 때, 사용자 인증 자격증명을 필요로 한다는 것이다. 이러한 경우에, 사용자의 자격 증명을 이용하여 사용자를 가장(impersonate)하지 않으면 식별된 URL과 연관된 애플리케이션 데이터를 페치하는 것이 불가능할 수 있다. 이와 같이, 애플리케이션 인증 메커니즘(쿠키 시스템 또는 OAuth2 프로토콜 등)이 식별되고 모방될 필요가 있다.
1.1.3
애플리케이션 데이터의 프리페치
앞서 살펴본 바와 같이, 이전에 식별된 애플리케이션 데이터가 프리페치된다. 일 실시예에서, 이것은 식별된 애플리케이션 데이터 모두를 프리페치하는 것을 포함한다. 다른 실시예에서, 식별된 애플리케이션 데이터의 일부만이 프리페치된다.
식별된 애플리케이션 데이터의 일부만을 프리페치하는 경우에, 일 구현은 순위 지정 방식(ranking scheme)을 이용한다. 이 구현에서, 수신된 애플리케이션 트래픽 데이터를 분석하는 것은 복수의 컴퓨터 네트워크 주소들(예컨대, URL)을 식별하는 것을 포함한다. 관련성 있는 애플리케이션 데이터가 획득될 수 있는 네트워크 사이트에 액세스하기 위해 이 주소들 각각이 사용될 수 있다. 주소들이 순위 지정되고, 이어서 식별된 컴퓨터 네트워크 주소들 중 미리 정해진 수의 가장 높은 순위의 컴퓨터 네트워크 주소들에 대응하는 사이트들에서 발견된 애플리케이션 데이터만이 프리페치된다.
식별된 컴퓨터 네트워크 주소들을 순위 지정할 때 몇 가지 순위 지정 인자들이 고려될 수 있다. 일 실시예에서, 각각의 네트워크 주소가 애플리케이션에 의해 액세스되는 빈도수가 결정되고, 주소들이 적어도 부분적으로 주소들이 액세스되는 빈도수에 의해 순위 지정된다. 이 방식에서, 빈도수가 높을수록, 순위가 높다. 다른 실시예에서, 애플리케이션이 식별된 컴퓨터 네트워크 주소들에 액세스하는 시간 순서를 포함하는 액세스 패턴이 결정되고, 주소들이 적어도 부분적으로 시간 순서에 의해 순위 지정된다. 이 경우에, 보다 일찍 액세스된 컴퓨터 네트워크 주소들이 나중에 액세스된 주소들보다 더 높게 순위 지정된다. 또 다른 실시예에서, 식별된 컴퓨터 네트워크 주소들에서 발견되는 텍스트 및 태그들과 연관된 키워드들의 빈도수, 또는 식별된 컴퓨터 네트워크 주소들을 통해 획득가능한 애플리케이션 데이터와 연관된 키워드들의 빈도수, 또는 둘 다가 결정된다. 주소들이 적어도 부분적으로 그의 연관된 키워드들의 빈도수에 의해 순위 지정된다. 여기서, 연관된 키워드들의 빈도수가 높을수록, 주소의 순위가 높다. 유의할 점은 다른 순위 지정 방식들이 또한 이용될 수 있다는 것과, 식별된 컴퓨터 네트워크 주소들 각각에 대한 순위를 설정하기 위해 이 순위 지정 방식들이 단독으로 또는 결합하여 사용될 수 있다는 것이다. 순위 지정 인자를 결합시키기 위한 임의의 적절한 종래의 방법이 이 후자의 작업을 달성하기 위해 이용될 수 있다.
식별된 컴퓨터 네트워크 주소들이 순위 지정되었으면, 그 주소에 의해 액세스된 콘텐츠의 어느 부분이 프리페치될 것인지가 결정된다. 하나의 간단한 실시예에서, 가장 높은 순위의 주소들과 연관된 애플리케이션 데이터가 미리 정해진 바이트 제한(예컨대, 100MB)까지 프리페치된다. 환언하면, 프리페치가 가장 높은 순위의 URL부터 시작될 것이고, 이어서 리스트를 따라 아래로 진행하다가 다운로드된 애플리케이션 데이터의 총량이 미리 정해진 제한에 도달할 때 중단될 것이다.
그렇지만, 하나의 대안의 실시예에서, 애플리케이션 데이터가 프리페치되는 가장 높은 순위의 주소들의 미리 정해진 개수가 하나 이상의 외부 인자에 따라 달라진다. 제한이 아닌 예로서, 이 개수는 이하의 인자들 중 적어도 하나에 기초할 수 있다. 먼저, 모바일 컴퓨팅 디바이스 상에서 이용가능한 남아 있는 배터리 전력이 고려될 수 있다. 일 구현에서, 미리 정해진 개수가 이용가능한 남아 있는 배터리 전력의 양에 정비례하여 보다 높게 설정된다. 고려될 수 있는 다른 인자는 통신 네트워크의 현재 성능의 측정치이다. 일 구현에서, 미리 정해진 개수가 현재 네트워크 성능의 보다 높은 측정치에 정비례하여 보다 높게 설정된다. 또 다른 인자는 연장된 연결 해제의 기간의 예상이다. 일 구현에서, 연장된 연결 해제의 기간이 예상될 때마다 미리 정해진 개수가 보다 높게 설정되는데, 그 이유는 애플리케이션이 이 연장된 기간에 걸쳐 동작하기 위해 보다 많은 애플리케이션 데이터가 필요하게 될 것으로 가정되기 때문이다.
애플리케이션 데이터를 얼마만큼 그리고 언제 프리페치해야 하는지를 결정하는 데 전술한 인자들 중 일부를 구현하기 위해, 일 실시예에서, 애플리케이션 트래픽 데이터를 수신하는 것에 부가하여, 환경 데이터가 또한 모바일 컴퓨팅 디바이스로부터 수신된다. 일 구현에서, 이 환경 데이터는 연결 해제의 기간이 언제 있을 것인지(그리고 가능한 경우 그 기간이 얼마나 길 수 있는지)를 예측한다. 앞서 살펴본 바와 같이, 이 예측 정보는, 애플리케이션 데이터가 예측된 연결 해제의 기간 이전에 제공될 수 있도록, 애플리케이션 데이터 프리페치(및 양)의 스케줄링을 용이하게 하기 위해 사용된다. 유의할 점은 모바일 컴퓨팅 디바이스에 의해 수집되고 제공될 수 있는 환경 데이터의 유형(모바일 디바이스 배터리 상태, 사용자 이동성, 위치, 및 네트워크 이력(Wi-Fi 연결, 셀룰러 연결, 및 연결 해제의 기간을 포함함)), 사용자 데이터(일정표 이벤트 및 이메일을 포함함)는 물론, 연결 해제 기간 및 길이를 추정하는 데 관여되는 논리가 광범위하게 연구되었다는 것이다. 그에 따라, 본원에 기술되는 애플리케이션 데이터 프리페치 실시예의 목적상, 모바일 컴퓨팅 디바이스 환경 데이터의 수집 및 분석을 달성하기 위해 현재 이용가능한 방법들이 이용된다.
1.1.4
프리페치된 애플리케이션 데이터의 제공
이전에 기술된 바와 같이, 모바일 컴퓨팅 디바이스가 통신 네트워크에 연결되어 있는 시간 동안 이용가능한 프리페치된 애플리케이션 데이터의 적어도 일부가 그 디바이스에 제공된다. 이상적으로는, 애플리케이션 데이터가 모바일 컴퓨팅 디바이스에 마지막으로 제공된 이후에 프리페치된 애플리케이션 데이터 모두가 제공될 것이다. 그렇지만, 잠재적인 다가오는 연결 해제의 기간을 위해 애플리케이션 데이터가 얼마만큼 필요하게 되는지 및 그것이 언제 제공되어야 하는지를 예상하기 위해 전술한 조치들이 취해지는 경우, 이는 추정치에 불과하다. 따라서, 때로는 마지막으로 페치되는 프리페치된 애플리케이션 데이터 모두가 이용가능한 연결의 기간 동안 제공될 수 있는 것은 아니다. 이러한 경우에, 이용가능한 데이터의 적어도 일부가 제공되고, 이상적으로는 가능한 한 많은 데이터가 제공된다.
유의할 점은, 모바일 컴퓨팅 디바이스로부터 수신되는 환경 데이터를 분석하는 것으로부터 알게 될 수 있는 것들 중 하나가, 모바일 컴퓨팅 디바이스가 연결의 기간을 이용할 수 있는 장소에서, 디바이스가 전형적으로 언제 그리고 어디서 발견될 것인지라는 것이다. 이것은 Wi-Fi 연결의 기간이 예상되는 경우에 특히 가치가 크다. 종종, 데이터가 Wi-Fi 연결을 통해 감소된 비용으로 모바일 컴퓨팅 디바이스로 다운로드될 수 있다. 예를 들어, Wi-Fi 연결을 통해 데이터를 다운로드하는 것은 때때로 무료이다. 이를 위해, 일 실시예에서, 모바일 컴퓨팅 디바이스가 통신 네트워크에 연결되어 있는 시간 동안 프리페치된 애플리케이션 데이터의 적어도 일부를 그 디바이스에 제공하는 작업은 모바일 컴퓨팅 디바이스의 사용자에 대한 애플리케이션 데이터를 수신하는 비용을 감소시키기 위해, 애플리케이션 데이터를 Wi-Fi 연결의 기간 동안 제공하는 것을 포함한다. 이것은 이러한 Wi-Fi 연결의 기간이 언제 그리고 어디서 있을 것인지의 전술한 예측에 의해 용이하게 된다.
또한 유의할 점은, 연결의 기간의 장소가 예측될 수 있기 때문에, 프리페치된 애플리케이션 데이터가 편리하게도 모바일 통신 디바이스가 이러한 기간 동안 통신 네트워크를 통해 액세스하는 네트워크 사이트에 사전-스테이징될 수 있다는 것이다. 예를 들어, 통신 네트워크는 Wi-Fi 네트워크일 수 있고, 장소는 Wi-Fi 핫스폿일 수 있다. 이것은 프리페치된 애플리케이션 데이터를 제공하는 효율적인 방식일 뿐만 아니라, 비용 효율적인 방식일 수 있다. 도 1을 또다시 참조하면, 앞서 기술된 선택적인 사전-스테이징 사이트(122)는 모바일 컴퓨팅 디바이스(100)와 클라우드(104) 사이에 파선 박스로 도시되어 있다. 유의할 점은, 아키텍처의 일 실시예에서, 통신 네트워크(102)가 다수의 상이한 통신 네트워크들(도시되지 않음)로 분할될 수 있다는 것이다. 예를 들어, 클라우드(104)를 선택적인 사전-스테이징 사이트(122)에 연결시키는 통신 네트워크는 한 유형의 통신 네트워크(예컨대, DSL)일 수 있는 반면, 선택적인 사전-스테이징 사이트(122)를 모바일 컴퓨팅 디바이스(100)에 연결시키는 통신 네트워크는 상이한 유형의 통신 네트워크(예컨대, Wi-Fi)일 수 있다. 선택적인 사전-스테이징 사이트를 갖지 않는 실시예에서도, 애플리케이션 데이터 트래픽(그리고 어쩌면 환경 데이터)을 애플리케이션 데이터 프리페치 서비스로 송신하기 위해 모바일 컴퓨팅 디바이스에 의해 사용되는 통신 네트워크의 유형은 한 유형의 통신 네트워크(예컨대, 셀룰러)일 수 있는 반면, 프리페치된 애플리케이션 데이터를 모바일 컴퓨팅 디바이스로 송신하기 위해 애플리케이션 데이터 프리페치 서비스에 의해 사용되는 통신 네트워크는 상이한 통신 네트워크(예컨대, Wi-Fi)일 수 있다. 게다가, 애플리케이션 데이터의 전술한 사전-스테이징과 관련하여, 프리페치된 애플리케이션 데이터가 하나 이상의 파일들에(예컨대, 압축된 zip 파일에) 패키징되고 이어서 사전-스테이징될 수 있다. 예를 들어, 다운로드되는 프리페치된 애플리케이션의 양이 미리 정해진 양의 바이트(예컨대, 100MB)로 제한되어 있는 실시예에서, 그 양의 데이터가 파일에 패키징되고 다운로드를 위해 사전-스테이징된다.
또 다른 실시예에서, 애플리케이션 데이터 프리페치 서비스가 예상되는 연결의 기간 동안 애플리케이션 데이터를 모바일 컴퓨팅 디바이스로 푸시하는 것에 부가하여, 프리페치된 애플리케이션 데이터는 또한, 데이터를 제공하라는 모바일 컴퓨팅 디바이스로부터의 명령의 수신에 응답하여, 모바일 컴퓨팅 디바이스로 송신될 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스의 사용자는 자신이 예기치 않게 오프라인될 것임을 알아챌 수 있고 미연에 애플리케이션 데이터를 다운로드하고자 할 수 있다. 그렇게 하기 위해, 사용자는, 예컨대, 모바일 컴퓨팅 디바이스의 터치 스크린 상에서 프리페치된 애플리케이션 데이터 다운로드 아이콘을 선택하는 것에 의해, 전술한 명령이 모바일 컴퓨팅 디바이스로부터 종래의 사용자 인터페이스를 통해 송신되게 할 것이다.
1.2
프리페치된 애플리케이션 데이터 관리자
도 1을 또다시 참조하면, 모바일 컴퓨팅 디바이스(100) 상에 존재하는 프리페치된 애플리케이션 데이터 관리자(112)는 2 개의 상위 레벨 컴포넌트 - 즉, 수집 및 저장 모듈(118)과 가상 연결-네트워크 인터페이스 모듈(120) - 를 포함한다. 수집 및 저장 모듈(118)은 일반적으로 이전에 기술된 애플리케이션 트래픽 데이터(는 물론, 일 실시예에서, 모바일 디바이스 환경 데이터)를 수집하고 저장한다. 모듈(118)은 또한 애플리케이션 트래픽 데이터(그리고 어쩌면 환경 데이터)를 애플리케이션 데이터 프리페치 서비스(108)에 주기적으로 제공하는 것을 담당한다. 가상 연결-네트워크 인터페이스 모듈(120)은 일반적으로 저장된 애플리케이션 데이터를 연결 해제의 기간 동안 애플리케이션이 이용할 수 있게 한다.
도 7a 및 도 7b는 통신 네트워크로부터의 연결 해제의 기간 동안 프리페치된 애플리케이션 데이터를 애플리케이션에 제공하는 프로세스의 일반적인 실시예를 간략히 나타낸 것이고, 여기서 애플리케이션은 모바일 컴퓨팅 디바이스 상에서 동작 중이고, 프로세스는 모바일 컴퓨팅 디바이스에 의해 실행가능한 프로그램 모듈들을 가지는 컴퓨터 프로그램을 통해 구현된다. 프로세스는 애플리케이션 트래픽 데이터가 수집되어 모바일 컴퓨팅 디바이스에 저장되는 것(프로세스 동작(700))으로 시작한다. 이전에 기술된 바와 같이, 애플리케이션 트래픽 데이터는 애플리케이션에 관련된 애플리케이션 데이터가 획득될 수 있는 네트워크 사이트를 명시하는 적어도 하나의 컴퓨터 네트워크 주소들을 포함한다. 저장된 애플리케이션 트래픽 데이터는 통신 네트워크를 통해 서비스(이전에 기술된 애플리케이션 데이터 프리페치 서비스 등)에 주기적으로 제공된다(프로세스 동작(704)). 그에 응답하여, 프리페치된 애플리케이션 데이터가 통신 네트워크를 통해 서비스 또는 중간 사전-스테이징 사이트로부터 수신되고 저장된다(프로세스 동작(708)). 프리페치된 애플리케이션 데이터는 연결 해제의 기간 동안 동작들을 가능하게 하기 위해 애플리케이션이 사용하는 데이터를 나타낸다. 일 구현에서, 이전에 기술된 수집 및 저장 모듈이 전술한 프로세스 동작들을 담당한다. 다음에 애플리케이션이 연결 해제의 기간 동안 모바일 컴퓨팅 디바이스 상에서 동작 중인지가 결정된다(프로세스 동작(710)). 아니오인 경우, 모바일 컴퓨팅 디바이스는 연결 해제의 기간이 있는지를 계속하여 모니터링한다. 그렇지만, 애플리케이션이 연결 해제의 기간 동안 모바일 컴퓨팅 디바이스 상에서 동작 중인 것으로 결정되는 경우, 애플리케이션을 위해 가상 연결-네트워크 인터페이스가 시뮬레이트된다(프로세스 동작(712)). 가상 연결-네트워크 인터페이스는 애플리케이션 데이터에 대한 애플리케이션으로부터의 요청을 인터셉트한다(프로세스 동작(714)). 이어서 애플리케이션에 제공하기 위해 이용가능한, 인터셉트된 요청에 대응하는 저장된 프리페치된 데이터가 있는지가 결정된다(프로세스 동작(716)). 있는 경우, 인터셉트된 요청에 대응하는 저장된 프리페치된 애플리케이션 데이터가 애플리케이션에 제공된다(프로세스 동작(718)). 그렇지만, 인터셉트된 요청에 대응하는 프리페치된 애플리케이션 데이터가 저장되지 않은 경우, 가상 연결-네트워크 인터페이스는 이용가능하지 않음 메시지를 발행한다(프로세스 동작(720)). 일 구현에서, 이용가능하지 않음 메시지는 HTTP 404 메시지이다. 다음에 애플리케이션이 연결 해제의 기간 동안 모바일 컴퓨팅 디바이스 상에서 여전히 동작 중인지가 결정된다(프로세스 동작(722)). 그러한 경우, 프로세스 동작(714 내지 722)이 반복된다. 그렇지 않은 경우, 프로세스가 종료된다. 일 구현에서, 이전에 기술된 가상 연결-네트워크 인터페이스 모듈은 프로세스 동작(710)부터 시작하는 전술한 동작들을 담당한다. 또한 유의할 점은, 전술한 이용가능하지 않음 메시지와 관련하여, 대안의 실시예에서, 인터셉트된 요청에 대응하는 프리페치된 애플리케이션 데이터가 저장되지 않았을 때, 이용가능하지 않음 메시지가 발행되지 않는다. 그 대신에, 가상 연결-네트워크 인터페이스 모듈은 애플리케이션이 URL이 페치되는 중이지만 네트워크가 단지 느린 것으로 생각하게 만든다. 애플리케이션이 전형적으로 네트워크 통신과 관련하여 비동기적 방식으로 작성되기 때문에, 이것이 사용자 경험을 방해해서는 안된다. 그에 부가하여, 이는 심지어 애플리케이션이 충돌(crash)하거나 오류 메시지를 사용자에게 발행하는 것을 회피할 수 있는데, 그 이유는 애플리케이션이 이용가능하지 않음 메시지를 예상하고 있지 않기 때문이다.
유의할 점은, 이전에 기술된 모바일 컴퓨팅 디바이스 환경 데이터가 또한 애플리케이션 데이터 프리페치 서비스에 공급되는 실시예에서, 전술한 프로세스가 환경 데이터를 수집하고 모바일 컴퓨팅 디바이스에 저장하는 것(프로세스 동작(702))을 포함하도록 수정된다는 것이다. 그에 부가하여, 환경 데이터는 통신 네트워크를 통해 서비스(이전에 기술된 애플리케이션 데이터 프리페치 서비스 등)에 주기적으로 제공된다(프로세스 동작(706)). 이 2가지 동작의 선택적인 특성이 도 7a에서 파선 박스로 표시되어 있다.
추가로 유의할 점은, 수집 및 저장 모듈과 가상 연결-네트워크 인터페이스 모듈 둘 다의 설계에서, 이 모듈들이 애플리케이션 기능 또는 연관된 애플리케이션 서버로부터의 기여에 대한 수정을 필요로 하지 않는 것이 요망되었다는 것이다. 이하의 설명에서 알게 될 것인 바와 같이, 이것이 달성되었다.
1.2.1
애플리케이션 트래픽 데이터의 수집 및 저장
이전에 살펴본 바와 같이, 애플리케이션 트래픽 데이터가 수집되고 모바일 컴퓨팅 디바이스에 저장된다. 일 실시예에서, 이것은 전술한 애플리케이션 트래픽 데이터를 인터셉트하고 모니터링하며 이 데이터를 애플리케이션 데이터 프리페치 서비스에 주기적으로 피드하는 로컬 프록시 서버(local proxy server)를 모바일 컴퓨팅 디바이스 상에서 실행하는 것에 의해 달성된다. 일 구현에서, 애플리케이션 트래픽 데이터는 적어도 부분적으로 URL HTTP GET 요청을 기록하는 것에 의해 수집된다. 로컬 프록시 서버는 사용자 인터페이스 없이 백그라운드 프로세스로서 실행될 수 있도록 설계되어 있는 Telerik Corporation의 FiddlerCore.net 클래스 라이브러리(class library)를 사용하여 구현될 수 있다.
애플리케이션 데이터 프리페치 서비스가, 비텍스트 및 비애플리케이션 MIME 타입 페이로드에 의해 생성된 불필요한 오버헤드를 없애기 위해 적절한 필터들을 사용하는 것에 의해, 애플리케이션 트래픽 데이터를 분석할 때 부과되는 부하를 최소화할 수 있다는 것이 이전에 기술되었다. 대안적으로, 이 필터링은, 애플리케이션 트래픽 데이터가 애플리케이션 데이터 프리페치 서비스로 송신되기 전에, 그 대신에 모바일 컴퓨팅 디바이스 상에 존재하는 프리페치된 애플리케이션 데이터 관리자에 의해 달성될 수 있다.
그에 부가하여, 애플리케이션 데이터 프리페치 서비스가 컴퓨터 네트워크 주소들(예컨대, URL)을 식별하기 위해 애플리케이션 트래픽 데이터를 분석한다는 것이 이전에 기술되었다. 그렇지만, 대안의 실시예에서, 이 기능은 그 대신에 모바일 컴퓨팅 디바이스 상에 존재하는 프리페치된 애플리케이션 데이터 관리자에 의해 달성될 것이다. 이 대안의 실시예에서, 프리페치된 애플리케이션 데이터 관리자는 식별된 URL들 모두를 열거하는 URL 요약을, 애플리케이션 트래픽 데이터 대신에, 애플리케이션 데이터 프리페치 서비스로 송신할 것이다.
1.2.2
가상 연결-네트워크 인터페이스
또한 이전에 살펴본 바와 같이, 가상 연결-네트워크 인터페이스 모듈은 저장된 프리페치된 애플리케이션 데이터를 통신 네트워크로부터의 연결 해제의 기간 동안 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션이 이용할 수 있게 한다. 일 실시예에서, 이것은 애플리케이션 요청을 인터셉트하고 그의 캐시에 있는 프리페치된 애플리케이션 데이터를 다시 피드하는 캐싱 기능을 갖는 로컬 프록시 서버를 사용하여 달성된다. 로컬 프록시 서버를 구현하는 하나의 방식은 전술한 Telerik Corporation의 FiddlerCore.net 클래스 라이브러리를 사용하는 것이다.
그렇지만, 애플리케이션들 모두가, 오프라인일 때, 이전의 애플리케이션 데이터를 디스플레이하도록 설계되어 있는 것은 아니다. 사실, 일부 애플리케이션은, 모바일 컴퓨팅 디바이스가 연결 해제되어 있음을 검출할 때, 어떤 내용도 디스플레이하지 않을 것이다. 애플리케이션 코드를 수정함이 없이, 이러한 유형의 애플리케이션들에서의 이 제한을 우회하기 위해, 가상 연결-네트워크 인터페이스 모듈은 디바이스 연결을 가상으로 만든다(fake). 일 구현에서, 이것은 모바일 컴퓨팅 디바이스의 운영 체제가 연결 해제의 기간 동안 연결 상태를 애플리케이션에 표시하기 위해 이용하는 특징을 디스에이블시키는 것에 의해 달성된다. 이 특징은 이어서 연결의 기간 동안 다시 인에이블될 것이고, 가상 연결-네트워크 인터페이스가 디스에이블된다.
2.0
예시적인 동작 환경
본원에 기술되는 애플리케이션 데이터 프리페치 실시예들은 많은 유형의 범용 또는 특수 목적 컴퓨팅 시스템 환경들 또는 구성들 내에서 동작한다. 도 8은, 본원에 기술되는 바와 같이, 애플리케이션 데이터 프리페치의 다양한 실시예들 및 요소들이 구현될 수 있는 범용 컴퓨터 시스템의 간략화된 예를 나타낸 것이다. 유의할 점은, 도 8에 도시된 간략화된 컴퓨팅 디바이스(10)에서 파선 또는 점선으로 표현되는 임의의 박스들이 간략화된 컴퓨팅 디바이스의 대안의 실시예들을 나타낸다는 것이다. 이하에서 기술하는 바와 같이, 이 대안의 실시예들 중 일부 또는 전부는 본 문서 전체에 걸쳐 기술되는 다른 대안의 실시예들과 결합하여 사용될 수 있다. 간략화된 컴퓨팅 디바이스(10)는 전형적으로, 개인용 컴퓨터(PC), 서버 컴퓨터, 핸드헬드 컴퓨팅 디바이스, 랩톱 또는 모바일 컴퓨터, 셀폰 및 PDA(personal digital assistant)와 같은 통신 디바이스, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 그리고 오디오 또는 비디오 미디어 플레이어와 같은, 적어도 어떤 최소한의 컴퓨팅 능력을 가지는 디바이스들에서 발견된다.
디바이스가 본원에 기술되는 애플리케이션 데이터 프리페치 실시예들을 구현할 수 있게 하기 위해, 디바이스는 기본적인 컴퓨팅 동작들을 가능하게 하기에 충분한 컴퓨팅 능력 및 시스템 메모리를 가지고 있어야만 한다. 상세하게는, 도 8에 도시된 간략화된 컴퓨팅 디바이스(10)의 컴퓨팅 능력은 일반적으로 하나 이상의 처리 유닛(들)(12)에 의해 예시되어 있고, 또한 하나 이상의 GPU(graphics processing unit)들(14)을 포함할 수 있으며, 이들 중 어느 하나 또는 둘 다는 시스템 메모리(16)와 통신한다. 유의할 점은 간략화된 컴퓨팅 디바이스(10)의 처리 유닛(들)(12)이 특수 마이크로프로세서들(DSP(digital signal processor), VLIW(very long instruction word) 프로세서, FPGA(field-programmable gate array), 또는 다른 마이크로 컨트롤러 등)일 수 있거나, 하나 이상의 처리 코어들을 가지는 종래의 CPU(central processing unit)일 수 있다는 것이다.
그에 부가하여, 도 8에 도시된 간략화된 컴퓨팅 디바이스(10)는 또한 통신 인터페이스(18)와 같은 다른 컴포넌트들을 포함할 수 있다. 간략화된 컴퓨팅 디바이스(10)는 또한 하나 이상의 종래의 컴퓨터 입력 디바이스들(20)(예컨대, 포인팅 디바이스, 키보드, 오디오(예컨대, 음성) 입력 디바이스, 비디오 입력 디바이스, 햅틱 입력 디바이스, 제스처 인식 디바이스, 유선 또는 무선 데이터 전송을 수신하는 디바이스 등)을 포함할 수 있다. 간략화된 컴퓨팅 디바이스(10)는 또한 하나 이상의 종래의 컴퓨터 출력 디바이스들(22)(예컨대, 디스플레이 디바이스(들)(24), 오디오 출력 디바이스, 비디오 출력 디바이스, 유선 또는 무선 데이터 전송을 전송하는 디바이스 등)과 같은 다른 선택적인 컴포넌트들을 포함할 수 있다. 범용 컴퓨터에 대한 전형적인 통신 인터페이스(18), 입력 디바이스(20), 출력 디바이스(22), 및 저장 디바이스(26)가 본 기술 분야의 통상의 기술자에게 널리 공지되어 있고, 본원에서 상세히 기술되지 않을 것임에 유의한다.
도 8에 도시된 간략화된 컴퓨팅 디바이스(10)는 또한 각종의 컴퓨터 판독가능 매체를 포함할 수 있다. 컴퓨터 판독가능 매체는 저장 디바이스(26)를 통해 컴퓨터(10)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있고, 컴퓨터 판독가능 또는 컴퓨터 실행가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같은 정보를 저장하기 위한, 이동식(28) 및/또는 비이동식(30) 중 어느 하나인 휘발성 및 비휘발성 매체 둘 다를 포함할 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함한다. 컴퓨터 저장 매체는 DVD(digital versatile disk), CD(compact disc), 플로피 디스크, 테이프 드라이브, 하드 드라이브, 광 드라이브, 고상 메모리 디바이스(solid state memory device), RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), 플래시 메모리 또는 다른 메모리 기술, 자기 카세트, 자기 테이프, 자기 디스크 저장소, 또는 다른 자기 저장 디바이스와 같은 유형적(tangible) 컴퓨터 판독가능 또는 머신 판독가능 매체 또는 저장 디바이스를 지칭한다.
컴퓨터 판독가능 또는 컴퓨터 실행가능 명령어, 데이터 구조, 프로그램 모듈 등과 같은 정보의 유지는 또한 하나 이상의 피변조 데이터 신호(modulated data signal) 또는 반송파, 또는 다른 전송 메커니즘 또는 통신 프로토콜을 인코딩하기 위해 (컴퓨터 저장 매체가 아니라) 각종의 전술한 통신 매체 중 임의의 것을 사용하는 것에 의해 달성될 수 있고, 임의의 유선 또는 무선 정보 전달 메커니즘을 포함할 수 있다. "피변조 데이터 신호" 또는 "반송파"라는 용어가 일반적으로 신호의 특성들 중 하나 이상이 정보를 그 신호에 인코딩하는 방식으로 설정되거나 변경되는 신호를 지칭한다는 것에 유의한다. 예를 들어, 통신 매체는 하나 이상의 피변조 데이터 신호를 전달하는 유선 네트워크 또는 직접 유선 연결(direct-wired connection)과 같은 유선 매체, 그리고 하나 이상의 피변조 데이터 신호 또는 반송파를 전송 및/또는 수신하기 위한 음향, RF(radio frequency), 적외선, 레이저, 및 다른 무선 매체와 같은 무선 매체를 포함할 수 있다.
게다가, 본원에 기술되는 다양한 애플리케이션 데이터 프리페치 실시예들 중 일부 또는 전부, 또는 그의 일부분들을 구현하는 소프트웨어, 프로그램, 및/또는 컴퓨터 프로그램 제품이 컴퓨터 실행가능 명령어 또는 다른 데이터 구조의 형태로 컴퓨터 판독가능 또는 머신 판독가능 매체 또는 저장 디바이스 및 통신 매체의 임의의 원하는 조합에 저장되거나, 그로부터 수신, 전송, 또는 판독될 수 있다.
마지막으로, 본원에 기술되는 애플리케이션 데이터 프리페치 실시예들은 게다가 일반적으로 컴퓨팅 디바이스에 의해 실행되는, 프로그램 모듈과 같은, 컴퓨터 실행가능 명령어와 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정의 작업을 수행하거나 특정의 추상 데이터 형식(abstract data type)을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 애플리케이션 데이터 프리페치 실시예들은 또한 작업들이 하나 이상의 원격 처리 디바이스들에 의해 수행되는 분산 컴퓨팅 환경에서 또는 하나 이상의 통신 네트워크들을 통해 연결되어 있는 하나 이상의 디바이스들의 클라우드 내에서 실시될 수 있다. 분산 컴퓨팅 환경에서는, 프로그램 모듈이 매체 저장 디바이스를 비롯한 로컬 및 원격 컴퓨터 저장 매체 둘 다에 위치될 수 있다. 게다가, 전술한 명령어는, 부분적으로 또는 전체적으로, 프로세서를 포함할 수 있거나 그렇지 않을 수 있는 하드웨어 논리 회로로서 구현될 수 있다.
3.0
다른 실시예들
애플리케이션 트래픽 데이터의 분석은 물론, 애플리케이션 데이터의 프리페치 및 제공이 이상의 설명에서 클라우드 기반 애플리케이션 데이터 프리페치 서비스에 의해 달성되는 것으로 기술되었지만, 대안의 실시예에서, 이 작업들이 독립형 모바일 컴퓨팅 디바이스에서 달성될 수 있을 것이다. 이 대안의 실시예에서, 이전에 기술된 애플리케이션 데이터 식별 및 프리페치 모듈과, 프리페치된 데이터 제공 모듈은 클라우드 기반 서비스에 존재하는 것이 아니라 모바일 컴퓨팅 디바이스에 존재할 것이다. 이전에 기술된 특징들 대부분이, 애플리케이션 데이터를 모바일 컴퓨팅 디바이스로 송신하는 것에 관여된 것들을 제외하고는, 이 독립형 실시예에도 적용될 것이다. 그에 부가하여, 모바일 컴퓨팅 디바이스를 애플리케이션 데이터 프리페치 서비스에 연결시키는 통신 네트워크가 필요하게 되지 않을 것이지만, 애플리케이션 데이터가 프리페치되는 네트워크 사이트들과 통신하기 위해 네트워크가 여전히 사용될 것이다.
이상의 내용을 바탕으로, 도 9a 및 도 9b는 모바일 컴퓨팅 디바이스가 통신 네트워크로부터의 연결 해제의 기간 동안 모바일 컴퓨팅 디바이스 상에서 동작 중인 애플리케이션에 의한 사용을 위한 애플리케이션 데이터를 프리페치하는 프로세스의 일반적인 실시예의 개요를 제공한다. 프로세스는 애플리케이션 트래픽 데이터가 수집되어 모바일 컴퓨팅 디바이스에 저장되는 것(프로세스 동작(900))으로 시작한다. 이전에 기술된 바와 같이, 애플리케이션 트래픽 데이터는 애플리케이션에 관련된 애플리케이션 데이터가 획득될 수 있는 네트워크 사이트를 명시하는 적어도 하나의 컴퓨터 네트워크 주소들을 포함한다. 통신 네트워크로부터의 연결 해제의 기간 동안 애플리케이션의 동작을 가능하게 하기 위해 프리페치되어야 하는 애플리케이션 데이터를 식별하기 위해 애플리케이션 트래픽 데이터가 이어서 분석된다(프로세스 동작(904)). 식별된 애플리케이션 데이터가 이어서 프리페치되고 저장된다(프로세스 동작(906)). 다음에, 애플리케이션이 연결 해제의 기간 동안 모바일 컴퓨팅 디바이스 상에서 동작 중인지가 결정된다(프로세스 동작(908)). 아니오인 경우, 모바일 컴퓨팅 디바이스는 연결 해제의 기간이 있는지를 계속하여 모니터링한다. 그렇지만, 애플리케이션이 연결 해제의 기간 동안 모바일 컴퓨팅 디바이스 상에서 동작 중인 것으로 결정되는 경우, 애플리케이션을 위해 가상 연결-네트워크 인터페이스가 시뮬레이트된다(프로세스 동작(910)). 가상 연결-네트워크 인터페이스는 애플리케이션 데이터에 대한 애플리케이션으로부터의 요청을 인터셉트한다(프로세스 동작(912)). 이어서 애플리케이션에 제공하기 위해 이용가능한, 인터셉트된 요청에 대응하는 저장된 프리페치된 데이터가 있는지가 결정된다(프로세스 동작(914)). 있는 경우, 인터셉트된 요청에 대응하는 저장된 프리페치된 애플리케이션 데이터가 애플리케이션에 제공된다(프로세스 동작(916)). 그렇지만, 인터셉트된 요청에 대응하는 프리페치된 애플리케이션 데이터가 저장되지 않은 경우, 가상 연결-네트워크 인터페이스는 이용가능하지 않음 메시지를 발행한다(프로세스 동작(918)). 다음에 애플리케이션이 연결 해제의 기간 동안 모바일 컴퓨팅 디바이스 상에서 여전히 동작 중인지가 결정된다(프로세스 동작(920)). 그러한 경우, 프로세스 동작(912 내지 920)이 반복된다. 그렇지 않은 경우, 프로세스가 종료된다.
유의할 점은 전술한 독립형 실시예가 또한 이전에 기술된 환경 데이터를 수집하고 사용할 수 있다는 것이다. 이러한 경우에, 전술한 프로세스가 환경 데이터를 수집하고 저장하는 것(프로세스 동작(902))을 포함하도록 수정된다. 비독립형 실시예들에서와 같이, 환경 데이터는 연결 해제의 기간이 언제 있을 것인지 그리고 어쩌면 그 기간이 얼마나 길 수 있는지를 예측할 수 있다. 이 예측 정보는, 애플리케이션 데이터 프리페치가 예측된 연결 해제의 기간 이전에 행해질 수 있도록, 애플리케이션 데이터 프리페치(및 양)의 스케줄링을 용이하게 하기 위해 사용된다. 그에 부가하여, 환경 데이터는 디바이스가 전형적으로 모바일 컴퓨팅 디바이스가 연결의 기간을 이용할 수 있는 장소에서 언제 그리고 어디에서 발견될 것인지를 예측하는 데 사용될 수 있다. 이전에 기술된 바와 같이, 이것은 Wi-Fi 연결의 기간이 예상되는 경우에 특히 가치가 크다. 종종, 데이터가 Wi-Fi 연결을 통해 감소된 비용으로 또는 심지어 무료로 모바일 컴퓨팅 디바이스로 다운로드될 수 있다. 이와 같이, 애플리케이션 데이터를 프리페치하는 비용이 감소되거나 없어질 수 있다.
추가로 유의할 점은, 이상의 설명이 네트워크 인터페이스를 가상으로 만들고 애플리케이션 요청을 인터셉트하며 요청(있는 경우)에 적용가능한 저장된 애플리케이션 데이터를 제공하기 위해 가상 연결-네트워크 인터페이스를 이용하는 것을 기술하였지만, 어떤 애플리케이션들에 대해 사용될 수 있는 대안의 실시예가 있다는 것이다. 어떤 애플리케이션들에서, 프리페치된 애플리케이션 데이터를 애플리케이션의 전용 캐시에 곧바로 저장하는 것이 가능하다. 이것이 동작하는 이유는 이 애플리케이션들이 부가의 애플리케이션 데이터를 요청하기 전에 캐싱된 데이터가 있는지 검사하기 때문이다.
그에 부가하여 유의할 점은 모바일 컴퓨팅 디바이스 또는 모바일 애플리케이션 플랫폼에 대한 애플리케이션의 개발자가 그의 임베디드 URL 내용이 용이하게 추출될 수 있도록 할 수 있다는 것이다. URL은 또한 광고 콘텐츠를 포함할 수 있고, 이는 광고 액세스를 저장하고 광고 기반 애플리케이션 데이터를 프리페치하는 방법을 구현하는 것에 의해 사용자가 오프라인일 때에도 수익의 창출을 용이하게 한다.
마지막으로, 유의할 점은 본 설명 전체에 걸쳐 전술한 실시예들의 일부 또는 전부가 부가의 혼성 실시예를 형성하기 위해 원하는 임의의 조합으로 사용될 수 있다는 것이다. 그에 부가하여, 발명 요지가 구조적 특징들 및/또는 방법 동작들과 관련하여 기술되어 있지만, 첨부된 청구범위에 한정되어 있는 발명 요지가 기술된 구체적인 특징들 또는 동작들로 꼭 제한되는 것은 아니라는 것을 잘 알 것이다. 오히려, 이상에서 기술한 특정의 특징들 및 동작들은 청구항들을 구현하는 예시적인 형태로서 개시되어 있다.
Claims (16)
- 통신 네트워크로부터의 연결 해제(disconnectivity)의 기간 동안 모바일 컴퓨팅 디바이스 상에 동작하는 애플리케이션에 의한 사용을 위하여 상기 모바일 컴퓨팅 디바이스에 애플리케이션 데이터를 푸시(push)하는 컴퓨터 구현 프로세스로서,
다음의 프로세스 동작들을 수행하기 위해 하나 이상의 컴퓨팅 디바이스를 사용하는 것을 포함하며, 상기 프로세스 동작들은,
애플리케이션 트래픽 데이터를 상기 모바일 컴퓨팅 디바이스로부터 수신하는 프로세스 동작 - 상기 애플리케이션 트래픽 데이터는, 상기 애플리케이션에 관련된 애플리케이션 데이터가 획득될 수 있는 네트워크 사이트를 명시하는 적어도 하나의 컴퓨터 네트워크 주소를 포함함 -:
상기 통신 네트워크로부터의 연결 해제의 기간 동안 상기 애플리케이션의 동작을 인에이블하기 위해 프리페치되어야 하는 상기 애플리케이션 데이터를 식별하기 위해 상기 수신된 애플리케이션 트래픽 데이터를 분석하는 프로세스 동작;
상기 모바일 컴퓨팅 디바이스로부터 모바일 컴퓨팅 디바이스 환경 데이터를 수신하는 프로세스 동작 - 상기 모바일 컴퓨팅 디바이스 환경 데이터는, 적어도 언제 연결 해제의 기간이 발생할 것인지 그리고 그 기간이 얼마나 길 것인지를 예측함 -;
애플리케이션 데이터의 프리페칭을 스케쥴링하고, 상기 애플리케이션 데이터의 적어도 일부를 연결 해제의 예측된 기간 전에 상기 모바일 컴퓨팅 디바이스에 제공하는 프로세스 동작 - 상기 제공되는 애플리케이션 데이터의 양은, 연결 해제의 기간의 예측된 길이(length)에 적어도 부분적으로 기초함 -;
상기 식별된 애플리케이션 데이터를 프리페칭하는 프로세스 동작; 및
상기 모바일 컴퓨팅 디바이스에 의한 저장을 위하여, 상기 모바일 컴퓨팅 디바이스가 통신 네트워크에 연결되어 있을 때 상기 프리페치된 애플리케이션 데이터의 적어도 일부를 상기 모바일 컴퓨팅 디바이스에 한 회 이상의 스케쥴링된 시간에 제공하는 프로세스 동작
을 포함하는 것인 컴퓨터 구현 프로세스. - 제1항에 있어서, 상기 관련된 애플리케이션 데이터를 식별하기 위해 상기 수신된 애플리케이션 트래픽 데이터를 분석하는 프로세스 동작은, 하나 이상의 컴퓨터 네트워크 주소 - 상기 하나 이상의 컴퓨터 네트워크 주소 각각은, 관련된 애플리케이션 데이터가 획득될 수 있는 네트워크 사이트에 액세스하기 위해 사용될 수 있음 - 를 식별하는 동작을 포함하는 것인 컴퓨터 구현 프로세스.
- 제2항에 있어서, 상기 하나 이상의 컴퓨터 네트워크 주소를 식별하는 동작은, 상기 애플리케이션에서 하드코딩된 하나 이상의 컴퓨터 네트워크 주소를 식별하는 동작을 포함하는 것인 컴퓨터 구현 프로세스.
- 제3항에 있어서, 상기 하나 이상의 컴퓨터 네트워크 주소를 식별하는 동작은, 상기 식별된 하드코딩된 컴퓨터 네트워크 주소를 이용하여 액세스할 수 있는 네트워크 사이트 또는 사이트들에서 발견된 하나 이상의 보조(supplemental) 컴퓨터 네트워크 주소를 식별하는 동작을 더 포함하는 것인 컴퓨터 구현 프로세스.
- 제4항에 있어서, 상기 하나 이상의 컴퓨터 네트워크 주소를 식별하는 동작은, 상기 식별된 보조 컴퓨터 네트워크 주소를 이용하여 액세스할 수 있는 네트워크 사이트 또는 사이트들에서 발견된 하나 이상의 추가 컴퓨터 네트워크 주소를 식별하는 동작을 더 포함하는 것인 컴퓨터 구현 프로세스.
- 제2항에 있어서, 컴퓨터 네트워크 주소는 수정된 형태일 수 있고, 상기 수정된 형태는, 네트워크 사이트에 액세스하기 위하여 상기 애플리케이션에 의하여 직접 사용되지 않는 임의의 형태이며,
상기 하나 이상의 컴퓨터 네트워크 주소를 식별하는 프로세스 동작은, 수정된 형태를 나타내는 각 식별된 컴퓨터 네트워크 주소를, 네트워크 사이트에 액세스하기 위하여 사용될 수 있는 사용가능한 형태로 바꾸는(translate) 동작을 포함하는 것인 컴퓨터 구현 프로세스. - 제1항에 있어서,
상기 컴퓨터 네트워크 주소가 다른 컴퓨팅 디바이스들 상에서 동작하는 동일한 애플리케이션에 의해 액세스되는 것을 모니터링하는 프로세스 동작;
하나 이상의 인기있는(popular) 컴퓨터 네트워크 주소가 다른 컴퓨팅 디바이스들 상에서 동작하는 동일한 애플리케이션에 의해 미리 정해진 문턱값을 초과하는 빈도수로 액세스되는 것을 식별하는 프로세스 동작;
통신 네트워크로부터의 연결 해제의 기간 동안 상기 애플리케이션의 동작을 인에이블하기 위해, 상기 식별된 인기있는 컴퓨터 네트워크 주소를 통해 액세스할 수 있는 네트워크 사이트 또는 사이트들에서 발견되는 인기있는 애플리케이션 데이터가 프리페치되어야 하는 것을 명시하는 프로세스 동작; 및
상기 식별된 인기있는 애플리케이션 데이터를 프리페치하는 프로세스 동작
을 더 포함하는 컴퓨터 구현 프로세스. - 제1항에 있어서, 상기 식별된 애플리케이션 데이터 모두는 프리페치되어야 하는 것인 컴퓨터 구현 프로세스.
- 제1항에 있어서, 상기 관련된 애플리케이션 데이터를 식별하기 위해 상기 수신된 애플리케이션 트래픽 데이터를 분석하는 프로세스 동작은, 복수의 컴퓨터 네트워크 주소들 - 상기 복수의 컴퓨터 네트워크 주소들 각각은, 관련된 애플리케이션 데이터가 획득될 수 있는 네트워크 사이트에 액세스하기 위해 사용될 수 있음 - 을 식별하는 동작을 포함하고,
상기 식별된 애플리케이션 데이터를 프리페치하는 프로세스 동작은, 상기 식별된 컴퓨터 네트워크 주소들을 순위 지정하는 동작, 및 상기 식별된 애플리케이션 데이터를, 미리 정해진 다운로드 바이트 제한까지 가장 높은 순위부터 가장 낮은 순위까지의 순서로 상기 식별된 컴퓨터 네트워크 주소들로부터 프리페치하는 동작을 포함하는 것인 컴퓨터 구현 프로세스. - 제9항에 있어서, 상기 식별된 컴퓨터 네트워크 주소들을 순위 지정하는 동작은,
각각의 식별된 컴퓨터 네트워크 주소가 상기 애플리케이션에 의해 액세스되는 빈도수를 결정하는 동작; 및
상기 식별된 컴퓨터 네트워크 주소들을 적어도 부분적으로 그 주소들이 액세스되는 빈도수에 의해 순위 지정하는 동작
을 포함하는 것인 컴퓨터 구현 프로세스. - 제9항에 있어서, 상기 식별된 컴퓨터 네트워크 주소들을 순위 지정하는 동작은,
상기 애플리케이션이 상기 식별된 컴퓨터 네트워크 주소들에 액세스하는 시간 순서를 포함하는 액세스 패턴을 결정하는 동작; 및
상기 식별된 컴퓨터 네트워크 주소들을 적어도 부분적으로 상기 시간 순서에 의해 순위 지정하는 동작
을 포함하는 것인 컴퓨터 구현 프로세스. - 제9항에 있어서, 상기 식별된 컴퓨터 네트워크 주소들을 순위 지정하는 동작은,
상기 식별된 컴퓨터 네트워크 주소들에서 발견되는 텍스트 및 태그들과 연관된 키워드들의 빈도수, 또는 상기 식별된 컴퓨터 네트워크 주소들을 통해 획득가능한 애플리케이션 데이터와 연관된 키워드들의 빈도수, 또는 둘 다를 결정하는 동작; 및
상기 식별된 컴퓨터 네트워크 주소들을 적어도 부분적으로 그와 연관된 키워드들의 빈도수에 의해 순위 지정하는 동작
을 포함하는 것인 컴퓨터 구현 프로세스. - 제9항에 있어서, 가장 높은 순위의 식별된 컴퓨터 네트워크 주소들의 미리 정해진 개수는, (i) 상기 모바일 컴퓨팅 디바이스 상에서 이용가능한 남아 있는 배터리 전력 - 상기 미리 정해진 개수는 상기 이용가능한 남아 있는 배터리 전력의 양에 정비례하여 보다 높게 설정됨 -; 또는 (ii) 상기 통신 네트워크의 현재 성능의 측정치(measure) - 상기 미리 정해진 개수는 상기 통신 네트워크의 현재 성능의 보다 높은 측정치에 정비례하여 보다 높게 설정됨 -; 또는 (iii) 예상되는 연장된 연결 해제의 기간 - 상기 미리 정해진 개수는 연장된 연결 해제의 기간이 예상될 때마다 보다 높게 설정됨 - 중 적어도 하나에 기초하여 결정되는 것인 컴퓨터 구현 프로세스.
- 제1항에 있어서, 상기 모바일 컴퓨팅 디바이스에 의한 저장을 위하여 상기 모바일 컴퓨팅 디바이스가 통신 네트워크에 연결되어 있을 때 상기 애플리케이션 데이터의 적어도 일부를 상기 모바일 컴퓨팅 디바이스에 제공하는 프로세스 동작은, 상기 모바일 컴퓨팅 디바이스가 통신 네트워크를 통해 액세스를 갖는 사이트에서 상기 프리페치된 데이터를 사전-스테이징(pre-stage)하는 동작을 포함하는 것인 컴퓨터 구현 프로세스.
- 제14항에 있어서, 상기 관련된 애플리케이션 데이터를 식별하기 위해 상기 수신된 애플리케이션 트래픽 데이터를 분석하는 프로세스 동작은, 복수의 컴퓨터 네트워크 주소들 - 상기 복수의 컴퓨터 네트워크 주소들 각각은, 관련된 애플리케이션 데이터가 획득될 수 있는 네트워크 사이트에 액세스하기 위해 사용될 수 있음 - 을 식별하는 동작을 포함하고,
상기 식별된 애플리케이션 데이터를 프리페치하는 프로세스 동작은, 상기 식별된 컴퓨터 네트워크 주소들을 순위 지정하는 동작, 및 미리 정해진 다운로드 바이트 제한까지 가장 높은 순위부터 가장 낮은 순위까지의 순서로 상기 식별된 컴퓨터 네트워크 주소들로부터 상기 식별된 애플리케이션 데이터를 프리페치하는 동작을 포함하고,
상기 모바일 컴퓨팅 디바이스가 통신 네트워크를 통해 액세스를 갖는 사이트에서 상기 프리페치된 데이터를 사전-스테이징하는 동작은, 상기 프리페치된 애플리케이션 데이터를 하나 이상의 파일에 패키징하는 동작, 및 상기 모바일 컴퓨팅 디바이스가 통신 네트워크를 통해 액세스를 갖는 사이트에서 상기 파일을 사전-스테이징하는 동작을 포함하는 것인 컴퓨터 구현 프로세스. - 제1항에 있어서, 상기 모바일 컴퓨팅 디바이스 환경 데이터는 또한, Wi-Fi 연결의 기간이 언제 발생할 것인지를 예측하고, 상기 모바일 컴퓨팅 디바이스에 의한 저장을 위하여, 상기 모바일 컴퓨팅 디바이스가 통신 네트워크에 연결되어 있을 때 상기 프리페치된 애플리케이션 데이터의 적어도 일부를 상기 모바일 컴퓨팅 디바이스에 한 회 이상의 스케쥴링된 시간에 제공하는 프로세스 동작은, 상기 모바일 컴퓨팅 디바이스의 사용자에 대한, 상기 애플리케이션 데이터를 수신하는 비용을 감소시키기 위해, 상기 프리페치된 애플리케이션 데이터의 적어도 일부를 예측된 Wi-Fi 연결의 기간 동안 제공하는 동작을 포함하는 것인 컴퓨터 구현 프로세스.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/203,496 | 2014-03-10 | ||
US14/203,496 US9591095B2 (en) | 2014-03-10 | 2014-03-10 | Prefetching application data for periods of disconnectivity |
PCT/US2015/017886 WO2015138147A1 (en) | 2014-03-10 | 2015-02-27 | Prefetching application data for periods of disconnectivity |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160135250A KR20160135250A (ko) | 2016-11-25 |
KR102294326B1 true KR102294326B1 (ko) | 2021-08-25 |
Family
ID=52686486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167028066A KR102294326B1 (ko) | 2014-03-10 | 2015-02-27 | 연결 해제의 기간을 위한 애플리케이션 데이터의 프리페치 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9591095B2 (ko) |
EP (1) | EP3117341B1 (ko) |
KR (1) | KR102294326B1 (ko) |
CN (1) | CN106105160B (ko) |
WO (1) | WO2015138147A1 (ko) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102077495B1 (ko) * | 2013-07-17 | 2020-02-14 | 한국전자통신연구원 | 웹 서버 및 웹 요구사항 예측을 이용한 웹 서버의 성능 향상 방법 |
PL2924581T3 (pl) * | 2014-03-24 | 2020-02-28 | Pingdom Ab | Sposób, serwer i agent do monitorowania wzorców interakcji użytkownika |
JP6340917B2 (ja) * | 2014-05-23 | 2018-06-13 | 富士ゼロックス株式会社 | 文書管理プログラム、文書閲覧編集プログラム、文書管理装置、端末装置及び文書管理システム |
KR102260177B1 (ko) | 2014-07-16 | 2021-06-04 | 텐세라 네트워크스 리미티드 | 선택된 시각에서 개런티 프리페칭을 사용하는 무선 네트워크를 통한 효과적인 콘텐트 전달 |
US11095743B2 (en) | 2014-07-16 | 2021-08-17 | Tensera Networks Ltd. | Optimized content-delivery network (CDN) for the wireless last mile |
US9979796B1 (en) | 2014-07-16 | 2018-05-22 | Tensera Networks Ltd. | Efficient pre-fetching notifications |
US10506027B2 (en) | 2014-08-27 | 2019-12-10 | Tensera Networks Ltd. | Selecting a content delivery network |
US9723470B1 (en) | 2015-04-30 | 2017-08-01 | Tensera Networks Ltd. | Selective enabling of data services to roaming wireless terminals |
KR20180069806A (ko) | 2015-10-15 | 2018-06-25 | 텐세라 네트워크스 리미티드 | 통신 단말기에서의 콘텐츠의 신선도 인식 프리젠테이션 |
US10015253B2 (en) * | 2015-12-10 | 2018-07-03 | Sap Se | System and method for preemptive request processing |
US10334024B2 (en) | 2016-01-20 | 2019-06-25 | Samsung Electronics Co., Ltd. | Electronic communication device |
US20170366875A1 (en) * | 2016-06-15 | 2017-12-21 | Honeywell International Inc. | Method and apparatus for automation of personalized maintenance tasks with built-in simulation and data synchronization support in energy distribution industry or other industry |
KR101962426B1 (ko) * | 2016-12-27 | 2019-03-26 | 한국과학기술원 | 모바일 애플리케이션 콘텐츠 로딩 가속화 방법 및 장치 |
US11283895B2 (en) | 2017-06-19 | 2022-03-22 | Tensera Networks Ltd. | Silent updating of content in user devices |
US11689963B2 (en) * | 2017-09-28 | 2023-06-27 | Apple Inc. | Data pre-fetch upon imminent WiFi link loss |
US10834180B2 (en) * | 2017-10-09 | 2020-11-10 | Level 3 Communications, Llc | Time and location-based trend prediction in a content delivery network (CDN) |
US11468175B2 (en) * | 2019-07-31 | 2022-10-11 | Salesforce, Inc. | Caching for high-performance web applications |
US11146656B2 (en) * | 2019-12-20 | 2021-10-12 | Tealium Inc. | Feature activation control and data prefetching with network-connected mobile devices |
KR20230080902A (ko) | 2021-11-30 | 2023-06-07 | 한국전자통신연구원 | 분산 컴퓨팅 환경에서의 데이터 선 적재 장치 및 이를 이용한 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070033569A1 (en) | 2005-08-02 | 2007-02-08 | Davidson James G | Client/server web application architectures for offline usage, data structures, and related methods |
US20130147820A1 (en) | 2011-12-12 | 2013-06-13 | Google Inc. | Method of pre-fetching map data for rendering and offline routing |
WO2014028672A1 (en) | 2012-08-14 | 2014-02-20 | Inmobly, Inc. | System and method for efficient use of network bandwidth |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8516114B2 (en) | 2002-03-29 | 2013-08-20 | International Business Machines Corporation | Method and apparatus for content pre-fetching and preparation |
US7359395B2 (en) * | 2003-06-16 | 2008-04-15 | Packeteer, Inc. | Pre-fetch communication systems and methods |
US7483941B2 (en) * | 2004-01-13 | 2009-01-27 | International Business Machines Corporation | System and method for dynamically inserting prefetch tags by the web server |
US20070033155A1 (en) * | 2005-08-02 | 2007-02-08 | Landsman Richard A | Client/server web application architectures for offline usage, data structures, and related methods |
US7747749B1 (en) * | 2006-05-05 | 2010-06-29 | Google Inc. | Systems and methods of efficiently preloading documents to client devices |
US8117303B2 (en) * | 2007-06-29 | 2012-02-14 | Nokia Corporation | Systems, methods, devices, and computer program products for downloading content for offline browsing |
US8527525B2 (en) * | 2008-06-30 | 2013-09-03 | Microsoft Corporation | Providing multiple degrees of context for content consumed on computers and media players |
US20100037204A1 (en) | 2008-08-07 | 2010-02-11 | Google Inc. | Content Distribution for Mobile Device |
TWI384378B (zh) | 2008-12-29 | 2013-02-01 | Ind Tech Res Inst | 網頁應用程式執行方法 |
US20110029670A1 (en) | 2009-07-31 | 2011-02-03 | Microsoft Corporation | Adapting pushed content delivery based on predictiveness |
US8874129B2 (en) | 2010-06-10 | 2014-10-28 | Qualcomm Incorporated | Pre-fetching information based on gesture and/or location |
US8457653B2 (en) | 2011-02-25 | 2013-06-04 | Nokia Corporation | Method and apparatus for pre-fetching location-based data while maintaining user privacy |
US8825749B2 (en) * | 2011-10-21 | 2014-09-02 | Yahoo! Inc. | Method of tracking offline user interaction in a rendered document on a mobile device |
US8509816B2 (en) * | 2011-11-11 | 2013-08-13 | International Business Machines Corporation | Data pre-fetching based on user demographics |
US9578495B2 (en) * | 2011-12-19 | 2017-02-21 | Qualcomm Incorporated | Handling impaired wireless connection in a communication system |
US8849731B2 (en) | 2012-02-23 | 2014-09-30 | Microsoft Corporation | Content pre-fetching for computing devices |
GB2511562B (en) | 2012-03-02 | 2015-08-12 | Seven Networks Inc | Providing data to a mobile application accessible at a mobile device via different network connections without interruption and mobile device which hands over |
-
2014
- 2014-03-10 US US14/203,496 patent/US9591095B2/en active Active
-
2015
- 2015-02-27 CN CN201580013378.8A patent/CN106105160B/zh active Active
- 2015-02-27 WO PCT/US2015/017886 patent/WO2015138147A1/en active Application Filing
- 2015-02-27 EP EP15710659.2A patent/EP3117341B1/en active Active
- 2015-02-27 KR KR1020167028066A patent/KR102294326B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070033569A1 (en) | 2005-08-02 | 2007-02-08 | Davidson James G | Client/server web application architectures for offline usage, data structures, and related methods |
US20130147820A1 (en) | 2011-12-12 | 2013-06-13 | Google Inc. | Method of pre-fetching map data for rendering and offline routing |
WO2014028672A1 (en) | 2012-08-14 | 2014-02-20 | Inmobly, Inc. | System and method for efficient use of network bandwidth |
Also Published As
Publication number | Publication date |
---|---|
US20150256641A1 (en) | 2015-09-10 |
KR20160135250A (ko) | 2016-11-25 |
CN106105160A (zh) | 2016-11-09 |
EP3117341B1 (en) | 2021-12-01 |
US9591095B2 (en) | 2017-03-07 |
EP3117341A1 (en) | 2017-01-18 |
WO2015138147A1 (en) | 2015-09-17 |
CN106105160B (zh) | 2019-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102294326B1 (ko) | 연결 해제의 기간을 위한 애플리케이션 데이터의 프리페치 | |
JP6073366B2 (ja) | アプリケーション駆動のcdnのプリキャッシング | |
US9477774B2 (en) | Key resource prefetching using front-end optimization (FEO) configuration | |
US8612418B2 (en) | Mobile web browser for pre-loading web pages | |
US8971819B2 (en) | System for analyzing mobile browser energy consumption | |
KR102151457B1 (ko) | 통신 시스템에서 페이지 로딩 시간 단축 방법 및 장치 | |
CN108228818A (zh) | 网页资源加载方法及装置、电子设备、以及存储介质 | |
US10284671B2 (en) | Dynamic bundling of web components for asynchronous delivery | |
JP2015509229A5 (ko) | ||
CN104754073A (zh) | 一种资源访问方法及装置 | |
US20190205056A1 (en) | Transparent data movement between a private cloud and storage ecosystem and another storage system | |
CN111666497A (zh) | 应用程序的加载方法、装置、电子设备及可读存储介质 | |
US20140325026A1 (en) | Intelligent adaptation of mobile applications based on constraints and contexts | |
US20150207691A1 (en) | Preloading content based on network connection behavior | |
CN101799821B (zh) | 一种通过微件实现网页应用的方法及系统 | |
US10909170B2 (en) | Method for processing and rendering feed-like based images for mobile devices | |
CN102567339A (zh) | 一种获取起始页的方法、装置和系统 | |
US20100023615A1 (en) | Redirecting web downloads | |
EP3304293B1 (en) | Code caching system | |
CN102375881A (zh) | 内容签名通知 | |
US20140129666A1 (en) | Preemptive caching of data | |
US10225361B2 (en) | Content management in caching services | |
CN102156696A (zh) | 一种针对网页应用的本地化微件管理方法和终端设备 | |
US11366613B2 (en) | Method and apparatus for writing data | |
CN114925304A (zh) | 一种信息访问方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |