KR101227821B1 - System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief - Google Patents

System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief Download PDF

Info

Publication number
KR101227821B1
KR101227821B1 KR1020120137313A KR20120137313A KR101227821B1 KR 101227821 B1 KR101227821 B1 KR 101227821B1 KR 1020120137313 A KR1020120137313 A KR 1020120137313A KR 20120137313 A KR20120137313 A KR 20120137313A KR 101227821 B1 KR101227821 B1 KR 101227821B1
Authority
KR
South Korea
Prior art keywords
mobile
request
application
server
requests
Prior art date
Application number
KR1020120137313A
Other languages
Korean (ko)
Inventor
마이클 루나
Original Assignee
세븐 네트워크스, 아이엔씨.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US13/457,368 priority Critical
Priority to US13/457,368 priority patent/US8832228B2/en
Application filed by 세븐 네트워크스, 아이엔씨. filed Critical 세븐 네트워크스, 아이엔씨.
Application granted granted Critical
Publication of KR101227821B1 publication Critical patent/KR101227821B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance or administration or management of packet switching networks
    • H04L41/14Arrangements for maintenance or administration or management of packet switching networks involving network analysis or design, e.g. simulation, network model or planning
    • H04L41/147Arrangements for maintenance or administration or management of packet switching networks involving network analysis or design, e.g. simulation, network model or planning for prediction of network behaviour
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic regulation in packet switching networks
    • H04L47/10Flow control or congestion control
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Abstract

PURPOSE: A system and method for requesting help in place of a mobile device based on an atom process is provided to simulate a traffic request in a mobile device which can be implemented in a system. CONSTITUTION: A proxy server(125) predicts a request of a mobile device before transmitting a request to a destination through the mobile device. The proxy server predicts the request by detecting a traffic pattern for an outgoing request from the mobile apparatus. The proxy server simulates the request in place of the mobile device. The proxy server transmits the request to the destination in which is selected as an address by the request. [Reference numerals] (100) Host server; (106,108) Network; (110) Application server/content provider; (112) Short message service center; (120A) Advertisement server; (120B) Promotion content server; (120C) e-coupon server; (125) Proxy server; (135) Server cache; (150) Mobile device; (175) Local proxy; (185) Local cache; (199) Selective caching proxy server

Description

모바일 네트워크 트래픽 경감을 위한 원자 프로세스를 기반으로 하며 모바일 장치를 대신하여 요청을 하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR MAKING REQUESTS ON BEHALF OF A MOBILE DEVICE BASED ON ATOMIC PROCESSES FOR MOBILE NETWORK TRAFFIC RELIEF}TECHNICAL AND METHOD FOR MAKING REQUESTS ON BEHALF OF A MOBILE DEVICE BASED ON ATOMIC PROCESSES FOR MOBILE NETWORK TRAFFIC RELIEF}

관련 출원의 상호-참조Cross-Reference to Related Applications

이 출원은 2011년04월27일자로 출원된 미국 가특허출원 제61/479,676호 "ATOMIC PROCESS FOR OFFLOADING MOBILE APPLICATION ACTIVITY BY TRAFFIC SNOOPING"를 기초로 우선권 주장하며, 상기 미국 가특허출원의 내용은 모두 본원에서 참조로서 포함된다. This application claims priority based on US Provisional Patent Application No. 61 / 479,676, "ATOMIC PROCESS FOR OFFLOADING MOBILE APPLICATION ACTIVITY BY TRAFFIC SNOOPING," filed April 27, 2011. It is included by reference.

이 출원은 본 출원과 함께 출원된 미국 특허 출원 "MOBILE DEVICE WHICH OFFLOADS REQUESTS MADE BY A MOBILE APPLICATION TO A REMOTE ENTITY FOR CONSERVATION OF MOBILE DEVICE AND NETWORK RESOURCES AND METHODS THEREFOR" (Attorney Docket No. 76443-8120.US01)와 관련이 있으며, 상기 미국 특허 출원은 모두 본원에서 참조로서 포함된다. This application is filed with US Patent Application "MOBILE DEVICE WHICH OFFLOADS REQUESTS MADE BY A MOBILE APPLICATION TO A REMOTE ENTITY FOR CONSERVATION OF MOBILE DEVICE AND NETWORK RESOURCES AND METHODS THEREFOR" (Attorney Docket No. 76443-8120.US01) And all of the above US patent applications are incorporated herein by reference.

모바일 데이터 트래픽이 기하급수적으로 계속 성장한다. 현재, 데이터가 미국의 모바일 트래픽의 상당한 부분을 차지하며, 대략 30%의 스마트폰 사용자가 평균 1GB/mo 이상을 사용한다. 새로운 장치 및 새로운 네트워크 기술이 계속 출시됨에 따라, 데이터 트래픽이 계속 성장한다. 3G, LTE 및 4G로의 전환 및 타블렛(tablet)과 스마트 폰의 추가 도입이, 수 십억 개의 연결 장치 및 빈번한 리프레시(refresh)를 필요로 하는 애플리케이션에 의해 발생되는 데이터 및 시그널링 트래픽의 폭발을 초래했다. Mobile data traffic continues to grow exponentially. Currently, data makes up a significant portion of mobile traffic in the United States, with roughly 30% of smartphone users using more than 1GB / mo on average. As new devices and new network technologies continue to roll out, data traffic continues to grow. The transition to 3G, LTE, and 4G, as well as the further introduction of tablets and smartphones, has led to the explosion of data and signaling traffic generated by billions of connected devices and applications requiring frequent refreshes.

LTE와 4G 기반 네트워크로의 이주의 경우에서도, 가입자, 애플리케이션, 및 장치의 빠른 성장이 네트워크 요소에 부담을 가중시키고, 이로 인해 혼잡과 네트워크 오류가 초래되었으며, 이들 모두, 최종 사용자의 경험에 큰 타격을 미친다. 따라서 데이터, 시그널링, 또는 데이터 세션 트래픽의 성장을 더 지능적이고 더 효율적으로 관리할 필요성이 실시간으로 네트워크 혼잡을 완화하고 사용자 경험을 보장하기 위해 여전히 중요하다.
Even in the case of migration to LTE and 4G-based networks, the rapid growth of subscribers, applications, and devices has placed a strain on network elements, resulting in congestion and network errors, all of which have a significant impact on end-user experience. Crazy Thus, the need to manage the growth of data, signaling, or data session traffic more intelligently and efficiently is still important to mitigate network congestion and ensure user experience in real time.

도 1A는 호스트 서버로 분담될 원자 프로세스로서 그룹지어질 수 있는 장치에서 개시되는 트래픽에서 검출되는 이벤트들의 세트를 도시하는 예시적 도면이다.
도 1B는 무선 네트워크(또는 광대역 네트워크)에서 자원 보존을 위해, 호스트 서버가 모바일 장치(가령, 무선 장치)와 애플리케이션 서버 또는 콘텐츠 제공자, 또는 그 밖의 다른 서버(가령, 광고 서버, 프로모션 콘텐츠 서버, 또는 e-쿠폰 서버) 간 트래픽의 관리, 콘텐츠 캐싱, 및/또는 자원 보존을 촉진하는 시스템의 예시적 도면이다. 호스트 서버는 추가로, 모바일 장치상의 트래픽을 스누핑하여, 원자 프로세스를 생성하기 위해 사용될 수 있는 이벤트들의 세트를 검출함으로써, 모바일 장치로부터 애플리케이션 트래픽 요청을 분담시킬 수 있다.
도 1C는 자원 보존 및 콘텐츠 캐싱을 위해, 장치, 애플리케이션 서버 또는 콘텐츠 제공자, 또는 그 밖의 다른 서버(가령, 광고 서버), 프로모션 콘텐츠 서버, 또는 e-쿠폰 서버 간에 네트워크 트래픽 관리를 촉진하는, 호스트 서버와 장치 사이에 분산된 프록시 및 캐시 시스템의 예시적 도면이다. 호스트 서버와 장치 간에 분산된 프록시 시스템은 추가로, 모바일 장치상의 트래픽을 스누핑하여 원자 프로세스를 생성하도록 사용될 수 있는 이벤트들의 세트를 검출함으로써, 모바일 장치로부터의 애플리케이션 트래픽 요청을 분담시킬 수 있다.
도 2A는 무선 네트워크(또는 광대역 네트워크)에서 자원 보존, 콘텐츠 캐싱, 및/또는 트래픽 관리를 위해, 트래픽을 관리하는 모바일 장치(가령, 무선 장치)상의 분산 프록시 및 캐시 시스템의 클라이언트 측 구성요소의 하나의 예를 도시하는 블록도이다. 클라이언트 측 프록시(또는 로컬 프록시)가 추가로, 애플리케이션 거동, 콘텐츠 우선순위, 사용자 활동, 및/또는 사용자 기대를 기초로 하여, 모바일 트래픽을 카테고리화, 및/또는 전달 정책을 구현할 수 있다.
도 2B는 모바일 애플리케이션 거동 및/또는 네트워크 조건에 대해 캐싱하고 캐싱 전략을 적응화시킬 수 있는, 도 2A의 예에서 나타난 캐시 시스템의 구성요소의 추가 예를 도시하는 블록도이다. 롱 폴 요청을 검출할 수 있고 롱 폴의 캐싱을 관리할 수 있는 구성요소가 또한 도시된다.
도 2C는 캐시 디피트를 검출하고, 캐시를 디피트하도록 의도된 식별자에 의해 주소지정되는 콘텐츠의 캐싱을 수행하는, 도 2A의 예시에서 도시되는 캐시 시스템의 애플리케이션 거동 검출기 및 캐싱 정책 관리기의 추가 구성요소를 도시하는 블록도이다.
도 2D는 애플리케이션 거동 및/또는 사용자 활동을 기초로 하여, 모바일 트래픽 카테고리화와 정책 이행을 수행할 수 있는 도 2A의 예에서 나타난 로컬 캐시에서 추가 구성요소의 예를 도시하는 블록도이다.
도 3A는 무선 네트워크(또는 광대역 네트워크)에서 자원 보존, 콘텐츠 캐싱, 및/또는 트래픽 관리를 위해, 트래픽을 관리하는 분산 프록시 및 캐시 시스템의 서버 측 구성요소의 하나의 예를 도시하는 블록도이다. 서버 측 프록시(또는 프록시 서버)가 추가로, 애플리케이션 거동, 콘텐츠 우선순위, 사용자 활동, 및/또는 사용자 기대를 기초로 하여, 모바일 트래픽을 카테고리화 및/또는 전달 정책을 구현할 수 있다.
도 3B는 모바일 애플리케이션 거동 및/또는 네트워크 상태에 대해, 캐싱하고 캐싱 전략을 적응화시킬 수 있는, 도 3A의 예에서 나타난 캐시 시스템에서 캐싱 정책 관리기의 구성요소들의 추가 예를 도시하는 블록도이다. 롱 폴 요청을 검출할 수 있고, 롱 폴의 캐싱을 관리할 수 있는 구성요소들이 또한 도시된다.
도 3C는, 캐시 디피트 메커니즘을 관리 및 검출하고, 콘텐츠 소스를 모니터링할 수 있는 도 3A의 예에서 도시된 프록시 시스템에서 구성요소들의 또 다른 예를 도시하는 블록도이다.
도 3D는 애플리케이션 거동 및/또는 트래픽 우선순위를 기초로 하여, 모바일 트래픽 카테고리화와 정책 이행을 수행할 수 있는 도 3A의 예시에서 나타난 프록시 서버의 추가 구성요소의 예를 도시하는 블록도이다.
도 4A는 원자 프로세스 기반 트래픽 최적화기를 포함하는, 분산 프록시 및 캐시 시스템의 클라이언트 측 구성요소의 또 다른 예를 도시하는 블록도이다.
도 4B는 도 4A의 예에서 도시된 원자 프로세스 기반 트래픽 최적화기의 추가 구성요소를 도시하는 블록도이다.
도 5A는 원자 프로세스 기반 트래픽 최적화기를 더 포함하는 분산 프록시 및 캐시 시스템의 서버 측 구성요소의 하나의 예를 도시하는 블록도이다.
도 5B는 도 5A의 예에서 나타난 원자 프로세스 기반 트래픽 최적화기의 추가 구성요소를 도시하는 블록도이다.
도 6A는 모바일 장치(가령, 임의의 무선 장치)와 원격 프록시 간의 분산 콘텐츠 캐싱과 콘텐츠 캐싱의 분산 관리를 위한 예시적 프로세스를 도시하는 흐름도이다.
도 6B는 콘텐츠 캐싱의 이용과 분산 프록시 시스템에 의해 수행되는 모니터링을 통해, 네트워크와 배터리 자원이 보존되도록, 무선 네트워크(또는 광대역 네트워크)에서 모바일 장치로부터 애플리케이션 서버/콘텐츠 제공자로의 데이터 요청이 분산 프록시 시스템에 의해 조화될 수 있는 방법을 보여주는 타이밍도이다.
도 7은 네트워크 액세스 및 콘텐츠 전달 정책을 구현할 때 사용될 수 있는 서로 다른 트래픽 또는 애플리케이션 카테고리 유형의 예를 도시하는 표이다.
도 8은 네트워크 액세스와 콘텐츠 전달 정책을 구현할 때 사용될 수 있는 서로 다른 콘텐츠 카테고리 유형의 예를 도시하는 표이다.
도 9는 무선 네트워크(또는 광대역 네트워크)를 통해 모바일 장치(가령, 임의의 무선 장치)로부터 애플리케이션 서버/콘텐츠 제공자로의 데이터 요청을 갖는 폴이 로컬 프록시에 캐싱될 수 있고, 분산 캐싱 시스템에 의해 관리될 수 있는 방법을 도시하는 상호대화도이다.
도 10은 무선 네트워크(또는 광대역 네트워크)를 통해 식별자 내 캐시 디피트 메커니즘(가령, 캐싱을 디피트하도록 의도된 식별자)을 이용하는 애플리케이션 서버/콘텐츠 제공자로부터의 콘텐츠에 대한 폴이 검출되고 로컬하게 캐싱될 수 있는 방법을 도시하는 상호대화도이다.
도 11는 모바일 장치를 대신하여 요청을 하기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 12는 모바일 장치로부터의 요청들의 재현 가능한 패턴을 식별하거나 검출하기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 13은 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 예시 프로세스를 도시하는 흐름도이다.
도 14는 모바일 장치 상의 복수의 모바일 애플리케이션에 의해 이뤄지는 요청을 분담시키기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 15는 모바일 장치에서 원격 개체로 만들어지는 요청을 분담시키기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 16은 기계가 본원에 기재된 방법들 중 하나 이상을 수행하도록 하기 위한 명령들의 세트가 실행될 수 있는 컴퓨터 시스템의 예시적 형태로 된 기계의 개략적 표현이다.
1A is an exemplary diagram illustrating a set of events detected in traffic initiated at an apparatus that may be grouped as an atomic process to be shared with a host server.
FIG. 1B illustrates that a host server may be a mobile device (eg, a wireless device) and an application server or content provider, or other server (eg, an advertisement server, a promotional content server, or the like) for resource conservation in a wireless network (or broadband network). Exemplary diagram of a system that facilitates management of traffic between e-coupon servers), content caching, and / or resource conservation. The host server may further share application traffic requests from the mobile device by snooping traffic on the mobile device to detect a set of events that may be used to generate the atomic process.
1C illustrates a host server that facilitates network traffic management between a device, application server or content provider, or other server (eg, an advertising server), a promotional content server, or an e-coupon server for resource conservation and content caching. An exemplary diagram of a proxy and cache system distributed between and devices. A proxy system distributed between the host server and the device may further distribute application traffic requests from the mobile device by detecting a set of events that may be used to snoop the traffic on the mobile device to generate an atomic process.
2A illustrates one of the client-side components of a distributed proxy and cache system on a mobile device (eg, a wireless device) that manages traffic for resource retention, content caching, and / or traffic management in a wireless network (or broadband network). It is a block diagram showing an example. The client-side proxy (or local proxy) may further implement mobile policy categorization and / or delivery policy based on application behavior, content priority, user activity, and / or user expectations.
FIG. 2B is a block diagram illustrating additional examples of components of the cache system shown in the example of FIG. 2A, which may cache for mobile application behavior and / or network conditions and adapt a caching strategy. Also shown are components that can detect long pole requests and manage caching of long poles.
FIG. 2C is a further configuration of an application behavior detector and caching policy manager of the cache system shown in the example of FIG. 2A, detecting cache dips and performing caching of content addressed by an identifier intended to dip the cache. A block diagram illustrating the elements.
FIG. 2D is a block diagram illustrating an example of additional components in the local cache shown in the example of FIG. 2A that may perform mobile traffic categorization and policy enforcement based on application behavior and / or user activity.
3A is a block diagram illustrating one example of server-side components of a distributed proxy and cache system that manages traffic for resource conservation, content caching, and / or traffic management in a wireless network (or broadband network). Server-side proxies (or proxy servers) may further implement mobile traffic categorization and / or delivery policies based on application behavior, content priorities, user activity, and / or user expectations.
FIG. 3B is a block diagram illustrating additional examples of components of a caching policy manager in the cache system shown in the example of FIG. 3A that may cache and adapt caching strategies to mobile application behavior and / or network conditions. Also shown are components that can detect long pole requests and manage caching of long poles.
FIG. 3C is a block diagram illustrating another example of components in the proxy system shown in the example of FIG. 3A that may manage and detect a cache bite mechanism, and monitor a content source.
FIG. 3D is a block diagram illustrating an example of additional components of the proxy server shown in the example of FIG. 3A that may perform mobile traffic categorization and policy enforcement based on application behavior and / or traffic priority.
4A is a block diagram illustrating another example of client-side components of a distributed proxy and cache system, including atomic process based traffic optimizers.
4B is a block diagram illustrating additional components of the atomic process based traffic optimizer shown in the example of FIG. 4A.
5A is a block diagram illustrating one example of server-side components of a distributed proxy and cache system further comprising an atomic process based traffic optimizer.
FIG. 5B is a block diagram illustrating additional components of the atomic process based traffic optimizer shown in the example of FIG. 5A.
6A is a flowchart illustrating an example process for distributed content caching between a mobile device (eg, any wireless device) and a remote proxy and distributed management of content caching.
FIG. 6B illustrates a distributed proxy request for data requests from a mobile device to an application server / content provider in a wireless network (or broadband network) so that network and battery resources are preserved through the use of content caching and monitoring performed by a distributed proxy system. A timing diagram showing how the system can be harmonized.
7 is a table illustrating examples of different traffic or application category types that may be used when implementing network access and content delivery policies.
8 is a table illustrating examples of different content category types that may be used when implementing network access and content delivery policies.
9 illustrates that a poll with data requests from a mobile device (eg, any wireless device) to an application server / content provider over a wireless network (or broadband network) may be cached at a local proxy and managed by a distributed caching system. It is an interactive diagram showing how it can be done.
10 illustrates that polls for content from an application server / content provider that utilize a cache defeat mechanism (eg, an identifier intended to deflect caching) within an identifier over a wireless network (or broadband network) may be detected and cached locally. It is an interactive diagram showing how it can be done.
11 is a flowchart illustrating an example process for making a request on behalf of a mobile device.
12 is a flowchart illustrating an example process for identifying or detecting a reproducible pattern of requests from a mobile device.
13 is a flowchart illustrating an example process for simulating a traffic request from a mobile device.
14 is a flowchart illustrating an example process for sharing a request made by a plurality of mobile applications on a mobile device.
FIG. 15 is a flow diagram illustrating an example process for sharing a request made with a remote entity at a mobile device.
16 is a schematic representation of a machine in an exemplary form of a computer system in which a set of instructions for causing a machine to perform one or more of the methods described herein may be executed.

다음의 기재와 도면은 설명을 위한 것이며, 한정하기 위한 것이 아니다. 많은 구체적 세부사항이 본원의 완전한 이해를 제공하기 위해 기재된다. 그러나 특정 경우, 본원의 기재를 불명확하게 하는 것을 막기 위해, 공지 또는 종래의 세부사항은 제공되지 않는다. 본원에서 "하나의 실시예" 또는 "실시예"가 반드시, 동일한 실시예를 지칭하는 것이 아닐 수 있고, 이러한 지칭은 실시예들 중 적어도 하나를 의미한다.The following description and drawings are for the purpose of description and not of limitation. Many specific details are set forth in order to provide a thorough understanding of the present disclosure. However, in certain instances, known or conventional details are not provided to avoid obscuring the disclosure herein. As used herein, “an embodiment” or “an embodiment” may not necessarily refer to the same embodiment, and such reference refers to at least one of the embodiments.

본 명세서에서, "하나의 실시예" 또는 "실시예"라는 언급은 상기 실시예와 관련하여 기재되는 특정한 특징, 구조, 또는 특성이 본원발명의 적어도 하나의 실시예에 포함됨을 의미한다. 본 명세서의 다양한 부분에서의 "하나의 실시예에서"라는 구문의 언급이 반드시 동일한 실시예를 지칭하는 것은 아니며, 또한 개별적인, 또는 대안적인 실시예들이 타 실시예들과 상호 배타적인 것임을 나타내는 것도 아니다. 덧붙이자면, 어떤 실시예들에서는 나타나고, 나머지 실시예들에서는 나타나지 않는 다양한 특징이 기재된다. 마찬가지로, 어떤 실시예들의 요건일 수 있지만, 또 다른 실시예들의 요건은 아닐 수 있는 다양한 요건이 기재된다. In this specification, reference to "one embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described in connection with the above embodiment is included in at least one embodiment of the present invention. The use of the phrase “in one embodiment” in various places in this specification does not necessarily refer to the same embodiment, nor does it imply that the individual or alternative embodiments are mutually exclusive of other embodiments. . In addition, various features are described which appear in some embodiments and do not appear in the other embodiments. Likewise, various requirements are described which may be requirements of certain embodiments, but not requirements of other embodiments.

본 명세서에서 사용되는 용어는, 본원발명의 맥락과, 각각의 용어가 사용되는 특정 맥락에 비추어, 해당 기술 분야의 통상의 의미이다. 본원발명의 설명과 관련해 해당업계 종사자에게 추가 안내를 제공하기 위해, 본원발명을 기재하기 위해 사용되는 특정 용어가 이하에서, 또는 본 명세서의 그 밖의 다른 곳에서, 설명된다.편의상, 특정 용어가, 예를 들어, 이탤릭체 및/또는 인용 부호를 이용해, 강조될 수 있다. 강조어의 사용은, 용어의 범위와 의미에 어떠한 영향도 미치지 않고, 용어가 강조되었는지에 관계없이, 용어의 범위와 의미는 동일한 맥락 하에서 동일하다. 동일한 사항이 두 가지 이상의 방식으로 설명될 수 있음을 알 것이다. The terminology used herein is the ordinary meaning in the art in light of the context of the present invention and the specific context in which each term is used. In order to provide additional guidance to those skilled in the art in connection with the description of the invention, certain terms used to describe the invention are described below, or elsewhere in this specification. For example, italics and / or quotation marks may be used to emphasize. The use of accented words has no effect on the scope and meaning of the terms, and regardless of whether the terms are emphasized, the scope and meaning of the terms are the same under the same context. It will be appreciated that the same may be explained in more than one way.

결과적으로, 대치어와 동의어가 본원에서 설명되는 용어들 중 임의의 하나 이상에 대해 사용될 수 있으며, 본원에서 상술 또는 설명되는지에 관계없이 어떠한 특별한 의의도 두지 않는다. 특정 용어에 대한 동의어가 제공된다. 하나 이상의 동의어의 언급이 다른 동의어의 사용을 배제하는 것은 아니다. 본 명세서의 임의의 부분에서의 예시의 사용, 예를 들면, 본원에서 설명되는 임의의 용어의 예시는 단지 설명을 위한 것에 불과하며, 본원발명의 범위와 의미 또는 임의의 예로 든 용어의 범위와 의미를 추가로 제한하려는 의도는 없다. 마찬가지로, 본원발명은 본 명세서에서 제공되는 다양한 실시예로 한정되지 않는다.As a result, substitutions and synonyms may be used for any one or more of the terms described herein, and have no particular significance regardless of whether described or described herein. Synonyms for specific terms are provided. Reference to one or more synonyms does not exclude the use of other synonyms. Use of examples in any part of this specification, for example, examples of any term described herein are for illustrative purposes only, and the scope and meaning of the present invention or the scope and meaning of any exemplary term There is no intention to further restrict. Likewise, the invention is not limited to the various embodiments provided herein.

본원발명의 범위를 한정하려는 의도 없이, 본원발명의 실시예에 따르는 기기, 장치, 방법, 및 이들과 관련된 결과의 예시가 이하에서 제공된다. 제목 또는 소제목은 편의상 예시로 사용된 것일 수 있으며, 본원발명의 범위를 제한하지 않는다. 다르게 정의되지 않는 한, 본원에서 사용되는 모든 기술적이며 과학적인 용어는 본원발명이 속하는 기술분야의 종사자에 의해 일반적으로 이해되는 의미를 가진다. 상호충돌의 경우, 정의를 포함해, 본원이 우선시될 것이다.Without intending to limit the scope of the present invention, examples of devices, devices, methods, and results associated therewith, according to embodiments of the present invention are provided below. The title or subtitle may be used as an example for convenience and does not limit the scope of the present invention. Unless defined otherwise, all technical and scientific terms used herein have the meaning commonly understood by one of ordinary skill in the art to which this invention belongs. In case of conflict, the present application, including definitions, will control.

본 발명의 실시예는 모바일 네트워크 트래픽 경감을 위한 원자 프로세스(atomic process)를 기초로 모바일 장치를 대신하여 요청을 하기 위한 시스템 및 방법을 포함한다. Embodiments of the present invention include systems and methods for making requests on behalf of mobile devices based on atomic processes for mitigating mobile network traffic.

데이터의 급증에 기여하는 복수의 요인이 존재하는데, 예를 들어, 최종 사용자, 모바일 장치, 무선 장치, 모바일 애플리케이션, 및 네트워크가 있다. 모바일 장치가 진화할수록, 모바일 장치와 연계된 다양한 요소들, 즉, 가용성, 애플리케이션, 사용자 행동, 위치가 네트워크가 장치 및 애플리케이션과 상호대화하는 방식을 변화시킨다.There are a number of factors that contribute to the proliferation of data, such as end users, mobile devices, wireless devices, mobile applications, and networks. As mobile devices evolve, various factors associated with the mobile devices, such as availability, applications, user behavior, and location, change the way the network interacts with the devices and applications.

본 발명의 기술은, 모바일 콘텐츠가 지정된, 또는 상대적인 "신선도(freshness)" 값을 가진다는 점을 활용함으로써 모바일 또는 무선 장치의 이동과 데이터의 급등을 모두 지원하기 위한 운영자 및 장치 제조업체를 위한 각각의 요소를 해결할 수 있는 포괄적인 종단간(end-to-end) 솔루션을 제공한다. 모바일 콘텐츠의 "신선도"는, 확정적으로, 또는 허용오차(이 허용오차 내에서 사용자 경험은 개선되지만 부정적 영향은 받지 않음. 또는 부정적 영향은 받지만 사용자가 인지할 수 없거나 허용 가능한 임계 수준 내임)를 갖는 임의의 휴리스틱을 이용해, 결정될 수 있다. The technique of the present invention utilizes the fact that mobile content has a specified or relative "freshness" value to enable operators and device manufacturers to support both mobile and wireless device movement and data spikes. Provides a comprehensive end-to-end solution to address the elements. The "freshness" of mobile content is either deterministically or with tolerances (within this tolerance the user experience is improved but not negatively impacted, or negatively impacted but unacceptable or within acceptable thresholds). Using any heuristic, it can be determined.

본원발명의 혁신기술은 애플리케이션(가령, 모바일 애플리케이션)과 피어(대응하는 서버 또는 그 밖의 다른 클라이언트) 사이의 트랜잭션(transaction)(요청/응답)을 모니터링하고 분석하며, 규칙을 적용함으로써, 이러한 "신선도(freshness)"를 투명하게 결정한다. 덧붙이자면, 상기 기술은, 콘텐츠의 출처/호스트 서버에 의해 "캐싱 불가능함(non-cacheable)"로 표시될 수 있는 콘텐츠를 효율적으로 캐싱(cache)하고, 일부 "신선도" 값을 식별할 수 있으며, 그 후 상기 "신선도" 값은 애플리케이션-특정적 캐싱(application-specific caching)을 구현하는 데 사용될 수 있다. 일반적으로, "신선도" 값은, 일반적으로, 애플리케이션과 이에 대응하는 서버/호스트 간의 업데이트 간격(update interval)(가령, 요청이 전송되는 간격)을 이용하여 결정되는 근사 최솟값을 가진다.The innovation of the present invention monitors and analyzes transactions (requests / responses) between an application (e.g., a mobile application) and a peer (a corresponding server or other client) and applies these rules, thereby applying such "freshness". (freshness) "to be transparent. In addition, the technique can efficiently cache content that may be marked as "non-cacheable" by the source / host server of the content, and identify some "freshness" values. The "freshness" value can then be used to implement application-specific caching. In general, the "freshness" value generally has an approximate minimum determined using an update interval between the application and the corresponding server / host (eg, the interval at which the request is sent).

본원발명의 기법의 한 가지 실시예는, 장치와 애플리케이션 활동(가령, 로딩(loading), 장치상의 현재 애플리케이션 수요, 액세스의 유형(푸시(push) vs. 풀(pull), 또는 하이브리드)의 제어, 위치, 단일 영역 내 사용자의 밀집도, 시각(time of day), 사용자가 애플리케이션, 콘텐츠, 또는 장치와 상호대화하는 빈도, 및 협업하는 클라이언트/서버로의 트래픽, 또는 협업하는 클라이언트 없이 모바일 장치들로의 동시 트래픽을 성형(shape)하기 위해 이 정보를 사용하는 것)을 포괄적으로 살펴볼 때 유선 및 무선 네트워크와 장치의 연결의 복수의 양태를 최적화하는 시스템을 포함한다. 본원발명의 서버는 어떠한 특정 네트워크 제공자와도 관련이 없기 때문에, 모든 서비스 제공자들 간의 네트워크 성능에 대한 가시성을 가진다. 이로 인해서, 운영자 또는 서비스 제공자에 무관하게, 최적화가 장치에 적용될 수 있으며, 따라서, 사용자 경험이 개선되고 로밍(roaming) 동안의 네트워크 활용이 관리된다. 오늘날 대역폭이 무선 네트워크에서의 주요 쟁점으로 간주된다. 액세스 문제를 해결하기 위한 추가 대역폭의 필요와 관련하여, 점점 더 많은 연구가 이뤄지고 있다. 성능 향상 솔루션 및 차세대 표준(가령, 흔히 3.5G, LTE, 4G, 및 WiMAX라고 일컬어지는 것들) 중 다수가 증가된 대역폭을 제공하는 것에 초점을 맞춘다. 상기 표준에 의해 부분적으로 해결될지라도, 남아 있는 핵심적인 문제는, 데이터 채널에서보다 시그널링 채널에서 대역폭이 더 부족하다는 것이며, 상기 표준은 배터리 수명 문제를 그리 잘 해결하지 않는다.One embodiment of the techniques of the present invention may include device and application activity (eg, loading, current application demand on the device, control of the type of access (push vs. pull, or hybrid), Location, density of users in a single area, time of day, frequency with which users interact with applications, content, or devices, and traffic to collaborating clients / servers, or mobile devices without collaborating clients Using this information to shape concurrent traffic) includes a system that optimizes multiple aspects of the connection of devices with wired and wireless networks. Because the server of the present invention is not associated with any particular network provider, it has visibility into network performance among all service providers. This allows optimization to be applied to the device, regardless of operator or service provider, thus improving the user experience and managing network utilization during roaming. Today, bandwidth is considered a major issue in wireless networks. In relation to the need for additional bandwidth to solve access problems, more and more research is being done. Many of the performance enhancement solutions and next-generation standards (such as those commonly referred to as 3.5G, LTE, 4G, and WiMAX) focus on providing increased bandwidth. Although partially solved by the standard, the key problem that remains is that there is less bandwidth in the signaling channel than in the data channel, and the standard does not solve the battery life problem very well.

본원 발명의 기술의 실시예는, 예를 들어, 복수의 애플리케이션으로부터의 요청을 정렬하여 복수의 폴링 요청의 필요성을 최소화하는 것; 특정 콘텐츠 유형을 활용하여 연결/콘텐츠를 프록시화/관리하는 법을 결정하는 것; 장치, 사용자 행동 패턴(사용자가 장치/애플리케이션과 상호대화하는 빈도) 및/또는 네트워크 파라미터와 연계된 특정 휴리스틱을 적용하는 것을 포함한다.Embodiments of the techniques of the present invention include, for example, aligning requests from a plurality of applications to minimize the need for a plurality of polling requests; Determining how to proxy / manage connections / content using specific content types; Applying specific heuristics associated with devices, user behavior patterns (frequency of user interactions with devices / applications), and / or network parameters.

본 발명의 기술의 실시예는, 다양한 위젯(widget), RSS 리더(RSS reader), 등에 의해 수행되는 반복되는 HTTP 폴을 원격 네트워크 노드(가령, 네트워크 운영 센터(Network Operation Center, NOC))로 이동시키는 것, 따라서, 장치 배터리/전력 소모량, 라디오 채널 시그널링 및 대역폭 사용량을 상당히 낮추는 것을 포함한다. 덧붙이자면, 기존 애플리케이션이 변할 필요가 없도록 분담(offloading)이 투명하게(transparently) 수행될 수 있다.Embodiments of the technology of the present invention move repeated HTTP polls performed by various widgets, RSS readers, and the like to remote network nodes (e.g., Network Operation Centers (NOCs)). And thus significantly lowering device battery / power consumption, radio channel signaling and bandwidth usage. In addition, offloading can be transparently performed so that existing applications do not need to be changed.

일부 실시예에서, 이는 동일한 콘텐츠(RSS 피드, 위젯 데이터 세트)에 대한, 특정 규칙(가령, 15분마다 발생)에 부합하는 반복되는 요청을 자동으로 검출하는 모바일 장치(가령, 임의의 무선 장치)상의 로컬 프록시를 이용해 구현될 수 있다. 로컬 프록시는 서버(가령, 통신 네트워크의 하나의 요소로서 동작하는 프록시 서버)로의 폴링을 위임하면서 모바일 장치에 콘텐츠를 자동으로 캐싱할 수 있다. 그 후, 상기 서버는 콘텐츠가 변한 경우 모바일/클라이언트 프록시에게 통지할 수 있으며, 콘텐츠가 변하지 않은 경우(또는 콘텐츠가 충분히, 즉, 식별될 만큼 변경되지 않은 경우) 모바일 프록시는 (라디오를 전혀 이용할 필요 없이) 자신의 캐시 내 최신 버전을 사용자에게 제공한다. 이러한 방식으로, 요청이 모니터링되어 요청이 새로운 것/변경됨(new/changed)이라고 플래깅된 적 없는 콘텐츠에 대한 것인 경우, 모바일 또는 무선 장치(가령, 모바일 폰, 스마트 폰, M2M 모듈/MODEM, 또는 그 밖의 다른 임의의 무선 장치 등)는 데이터 연결을 개설하거나 사용할 필요가 없다. In some embodiments, this is a mobile device (eg, any wireless device) that automatically detects repeated requests for the same content (RSS feeds, widget data sets) that meet specific rules (eg, occur every 15 minutes). Can be implemented using a local proxy. The local proxy can automatically cache content to the mobile device while delegating polling to a server (eg, a proxy server operating as one element of the communication network). The server may then notify the mobile / client proxy if the content has changed, and if the content has not changed (or if the content has not changed sufficiently, i.e. identified), the mobile proxy needs to use the radio at all. To provide users with the latest version in their cache. In this way, if the request is monitored and is for content that has never been flagged as being new / changed, the mobile or wireless device (eg, mobile phone, smartphone, M2M module / MODEM, Or any other wireless device, etc.) need not establish or use a data connection.

모니터링될 (가령, URL/콘텐츠를 포함하는) 콘텐츠 소스/애플리케이션 서버를 자동으로 추가하기 위한 로직이 다양한 인자들, 가령, 콘텐츠가 동일할 빈도, 동일한 요청이 만들어지는 빈도(고정된 간격/패턴이 있는가?), 어느 애플리케이션이 데이터를 요청 중인가, 등을 체크할 수 있다. 로컬 프록시 및/또는 서버에 의해, 캐시를 사용하는 것과, 원본 소스로부터 데이터를 요청하는 것 중에서 결정하기 위해 유사한 규칙이 구현되고 실행될 수 있다. The logic for automatically adding content source / application servers to be monitored (e.g., including URLs / content) is based on various factors, such as how often content is the same, how often the same request is made (fixed interval / pattern , Which applications are requesting data, and so on. Similar rules may be implemented and executed by the local proxy and / or server to determine between using the cache and requesting data from the original source.

예를 들면, 요청이 계획에 없던/예기치 않은 때(사용자에 의해 개시되는 체크), 또는 캐시 등으로부터 응답이 n번 연속으로 제공된 후, 또는 애플리케이션이 배경(background)에서 실행 중인지, 전경(foreground)의 더 상호대화적 모드에서 실행 중인지 여부가 있다. 점점 더 많은 모바일 애플리케이션 또는 무선 지원 애플리케이션이 네트워크에서 이용 가능한 자원을 기반으로 할수록, 이는 점점 더 중요해진다. 덧붙이자면, 본원발명의 기술에 의해, 네트워크로부터 불필요한 채터(chatter)가 제거되며, 이는, 무선 스펙트럼 사용량을 최적화하려 시도하는 운영자에게 유익하다. For example, when a request is unplanned / unexpected (check initiated by the user), or after a response has been provided n consecutive times from a cache or the like, or if the application is running in the background, foreground Is running in more interactive mode. As more and more mobile applications or wireless enabled applications are based on the resources available on the network, this becomes more and more important. In addition, the technique of the present invention eliminates unnecessary chatter from the network, which is beneficial for operators attempting to optimize radio spectrum usage.

트래픽traffic 카테고리화Categorization 및 정책 And policy

일부 실시예에서, 본원발명의 프록시 시스템은, 캐싱 및/또는 성형(shape)하기 위한 트래픽(데이터, 콘텐츠, 메시지, 업데이트 등)을 선택하기 위한 정책을 확립할 수 있다. 덧붙이자면, 네트워크 요청을 하는 애플리케이션의 관찰, 또는 애플리케이션으로부터의 명시적 정보(explicit information)의 수집, 또는 애플리케이션이 도달하는 네트워크 도착지에 대한 인지로부터 도출된 정보를 조합함으로써, 본원발명의 기술은 전송되는 트래픽이 속하는 카테고리를 결정하거나, 추론할 수 있다. In some embodiments, the proxy system of the present invention may establish a policy for selecting traffic (data, content, messages, updates, etc.) for caching and / or shaping. In addition, by combining information derived from the observation of an application making a network request, or the collection of explicit information from an application, or the perception of the network destination that the application arrives at, the techniques of the present invention are transmitted. The category to which the traffic belongs can be determined or inferred.

예를 들어, 하나의 실시예에서, 모바일 또는 무선 트래픽은, (a1) 상호대화 트래픽, 또는 (a2) 배경 트래픽으로 카테고리화될 수 있다. 차이점은, (a1)에서, 사용자는 응답을 적극적으로 기다리지만, (a2)에서 사용자는 응답을 기대하지 않는다. 이러한 카테고리화는 두 번째 유형의 카테고리화와 함께, 또는 대신하여, 사용될 수 있고, 두 번째 유형의 카테고리는 다음과 같다: (b1) 즉시(immediate), (b2) 낮은 우선순위, (b3) 요청하는 애플리케이션이 전경(foreground)에 있고 액티브 상태인 경우, 즉시.For example, in one embodiment, mobile or wireless traffic may be categorized as (a1) interactive traffic, or (a2) background traffic. The difference is that at (a1) the user actively waits for a response, but at (a2) the user does not expect a response. This categorization can be used with, or in place of, the second type of categorization, the second type of categories being: (b1) immediate, (b2) low priority, (b3) request Immediately if the application it is in the foreground and is active.

예를 들어, 새로운 업데이트, 메시지, 또는 전자메일은, 즉시 전달될 (b1) 카테고리에 속할 수 있지만, 여전히 (a2) 배경 트래픽이다(사용자는 이를 적극적으로 기다리지 않는다). 활성 챗 세션(active chat session) 밖으로 나올 때, 유사한 카테고리화가 인스턴트 메시지(instant message)에 적용된다. 활성 챗 세션 동안 사용자는 응답이 더 빠를 것을 기대한다. 이러한 사용자 기대는 결정되거나 추론되며, 트래픽 카테고리화 및 정책 이행을 수행함에 있어서 네트워크 사용과 장치 자원을 최적화할 때, 요인으로 고려된다.For example, a new update, message, or e-mail may belong to the category (b1) to be delivered immediately, but still (a2) is background traffic (user does not actively wait for it). When exiting an active chat session, a similar categorization is applied to instant messages. During an active chat session, the user expects a faster response. These user expectations are determined or inferred and considered as factors when optimizing network usage and device resources in performing traffic categorization and policy enforcement.

기재된 카테고리화 스킴의 적용의 일부 예로는, (a1) 상호대화 트래픽이 (b1) 즉시(immediate)로 카테고리화되지만, (a2) 배경 트래픽은 (b2) 또는 (b3)일 수도 있다. 낮은 우선순위 전송(transfer)의 예로는 전자메일 또는 메시지 유지관리 트랜잭션, 가령, 전자메일 또는 그 밖의 다른 메시지 삭제하기, 또는 메일 또는 애플리케이션 서버에서 읽힐 때 전자메일에 표시하기 트랜잭션이 있다. 일반적으로 이러한 전송은 (a) 타이머가 타임아웃 값(가령, 2분)을 초과하는 때, 및 (b) 데이터가 그 밖의 다른 목적으로 전송될 때 중에서 더 이른 때 발생할 수 있다.In some examples of the application of the categorization scheme described, (a1) interactive traffic is categorized as (b1) immediate, but (a2) background traffic may be (b2) or (b3). Examples of low priority transfers are e-mail or message maintenance transactions, such as deleting an e-mail or other message, or marking the e-mail when read from the mail or application server. In general, this transfer may occur earlier in (a) when the timer exceeds a timeout value (eg, 2 minutes), and (b) when the data is sent for other purposes.

(b3)의 예로는 IM 프레즌스(presence) 업데이트, 주식 시세 표시기 업데이트, 날씨 업데이트, 상태 업데이트, 뉴스 피드(news feed)가 있다. 애플리케이션의 UI가 전경(foreground)에 있거나, 및/또는 액티브 상태일 때(가령, 장치/폰의 백라이트에 의해 지시되거나, 그 밖의 다른 센서의 상태로부터 결정 또는 추론되는 바와 같이), 업데이트는, 서버가 장치로 푸시(push)될 임의의 것을 가질 때마다 즉시 이뤄질 것이라고 여겨질 수 있다. 애플리케이션이 전경에 있지 않거나 액티브 상태가 아닐 때, 이러한 업데이트는, 애플리케이션이 전경으로 오고 액티브 상태가 될 때까지 억제될 수 있다.Examples of (b3) include IM presence updates, stock ticker updates, weather updates, status updates, and news feeds. When the UI of the application is in the foreground and / or active (eg, as indicated by the backlight of the device / phone, or determined or inferred from the state of some other sensor), the update It may be assumed that whenever a has anything to be pushed to the device it will happen immediately. When the application is not in the foreground or not active, this update can be suppressed until the application comes to the foreground and becomes active.

일부 실시예에서, 네트워크는 (a1) 상호대화 트래픽과 (a2) 배경 트래픽에 대해 동시에 선택되거나 최적화될 수 있다.In some embodiments, the network may be simultaneously selected or optimized for (a1) interactive traffic and (a2) background traffic.

일부 실시예에서, 무선 장치 또는 모바일 장치 프록시는 (서버 프록시와 별도로, 또는 함께) 트래픽을, (예를 들어) (a1) 상호대화 트래픽, 또는 (a2) 배경 트래픽으로 카테고리화할 수 있기 때문에, 서로 다른 유형의 트래픽에 서로 다른 정책을 적용할 수 있다. 이는, 내부적으로 (a1)과 (a2) 트래픽에 대해 서로 다르게 동작할 수 있음을 의미한다(이는, 예를 들어, 상호대화 트래픽이 네트워크를 전체적으로 또는 부분적으로 통과하게 하고, 배경 트래픽에는 더 엄격한 트래픽 제어를 적용함으로써, 또는 장치 측이 서버로부터 호스트의 콘텐츠가 업데이트됐다는 정보를 수신했을 때만 라디오를 활성화시키는 요청을 허용하는 등에 의해 이뤄진다).In some embodiments, wireless devices or mobile device proxies can categorize traffic (separately or together with a server proxy) to each other because they can be categorized as (eg) (a1) interactive traffic, or (a2) background traffic. Different policies can be applied to different types of traffic. This means that it can internally behave differently for (a1) and (a2) traffic (which, for example, allows interactive traffic to pass through the network in whole or in part and stricter traffic for background traffic). By applying control, or by allowing the device side to request to activate the radio only when it receives information from the server that the host's content has been updated).

요청이 무선 네트워크를 통한 액세스를 요구할 때, 본원발명의 기술은 라디오 레이어(radio layer)에게, 서로 다른 트래픽에 서로 다른 네트워크 설정을 적용할 것을 요청할 수 있다. 트래픽과 네트워크의 유형에 따라서, 이는 다음의 여러 다른 수단에 의해 달성될 수 있다:When a request requires access via a wireless network, the techniques of the present invention can request the radio layer to apply different network settings to different traffic. Depending on the type of traffic and network, this can be accomplished by several different means:

(1) (a1)에 대해 3G/4G, (a2)에 대해 2G/2.5G를 이용하기,(1) using 3G / 4G for (a1), 2G / 2.5G for (a2),

(2) 서로 다른 데이터 세트에 대해 네트워크 설정을 명시적으로 특정하기(가령, FACH(forward access channel) vs. DCH(dedicated channel)의 사용 관점에서, 또는 배경 트래픽에 대한 더 낮은/더 높은 네트워크 효율의 데이터 전송 속도(data rate)를 그 밖의 다른 방식으로 요청하기), 또는(2) Explicitly specify network settings for different data sets (e.g., in terms of the use of forward access channel (FACH) vs. dedicated channel (DCH), or lower / higher network efficiency for background traffic) Request the data rate of the data in any other way), or

(3) 서로 다른 데이터 세트에 대해 서로 다른 네트워크 액세스 포인트를 이용하기(상기 (1) 및 (2)와 유사하게 네트워크 자원을 서로 다르게 이용하도록 설정될 액세스 포인트).(3) Using different network access points for different data sets (access points to be set up to use different network resources similarly to (1) and (2) above).

덧붙이자면, 3GPP 빠른 휴면(Fast Dormancy)은, 애플리케이션, 운영 체제, 또는 모바일 장치가 장래에 더 효율적이 될 트래픽 유형을 알고 있도록 하는 개선을 요구한다. 트래픽 카테고리에 대한 지식을 갖고, 빠른 휴면을 이용할 수 있는 본원발명의 시스템의 실시예는 빠른 휴면에서 확인된 문제점을 해결할 수 있다. 이러한 방식으로, 모바일 또는 광대역 네트워크는, 배터리 소모량과 네트워크 시그널링 자원 모두에 부정적인 영향을 미치는 타협된 구성으로 구성될 필요가 없다. In addition, 3GPP Fast Dormancy requires an improvement that allows applications, operating systems, or mobile devices to know the type of traffic that will be more efficient in the future. Embodiments of the system of the present invention with knowledge of traffic categories and able to use fast dormancy can solve the problems identified in the fast dormancy. In this way, the mobile or broadband network need not be configured with a compromised configuration that negatively impacts both battery consumption and network signaling resources.

폴링Polling 스케줄 schedule

폴링 스케줄을 검출(또는 결정)함으로써, 프록시 서버(분산 캐시 시스템의 서버측)는 자신의 폴을 애플리케이션 폴과 가능한 가까이 둘 수 있다. 많은 애플리케이션이 (가령, 4시간마다, 또는 30초마다, 또는 또 다른 시간 간격으로) 스케줄링된 간격 폴링을 이용한다. 클라이언트 측 프록시는 시간 기준을 기초로 하여 자동 폴을 검출하고, 애플리케이션에 대한 자동 폴링 프로파일을 만들 수 있다. 예를 들어, 로컬 프록시가 요청(request)과 2, 3, 4, 또는 그 이상의 폴 사이의 시간 간격을 검출하려 시도하며, 시간 간격들이 모두, 각각 1초(또는 상대적 가까움에 대한 또 다른 기준) 내에 있는 경우, 자동 속도(automatic rate)를 결정한다. 그렇지 않은 경우, 클라이언트는 더 많은 개수의 폴링 이벤트(가령, 10-12개의 폴)로부터 데이터를 수집하고, 통계적 분석을 적용하여, 사용되는 평균 간격에 대한 값을 결정, 계산, 또는 추정할 수 있다. 폴링 프로파일은, 상기 폴링 프로파일이 사용되는 서버로 전달된다. 빈번한 수동 요청이 있는 경우, 로컬 프록시는 이를 비-중요 애플리케이션(non-critical application)에 대한 프로파일로부터 얻어진 이 애플리케이션에 대한 디폴트 간격으로 대체할 수 있다. By detecting (or determining) the polling schedule, the proxy server (server side of the distributed cache system) can keep its poll as close as possible to the application poll. Many applications use scheduled interval polling (eg, every 4 hours, or every 30 seconds, or at another time interval). The client-side proxy can detect automatic polls based on time criteria and create an automatic polling profile for the application. For example, a local proxy attempts to detect a time interval between a request and two, three, four, or more polls, all of which are one second each (or another criterion for relative closeness). If within, determine the automatic rate. Otherwise, the client can collect data from a larger number of polling events (eg, 10-12 polls) and apply statistical analysis to determine, calculate, or estimate the value for the average interval used. . The polling profile is forwarded to the server where the polling profile is used. If there are frequent manual requests, the local proxy can replace this with the default interval for this application, which is obtained from the profile for non-critical applications.

일부 실시예에서, 로컬 프록시(가령, 장치 측 프록시)가 애플리케이션/클라이언트 폴을 계속 모니터링하고, 폴링 간격을 업데이트할 수 있다. 현재 값에서 30%(또는 또 다른 지정 값/동적 값/조건적 값)보다 많이 변할 경우, 프록시 서버(가령, 서버 측 프록시)로 전달된다. 이 방식은, "로스트 인터레스트(lost interest)" 시나리오라고 일컬어질 수 있다. 일부 예에서, 로컬 프록시는 이러한 스케줄에서 벗어나 이뤄지는 요청을 인지하고, 이러한 요청을 "수동(manual)"이라고 간주할 수 있으며, 이들을 적절하게 처리할 수 있다.In some embodiments, local proxies (eg, device side proxies) may continue to monitor application / client polls and update polling intervals. If it changes by more than 30% (or another specified value / dynamic value / conditional value) from the current value, it is passed to the proxy server (eg server-side proxy). This approach may be referred to as a "lost interest" scenario. In some examples, the local proxy may be aware of requests made outside of this schedule and may consider these requests to be "manual" and handle them accordingly.

애플리케이션 클래스/캐싱의 Of application classes / caching 모드mode

일부 실시예에서, 애플리케이션은 3가지 캐싱 그룹 또는 모드로 구성될 수 있다. 각각의 모바일 클라이언트/애플리케이션은, 하나 이상의 조건에 따라서, 이들 모드 중 하나로서 다뤄지거나, 복수의 모드를 이용해 다뤄지도록 카테고리화될 수 있다. In some embodiments, the application may be configured in three caching groups or modes. Each mobile client / application can be categorized to be treated as one of these modes, or to be handled using multiple modes, depending on one or more conditions.

A) 완전 캐싱됨(fully cached) - 프록시 서버가 로컬 프록시에게 업데이트하라고 할 때만 로컬 프록시가 업데이트한다(가령, 애플리케이션 요청을 애플리케이션 서버/콘텐츠 호스트에 의해 서비스될 네트워크를 통해 직접 전송한다). 이 모드에서, 로컬 프록시가 수동 요청을 무시할 수 있고, 프록시 서버는 애플리케이션 서버/콘텐츠 제공자에게 폴링하도록, 검출된 자동 프로파일을 사용한다(가령, 스포츠 점수 애플릿, 페이스북(Facebook), 10, 15, 30, 또는 그 이상의 폴).A) fully cached-the local proxy updates only when the proxy server tells the local proxy to update (eg, sends an application request directly over the network to be served by the application server / content host). In this mode, the local proxy can ignore manual requests, and the proxy server uses the detected automatic profile to poll the application server / content provider (eg, sports score applet, Facebook, 10, 15, 30, or more poles).

B) 부분 캐싱됨(partially cached) - 로컬 프록시는 자동 요청(가령, 애플리케이션 자동 재생)을 위해 로컬 또는 내부 캐시를 이용하지만, 그 밖의 다른 스케줄링된 요청은 일부 수동 요청(가령, 전자메일, 다운로드, 이베이(Ebay) 또는 일부 페이스북(Facebook) 요청)을 거친다. B) Partially cached-Local proxies use local or internal caches for automatic requests (e.g., application auto-replay), while other scheduled requests may require some manual requests (e.g. email, download, Via Ebay or some Facebook requests).

C) 캐싱되지 않음(가령, 실시간 주식 시세 표시기, 스포츠 점수/상태; 그러나 일부 경우, 15분 지연된 인용은 30초 스케줄에 안전하게 놓일 수 있다 - B 또는 심지어 A)C) not cached (e.g., real-time stock ticker, sport score / status; but in some cases, a 15 minute delayed citation can be safely placed on a 30 second schedule-B or even A)

콘텐츠 변화율 및 데이터의 핵심 문자(critical character)를 기초로, 실제 애플리케이션 또는 캐싱 모드 분류가 결정될 수 있다. 디폴트로 분류되지 않은 애플리케이션은 클래스 C로 설정될 수 있다. Based on the rate of change of content and the critical characters of the data, the actual application or caching mode classification can be determined. Applications not classified by default can be set to class C.

백라이트 및 액티브 애플리케이션Backlight and Active Applications

일부 실시예에서, 로컬 프록시는 장치 백라이트 상태를 검출함으로써 시작한다. 동일한 특징(signature)을 갖는 요청이, 요청이 향하는 본래 호스트 서버/콘텐츠 서버에게 폴링하는 중인 프록시 서버에 등록되는 경우, 스크린 라이트의 '꺼진 상태(off)'에 의해 만들어지는 요청이 로컬 캐시를 사용하기 위해 허용될 수 있다. 스크린 라이트가 켜진 상태인 경우, 배경 애플리케이션인지 여부를 판단하거나, 로컬 캐시의 엔트리가 상기 요청을 만족시키기 위해 사용될 수 있는지 또는 사용될 수 없는지에 대한 그 밖의 다른 지시자(indicator)에 대한 추가 검출이 이뤄질 수 있다. 식별될 때, 어느 로컬 엔트리가 사용될 수 있는지에 대한 요청이 스크린 라이트 꺼짐 상황과 동일하게 처리될 수 있다. 캐싱된 데이터가 요청을 프로세싱하도록 사용되기에 안전할 때 전경 요청(foreground request)이 앞서 언급된 애플리케이션 분류를 사용할 수 있다. In some embodiments, the local proxy starts by detecting a device backlight state. If a request with the same signature is registered with a proxy server that is polling the original host server / content server to which the request is directed, the request made by the screen light's 'off' uses the local cache. May be allowed to do so. When the screen light is on, further detection may be made to determine whether it is a background application or other indicator of whether or not an entry in the local cache can be used to satisfy the request. have. When identified, a request for which local entry can be used may be handled the same as the screen light off situation. A foreground request may use the aforementioned application classification when cached data is safe to be used to process the request.

도 1A는 호스트 서버(가령, 도 1B-도 1C의 호스트 서버(100))로 분담될 원자 프로세스(atomic process)(190)로 그룹지어지는 장치(150)로부터 개시되는 트래픽에서 검출되는 하나의 세트의 이벤트(101, 103 및 105)를 도시하는 예시적 다이어그램이다. 1A is one set detected in traffic originating from device 150 grouped into atomic process 190 to be shared with a host server (eg, host server 100 of FIGS. 1B-1C). An example diagram illustrating the events 101, 103, and 105 of.

모바일 장치(150) 또는 그 로컬 프록시(가령, 도 1C의 프록시(175))가 장치, 가령, 모바일 장치(150)로부터 개시되는 모바일 애플리케이션 트래픽을 인터셉트(intercept)하고, 원자 프로세스(가령, 원자 프로세스(190))를 발생시키거나 생성하는 데 사용될 수 있는 다양한 파라미터를 식별할 수 있다. 원자 프로세스(190)는 모바일 장치(150)로부터의 요청을 호스트 서버(가령, 도 1 및 도 2의 예시의 겨우, 호스트 서버(100 또는 200))로 분담(offload)시키고, 따라서 모바일 네트워크 트래픽을 경감하고 빈 네트워크 자원을 내는 데 사용될 수 있다. The mobile device 150 or its local proxy (eg, proxy 175 of FIG. 1C) intercepts mobile application traffic originating from the device, such as mobile device 150, and processes an atomic process (eg, an atomic process). (190) may identify various parameters that may be used to generate or generate. The atomic process 190 offloads the request from the mobile device 150 to a host server (eg, only the host server 100 or 200 in the example of FIGS. 1 and 2), thus distributing mobile network traffic. It can be used to alleviate and free up network resources.

일반적으로, 원자 프로세스(190)는, 검출된 패턴을 기초로 하는 서로와 관련해 일정 수준의 예측 가능성(predictability)을 가지는, 모바일 애플리케이션(108) 또는 복수의 애플리케이션(도시되지 않음)으로부터 전송되는 요청들의 한 세트, 또는 요청들의 한 세트에 대응하는 지시자를 포함할 수 있으며, 복제/시뮬레이트될 수 있다. 원자 프로세스는, 개체(101)로의 요청 후, 예측되는 시간격을 두고 또 다른 개체로의 또 다른 요청이 뒤따름이 검출될 때, 또는 개체(103)로의 요청에, 각각 예측 가능한 시간격을 두고 2개의 추가 요청이 뒤따름이 검출될 때, 생성될 수 있다. 모바일 장치(150) 및/또는 프록시 서버(가령, 도 1B-1C의 서버(100)의 프록시(125))에 의해 트래픽 패턴이 검출되고, 프록시 서버(125)에 의해 최종 원자 프로세스가 생성될 수 있으며, 이는 도 4-5의 예를 참조하여 더 설명된다. In general, the atomic process 190 is capable of handling requests sent from the mobile application 108 or a plurality of applications (not shown) with a certain level of predictability with respect to each other based on the detected pattern. It may include an indicator corresponding to one set, or one set of requests, and may be replicated / simulated. The atomic process, after a request to the entity 101, is predicted at a predicted time interval, or when it is detected that another request to another entity is followed, or to a request to the entity 103, each at a predictable interval. When two further requests are followed, it may be generated. Traffic patterns may be detected by the mobile device 150 and / or a proxy server (eg, the proxy 125 of the server 100 of FIGS. 1B-1C) and a final atomic process may be generated by the proxy server 125. This is further explained with reference to the example of FIGS. 4-5.

예를 들어, 모바일 장치(150) 또는 원격 개체(remote entity), 가령, 원격 프록시(가령, 도 1B 및 도 1C의 서버(100)의 프록시 서버(125)에 의해, 예측 가능한 시간격이 검출될 수 있다. 예를 들어, 하나의 경우, 시스템은 개체(101)로의 요청이 6:00am PST에서 빈번하게 또는 항상 발생한다고 검출한다. 따라서 원자 프로세스는, 6:00am PST에서 개체(101)로의 요청을 포함하도록 생성될 수 있다. 그 후, 이러한 요청은 모바일 장치(150)로부터 개시되는 것 대시, 서버(가령, 서버(100))로 분담되어, 매일 6:00am에서 발생하는 요청을 수행하도록 할 수 있다. For example, the predictable time interval may be detected by the mobile device 150 or a remote entity, such as a proxy server 125 of the server 100 of FIGS. 1B and 1C. For example, in one case, the system detects that a request to entity 101 occurs frequently or always at 6:00 am PST, so the atomic process requests to entity 101 at 6:00 am PST. This request may then be distributed to the dash that originates from the mobile device 150, such as the server (eg, server 100), to fulfill the request that occurs at 6:00 am daily. Can be.

또 다른 예를 들면, 시스템(가령, 도 1B 및 도 1C에 도시된 장치(150)와 서버(100) 사이의 분산 프록시 시스템)이, 개체(103)로의 요청이 발생할 때마다, 약 10분 후에 개체(105)로의 요청이 발생함을 검출할 수 있다. 따라서 분산 시스템은, 개체(103)로의 요청 및 그 10분 후 개체(105)로의 요청을 포함하는 원자 프로세스를 생성하고, 서버가 이러한 프로세스를 다루도록 분담시킬 수 있다. 생성된 원자 프로세스를 이용해, 개체(103)로의 요청이 발생할 때마다, 시스템은, 정의된 원자 프로세스를 기초로 하여, 개체(105)로의 요청이 약 10분 후에 발생할 가능성이 높음을 추론할 수 있다. 서버(100) 또는 프록시 서버(120)는 이러한 지식을 이용해, 일반적으로 모바일 장치로부터 개시될 필요가 있는 요청을 수행함으로써, 모바일 애플리케이션 활동을 복제하고, 모바일 장치를 대신하여 요청을 수행할 수 있다. 따라서 이러한 분담은, 모바일 장치 자원(가령, 전력 및 배터리), 장치 대역폭, 및 네트워크 자원(가령, 셀룰러 네트워크 자원)을 보존하는 데 유익하다. In another example, a system (eg, a distributed proxy system between the device 150 and the server 100 shown in FIGS. 1B and 1C), after about 10 minutes each time a request to the entity 103 occurs, It may be detected that a request to the entity 105 has occurred. Thus, the distributed system can create an atomic process that includes a request to the entity 103 and a request to the entity 105 10 minutes later, and allocates a server to handle this process. Using the generated atomic process, whenever a request to the entity 103 occurs, the system can infer that, based on the defined atomic process, the request to the entity 105 is likely to occur after about 10 minutes. . The server 100 or proxy server 120 can use this knowledge to replicate mobile application activity and perform requests on behalf of the mobile device by making requests that generally need to be initiated from the mobile device. This sharing is thus beneficial in conserving mobile device resources (eg, power and battery), device bandwidth, and network resources (eg, cellular network resources).

예를 들어, 모바일 장치(250)는, 요청들의 한 세트 내 식별가능한 패턴으로부터, 모바일 애플리케이션으로부터 요청들의 세트가 생성됨을 검출하며, 상기 요청들의 세트 또는 식별 가능한 패턴을 원격 개체(가령, 프록시 서버(125) 또는 서버(100))로 전달하여, 요청들의 세트의 다음번 발생을 원격 개체로 분담시킬 수 있다. 그 후, 원격 개체는 모바일 장치상의 모바일 애플리케이션을 대신하여 요청들의 세트의 다음번 발생을 시뮬레이트할 수 있다. 모바일 애플리케이션은 임의의 모바일 클라이언트 또는 위젯(제한받지 않은 예를 들자면, 모바일 웹 브라우저, 모바일 게임, 모바일 앱(mobile app), 소셜 네트워킹 애플리케이션, 피드 애플리케이션, RSS 리더(RSS reader), 또는 상태 업데이트, 친구 피드(friend feed), 뉴스 피드(news feed), 미디어 콘텐츠(가령, 사진, 오디오, 비디오 등)를 송신/수신할 수 있는 그 밖의 다른 임의의 애플리케이션)을 포함할 수 있다. For example, mobile device 250 detects from the identifiable pattern in a set of requests that a set of requests are generated from the mobile application, and retrieves the set or identifiable pattern of requests from a remote entity (eg, a proxy server ( 125) or server 100) to share the next occurrence of the set of requests to the remote entity. The remote entity can then simulate the next occurrence of the set of requests on behalf of the mobile application on the mobile device. The mobile application can be any mobile client or widget (such as, but not limited to, mobile web browsers, mobile games, mobile apps, social networking applications, feed applications, RSS readers, or status updates, friends). Feeds, news feeds, and any other application capable of sending / receiving media content (eg, photos, audio, video, etc.).

도 1B는 무선 네트워크(또는 광대역 네트워크)에서 자원 보존을 위해, 호스트 서버(100)가, 모바일 장치(가령, 무선 장치(150))와 애플리케이션 서버 또는 콘텐츠 제공자(110), 또는 그 밖의 다른 서버(가령, 광고 서버(120A), 프로모션 콘텐츠 서버(120B), 또는 e-쿠폰 서버(120C)) 사이에서, 트래픽의 관리, 콘텐츠 캐싱, 및/또는 자원 보존을 촉진하는 시스템의 예시적 다이어그램을 도시한다. 호스트 서버는 모바일 장치에서 트래픽을 스누핑(snoop)하여 이벤트들의 세트를 검출할 수 있으며, 상기 이벤트들의 세트는, 모바일 장치로부터 애플리케이션 트래픽 요청을 분담하기 위한 원자 프로세스를 생성하기 위해 사용될 수 있다. FIG. 1B illustrates that the host server 100 may be configured to include a mobile device (eg, wireless device 150) and an application server or content provider 110, or other server for resource conservation in a wireless network (or broadband network). For example, between an advertising server 120A, a promotional content server 120B, or an e-coupon server 120C, shows an example diagram of a system that facilitates management of traffic, content caching, and / or resource conservation. . The host server may snoop traffic at the mobile device to detect the set of events, which set may be used to generate an atomic process for sharing application traffic requests from the mobile device.

클라이언트 장치(150)는, 다른 장치, 서버, 및/또는 다른 시스템(가령, 호스트 서버(100) 및/또는 애플리케이션 서버/콘텐츠 제공자(110))과 연결(가령, 유선, 무선, 셀룰러 연결)을 확립할 수 있는 임의의 시스템 및/또는 장치, 및/또는 장치/시스템의 임의의 조합일 수 있다. 일반적으로, 클라이언트 장치(150)는, 장치(150) 및/또는 호스트 서버(100) 및/또는 애플리케이션 서버/콘텐츠 제공자(110) 사이에 교환되는 정보 및 데이터를 제공하기 위한 디스플레이 및/또는 그 밖의 다른 출력 기능을 포함할 것이다. 애플리케이션 서버/콘텐츠 제공자(110)는, 제 3 자 서버 또는 서비스/콘텐츠 제공자(가령, 광고, 프로모션 콘텐츠, 퍼블리케이션, 또는 전자 쿠폰 서버 또는 서비스)를 포함하는 임의의 서버일 수 있다. 마찬가지로, 예시로서 개별적인 광고 서버(120A), 프로모션 콘텐츠 서버(120B), 및/또는 e-쿠폰 서버(120C)가 애플리케이션 서버, 또는 콘텐츠 제공자로서 도시된다. Client device 150 may establish a connection (eg, a wired, wireless, cellular connection) with another device, server, and / or another system (eg, host server 100 and / or application server / content provider 110). It can be any system and / or device that can be established, and / or any combination of devices / systems. In general, client device 150 may include a display and / or other device for providing information and data exchanged between device 150 and / or host server 100 and / or application server / content provider 110. It will include other output functions. The application server / content provider 110 may be any server including a third party server or a service / content provider (eg, an advertisement, promotional content, publication, or an electronic coupon server or service). Similarly, individual advertisement servers 120A, promotional content server 120B, and / or e-coupon server 120C are shown as application servers, or content providers, by way of example.

예를 들어, 클라이언트 장치(150)가 모바일, 핸드헬드, 또는 휴대용 장치, 무선 장치, 또는 비-휴대용 장치를 포함할 수 있고, 서버 데스크톱, 데스크톱 컴퓨터, 컴퓨터 클러스터, 또는 휴대용 장치(노트북, 랩톱 컴퓨터, 핸드헬드 컴퓨터, 팜톱 컴퓨터, 모바일 폰, 셀 폰, 스마트 폰, PDA, 블랙베리(Blackberry) 장치, 팜 장치, 핸드헬드 타블릿(가령, iPad 또는 그 밖의 다른 임의의 타블릿), 핸드헬드 콘솔, 핸드헬드 게임 장치 또는 콘솔, 임의의 수퍼폰(가령, iPhone), 및/또는 그 밖의 다른 임의의 휴대용, 모바일, 핸드헬드 장치, 또는 고정회선 무선 인터페이스(가령, M2M 장치) 등 중 임의의 것일 수 있다(그러나 이에 국한되지 않음). 하나의 실시예에서, 클라이언트 장치(150), 호스트 서버(100), 및 애플리케이션 서버(110)가 네트워크(106) 및/또는 네트워크(108)를 통해 연결된다. 일부 실시예에서, 장치(150) 및 호스트 서버(100)가 서로 직접 연결될 수 있다. For example, client device 150 may include a mobile, handheld, or portable device, a wireless device, or a non-portable device, and may include server desktops, desktop computers, computer clusters, or portable devices (laptops, laptop computers). , Handheld computer, palmtop computer, mobile phone, cell phone, smartphone, PDA, Blackberry device, palm device, handheld tablet (e.g. iPad or any other tablet), handheld console, hand May be any of a handheld game device or console, any superphone (eg, iPhone), and / or any other portable, mobile, handheld device, or fixed line wireless interface (eg, M2M device), or the like. In one embodiment, client device 150, host server 100, and application server 110 connect via network 106 and / or network 108. In some embodiments, device 150 and host server 100 may be directly connected to each other.

클라이언트 장치(150) 상의 입력 수단(input mechanism)은 터치 스크린 키패드(가령, 싱글 터치, 멀티 터치, 2D 또는 3D 제스처 감지, 등), 물리적 키패드, 마우스, 포인터, 트랙 패드, 모션 검출기(가령, 1축, 2축, 3축 가속도계 등), 광 센서, 커패시턴스 센서, 저항 센서(resistance sensor), 온도 센서, 근접도 센서(proximity sensor), 압전기 장치, 장치 배향 검출기(가령, 전자 나침반(electronic compass), 기울기 센서, 회전 센서, 자이로스코프(gyroscope), 가속도계), 또는 이들의 조합을 포함할 수 있다. Input mechanisms on the client device 150 may include touch screen keypads (eg, single touch, multi-touch, 2D or 3D gesture detection, etc.), physical keypads, mice, pointers, track pads, motion detectors (eg, 1). 3-axis, 2-axis, 3-axis accelerometers), optical sensors, capacitance sensors, resistance sensors, temperature sensors, proximity sensors, piezoelectric devices, device orientation detectors (e.g., electronic compass) , Tilt sensor, rotation sensor, gyroscope, accelerometer), or a combination thereof.

앞서 언급된 입력 수단 또는 그 밖의 다른 수단 중 하나 이상을 통해, 클라이언트 장치(150)에서의 사용자 활동을 지시하는, 수신되거나 검출된 신호가, 본원 발명의 기술에서 클라이언트 장치(150)에서의 상황 인지(context awareness)를 획득할 때 사용될 수 있다. 일반적으로, 클라이언트 장치(150)에서의 상황 인지는, 예를 들어, 클라이언트 장치(150) 동작 또는 상태 인정, 관리, 사용자 활도/행동/상호대화 인지, 검출, 감지, 추적, 추세, 및/또는 애플리케이션(가령, 모바일 애플리케이션) 유형, 행동, 활동, 동작 상태 등을 포함한다(그러나 이에 국한되지 않음). Through one or more of the aforementioned input means or other means, a received or detected signal indicative of user activity at the client device 150 is situationally aware at the client device 150 in the art of the present invention. may be used when obtaining context awareness. In general, situational awareness at client device 150 may be, for example, client device 150 operation or status acknowledgment, management, user activity / action / interaction awareness, detection, detection, tracking, trending, and / or Include (but are not limited to) the type of application (eg, mobile application), behavior, activity, behavioral state, and the like.

본 발명에서의 상황 인지는 네트워크 측 상황 데이터(context data)의 지식 및 검출을 포함하고, 네트워크 정보, 가령, 네트워크 수용량, 대역폭, 트래픽, 네트워크/연결 유형, 및/또는 그 밖의 다른 임의의 동작 상태 데이터를 포함할 수 있다. 네트워크 측 상황 데이터는 (가령, 호스트 서버 및/또는 장치(150)에 의해) 네트워크 서비스 제공자(가령, 셀 제공자(cell provider)(112), 및/또는 인터넷 서비스 제공자)로부터 수신, 및/또는 질의 받을 수 있다. 클라이언트(150) 측에서 결정된 바의 애플리케이션 상황 인지에 추가로, 또한 애플리케이션 상황 인지는 (호스트(100) 및/또는 클라이언트 장치(150)에 의해) 각자의 애플리케이션/서버 제공자(110)로부터 수신되거나, 획득/질의 받을 수 있다. Context awareness in the present invention includes the knowledge and detection of network side context data and includes network information, such as network capacity, bandwidth, traffic, network / connection type, and / or any other operational state. May contain data. Network-side contextual data is received and / or queried from a network service provider (eg, by the host server and / or device 150) (eg, cell provider 112, and / or internet service provider). I can receive it. In addition to application context awareness as determined at the client 150 side, application context awareness may also be received from the respective application / server provider 110 (by the host 100 and / or client device 150), Can get / question

클라이언트 장치(150)의 데이터 수요를 만족시키기 위해(가령, 애플리케이션, 또는 그 밖의 다른 임의의 요청(가령 HTTP 요청)을 만족시키기 위해) 시스템의 트래픽을 관리하기 위해, 호스트 서버(100)는, 예를 들어, 클라이언트 장치(150), 네트워크(106/108), 애플리케이션(가령, 모바일 애플리케이션), 애플리케이션 서버/제공자(110), 또는 이들의 임의의 조합에 대해 획득된 상황 정보를 사용할 수 있다. 하나의 실시예에서, 명시적 또는 비-명시적 사용자(103) 요청 및/또는 장치/애플리케이션 유지관리 작업에 응답하여 만들어진 데이터 요청을 만족시키기 위해, 호스트 서버(100)에 의해 트래픽이 관리된다. 효율적이고 효과적인 대역폭 활용을 위해 네트워크 소비량, 예를 들어, 셀룰러 네트워크의 사용량이 보존되도록 트래픽이 관리될 수 있다. 덧붙이자면, 성능과 사용자 경험을 여전히 최적화하면서 자원 보존의 일반적인 철학에 따라 장치(150) 측 자원의 사용(가령, 배터리 전력 소모, 라디오 사용, 프로세서/메모리 사용)이 최적화되도록, 호스트 서버(100)가 시스템에서 이러한 트래픽을 관리하고 조화시킬 수 있다.In order to manage the traffic of the system to satisfy the data demands of the client device 150 (eg, to satisfy an application, or any other request (such as an HTTP request)), the host server 100 may, for example, For example, contextual information obtained for client device 150, network 106/108, application (eg, mobile application), application server / provider 110, or any combination thereof may be used. In one embodiment, traffic is managed by the host server 100 to satisfy a data request made in response to an explicit or non-explicit user 103 request and / or a device / application maintenance task. Traffic may be managed such that network consumption, e.g., usage of the cellular network, is preserved for efficient and effective bandwidth utilization. In addition, the host server 100 may be optimized to optimize the use of device 150 side resources (eg, battery power consumption, radio usage, processor / memory usage) according to the general philosophy of resource conservation while still optimizing performance and user experience. System can manage and coordinate this traffic.

예를 들어, 배터리 보존의 맥락에서, 장치(150)는 (예를 들어, 사용자 키스트로크, 백라이트 상태를 관찰하거나 하나 이상의 입력 수단을 통해 또 다른 신호를 관찰하는 등에 의해) 사용자 활동을 관찰하거나 장치(150) 행동을 바꿀 수 있다. 또한 장치(150)는 사용자 활동 또는 행동을 기초로 하여 네트워크 자원 소모에 대한 행동을 바꾸도록 호스트 서버(100)에 요청할 수 있다.For example, in the context of battery conservation, device 150 may observe user activity or device activity (eg, by observing user keystrokes, backlight conditions, or by observing another signal through one or more input means, etc.). (150) You can change your behavior. Device 150 may also request host server 100 to change its behavior on network resource consumption based on user activity or behavior.

하나의 실시예에서, 호스트 서버(100)와 클라이언트 장치(150) 간의 분산 시스템을 이용해 자원 보존을 위한 트래픽 관리가 수행된다. 상기 분산 시스템은 서버 측(100)과 장치/클라이언트 측 상에서 프록시 서버와 캐시 구성요소를 포함할 수 있으며, 예를 들면, 서버(100) 측 상의 서버 캐시(135)와 클라이언트(150) 측 상의 로컬 캐시(185)가 있다.In one embodiment, traffic management for resource conservation is performed using a distributed system between the host server 100 and the client device 150. The distributed system may include proxy server and cache components on the server side 100 and the device / client side, for example, the server cache 135 on the server 100 side and the local on the client 150 side. There is a cache 185.

네트워크(가령, 네트워크(106 및/또는 108))와 장치(150)에서의 자원 보존을 위한 상황 인지 트래픽 관리를 위해 개시된 기능 및 기법이 분산 프록시 및 캐시 시스템내에 있다. 프록시 및 캐시 시스템은 특정 클라이언트 장치(150) 및/또는 호스트 서버(100) 상에 분산 위치될 수 있다. 분산 프록시 및 캐시 시스템은 도 1B에 도시된 예시적 다이어그램을 추가로 참조하여 도시된다. 클라이언트 장치(150) 내 프록시 및 캐시 구성요소, 호스트 서버(100), 및 이들 내 관련 구성요소에 의해 수행되는 기능 및 기법이 도 2-3의 예를 추가로 참조하여 상세히 설명된다. The functions and techniques disclosed for context aware traffic management for resource conservation in the network (eg, network 106 and / or 108) and device 150 are within distributed proxies and cache systems. The proxy and cache system may be distributedly located on a particular client device 150 and / or host server 100. The distributed proxy and cache system is shown with further reference to the example diagram shown in FIG. 1B. The functions and techniques performed by the proxy and cache components in the client device 150, the host server 100, and related components therein are described in detail with further reference to the example of FIGS. 2-3.

하나의 실시예에서, 클라이언트 장치(150)는 네트워크(106)를 통해 호스트 서버(100) 및/또는 애플리케이션 서버(110)와 통신하며, 상기 네트워크(106)는 셀룰러 네트워크 및/또는 광대역 네트워크일 수 있다. 네트워크(대역폭 이용률) 및 장치 자원(가령, 배터리 소모)을 구현하도록, 장치(150)와 다양한 애플리케이션 서버/콘텐츠 제공자(110) 간의 전체 트래픽 관리를 촉진하기 위해, 호스트 서버(100)가 네트워크(108)를 통해 애플리케이션 서버/제공자(110)와 통신할 수 있으며, 상기 네트워크(108)는 인터넷(가령, 광대역 네트워크)를 포함할 수 있다. In one embodiment, client device 150 communicates with host server 100 and / or application server 110 via network 106, which network 106 may be a cellular network and / or a broadband network. have. In order to facilitate overall traffic management between the device 150 and the various application server / content providers 110 to implement a network (bandwidth utilization) and device resources (eg, battery consumption), the host server 100 is configured to execute network 108. May communicate with the application server / provider 110, and the network 108 may include the Internet (eg, a broadband network).

일반적으로, 클라이언트 장치(150), 호스트 서버(100), 및/또는 애플리케이션 서버(100)가 통신하는 네트워크(106 및/또는 108)는 셀룰러 네트워크, 광대역 네트워크, 전화 네트워크, 공개 네트워크(open network)(가령, 인터넷), 또는 비공개 네트워크(가령, 인트라넷(intranet) 및/또는 익스트라넷(extranet)), 또는 이들의 임의의 조합일 수 있다. 예를 들어, 인터넷은, 임의의 알려진 또는 편리한 프로토콜(가령, TCP/IP 프로토콜, UDP, HTTP, DNS, FTP, UPnP, NSF, ISDN, PDH, RS-232, SDH, SONET 등)를 통해 파일 전송, 원격 로그인, 전자메일, 뉴스, RSS, 클라우드 기반 서비스, 인스턴트 메시징, 비주얼 음성메일(visual voicemail), 푸시 메일, VoIP, 및 그 밖의 다른 서비스를 제공할 수 있다. In general, networks 106 and / or 108 with which client device 150, host server 100, and / or application server 100 communicate may be a cellular network, a broadband network, a telephone network, an open network. (Eg, the Internet), or a private network (eg, an intranet and / or extranet), or any combination thereof. For example, the Internet may transfer files via any known or convenient protocol (eg, TCP / IP protocol, UDP, HTTP, DNS, FTP, UPnP, NSF, ISDN, PDH, RS-232, SDH, SONET, etc.). , Remote login, e-mail, news, RSS, cloud-based services, instant messaging, visual voicemail, pushmail, VoIP, and other services.

네트워크(106 및/또는 108)는, 클라이언트 장치(150)와 호스트 서버(100)에게 연결성(connectivity)을 제공하기 위해 전체적으로 또는 부분적으로 함께 동작하는 개별 네트워크들의 임의의 집합일 수 있으며, 서비스되는 시스템 및 장치에게 하나 이상의 네트워크로 보일 수 있다. 하나의 실시예에서, 클라이언트 장치(150)와의 통신이, 공개 네트워크, 가령 인터넷, 또는 비공개 네트워크, 광대역 네트워크, 가령, 인트라넷(intranet) 및/또는 익스트라넷(extranet)에 의해 이뤄질 수 있다. 하나의 실시예에서, 통신은, 보안 통신 프로토콜, 가령, 보안 소켓 계층(SSL: secure sockets layer), 또는 전송 계층 보안(TLS: transport layer security)에 의해 이뤄질 수 있다. The networks 106 and / or 108 may be any collection of separate networks that operate in whole or in part to provide connectivity to the client device 150 and the host server 100, and the system being serviced. And to the device as one or more networks. In one embodiment, communication with client device 150 may be by a public network, such as the Internet, or a private network, a broadband network, such as an intranet and / or an extranet. In one embodiment, the communication may be via a secure communication protocol, such as a secure sockets layer (SSL), or transport layer security (TLS).

덧붙이자면, 통신은, 하나 이상의 네트워크, 가령, WiMax, LAN(Local Area Network), WLAN(Wireless Local Area Network), PAN(Personal area network), CAN(Campus area network), MAN(Metropolitan area network), WAN(Wide area network), WWAN(Wireless wide area network), 또는 임의의 광대역 네트워크(그러나 이에 국한되지 않음)를 통해, 이뤄지고, 예를 들어, GSM(Global System for Mobile Communication), PCS(Personal Communications Service), 블루투스(Bluetooth), WiFi, 고정회선 무선 데이터(Fixed Wireless Data), 2G, 2.5G, 3G, 4G, IMT-Advanced, pre-4G, LTE Advanced, 모바일 WiMax, WiMax 2, WirelessMAN-Advanced 네트워크, EDGE(enhanced data rates for GSM evolution), GPRS(general packet radio service), enhanced GPRS, iBurst, UMTS, HSPDA, HSUPA, HSPA, UMTS-TDD, 1xRTT, EV-DO, 메시징 프로토콜(가령, TCP/IP, SMS, MMS, XMPP(extensible messaging and presence protocol), RTMP(real time messaging protocol), IMPP(instant messaging and presence protocol), 인스턴트 메시징, USSD, IRC), 또는 그 밖의 다른 임의의 무선 데이터 네트워크, 광대역 네트워크, 또는 메시징 프로토콜 등의 기법에 의해 더 활성화된다.In addition, the communication may include one or more networks, such as WiMax, local area network (LAN), wireless local area network (WLAN), personal area network (PAN), campus area network (CAN), metropolitan area network (MAN), Through a wide area network (WAN), a wireless wide area network (WWAN), or any broadband network, but not limited to, for example, Global System for Mobile Communication (GSM), Personal Communications Service (PCS) ), Bluetooth, WiFi, Fixed Wireless Data, 2G, 2.5G, 3G, 4G, IMT-Advanced, pre-4G, LTE Advanced, Mobile WiMax, WiMax 2, WirelessMAN-Advanced Network, Enhanced data rates for GSM evolution (EDGE), general packet radio service (GPRS), enhanced GPRS, iBurst, UMTS, HSPDA, HSUPA, HSPA, UMTS-TDD, 1xRTT, EV-DO, messaging protocols (e.g. TCP / IP, SMS, MMS, extensible messaging and presence protocol (XMPP), real time messaging protocol (RTMP), instant messaging and presenc e protocol), instant messaging, USSD, IRC), or any other wireless data network, broadband network, or messaging protocol.

도 1C는, 자원 보존 및 콘텐츠 캐싱을 위해, 장치(150)와 애플리케이션 서버 또는 콘텐츠 제공자(110) 또는 그 밖의 다른 서버(가령, 광고 서버(120A), 프로모션 콘텐츠 서버(120B), 또는 e-쿠폰 서버(120C)) 사이에서 네트워크 트래픽 관리를 촉진하는, 호스트 서버(100)와 장치(150) 사이에 분산되어 있는 프록시 및 캐시 시스템의 예시적 다이어그램을 도시한다. 호스트 서버(100)와 장치(150) 사이에 분산된 프록시 시스템은 모바일 장치(150)상에서 트래픽을 추가로 스누핑하여, 이벤트들의 세트를 검출할 수 있고, 상기 이벤트들의 세트는 원자 프로세스를 생성하여, 모바일 장치(150)로부터 애플리케이션 트래픽 요청을 분담시킬 수 있다. 1C illustrates an apparatus 150 and an application server or content provider 110 or other server (e.g., ad server 120A, promotional content server 120B, or e-coupon) for resource conservation and content caching. An example diagram of a proxy and cache system distributed between host server 100 and device 150, facilitating network traffic management between servers 120C). A proxy system distributed between host server 100 and device 150 may further snoop traffic on mobile device 150 to detect a set of events, the set of events creating an atomic process, Application traffic requests from mobile device 150 may be shared.

분산 프록시 및 캐시 시스템은, 서버 측의 구성요소로서, 예를 들어, 프록시 서버(125)(가령, 원격 프록시) 및 서버 캐시(135)를 포함할 수 있다. 도시된 바와 같이, 서버 측 프록시(125) 및 캐시(135)는, 호스트 서버(100)의 내부에 위치할 수 있다. 덧붙이자면, 서버 측의 프록시 서버(125) 및 캐시(135)가 부분적으로 또는 전적으로, 호스트 서버(100)의 외부에 위치할 수 있으며, 네트워크(106 및 108) 중 하나 이상을 통해 통신한다. 예를 들어, 프록시 서버(125)가 호스트 서버 외부에 있고, 서버 캐시(135)는 호스트 서버(100)에 유지될 수 있다. 또는, 서버 캐시가 호스트 서버(100) 외부에 있는 동안, 프록시 서버(125)는 호스트 서버(100) 내에 있을 수 있다. 덧붙여, 프록시 서버(125) 및 캐시(135) 각각은, 부분적으로 호스트 서버(100) 내부에 있고, 부분적으로는 호스트 서버(100)의 외부에 있을 수 있다. 애플리케이션 서버/콘텐츠 제공자(110)는, 제3자 서버 또는 서비스/콘텐츠 제공자(가령, 광고, 프로모션 콘텐츠, 퍼블리케이션, 또는 전자 쿠폰 서버 또는 서비스)를 포함하는 임의의 서버를 포함할 수 있다. 마찬가지로, 애플리케이션 서버 또는 콘텐츠 제공자로서, 개별적인 광고 서버(120A), 프로모션 콘텐츠 서버(120B), 및/또는 e-쿠폰 서버(120C)가 도시된다.The distributed proxy and cache system may include, for example, proxy server 125 (eg, remote proxy) and server cache 135 as server-side components. As shown, the server side proxy 125 and cache 135 may be located inside the host server 100. In addition, the server-side proxy server 125 and cache 135 may be located, partially or wholly outside of the host server 100, and communicate over one or more of the networks 106 and 108. For example, proxy server 125 may be external to host server, and server cache 135 may be maintained at host server 100. Alternatively, proxy server 125 may be within host server 100 while the server cache is external to host server 100. In addition, each of proxy server 125 and cache 135 may be partly within host server 100 and partly outside host server 100. The application server / content provider 110 may comprise any server, including a third party server or a service / content provider (eg, an advertisement, promotional content, publication, or an electronic coupon server or service). Likewise, as an application server or content provider, individual ad server 120A, promotional content server 120B, and / or e-coupon server 120C are shown.

분산 시스템은, 하나의 실시예에서, 클라이언트 측 구성요소도 포함할 수 있으며, 제한받지 않는 예를 들면, 로컬 프록시(175)(가령, 모바일 장치상의 모바일 클라이언트), 및/또는 장치(150)(가령, 모바일 장치) 내부에 상주하는 로컬 캐시(185)가 있다. The distributed system, in one embodiment, may also include client-side components, including but not limited to, for example, local proxy 175 (eg, mobile client on a mobile device), and / or device 150 ( For example, there is a local cache 185 residing inside a mobile device).

덧붙이자면, 클라이언트 측 프록시(175)와 로컬 캐시(185)가 부분적으로 또는 전적으로 장치(150) 외부에 있을 수 있으며, 네트워크(106 및 108) 중 하나 이상을 통해 통신한다. 예를 들어, 로컬 프록시(175)는 장치(150) 외부에 있을 수 있고, 로컬 캐시(185)는 장치(150)에서 유지될 수 있다. 또는, 로컬 프록시(175)가 장치(150) 내에 있고, 로컬 캐시(185)가 장치(150) 외부에 있을 수 있다. 덧붙이자면, 프록시(175)와 캐시(185) 각각은, 부분적으로 호스트 서버(100) 내부에 있고, 부분적으로 호스트 서버(100) 외부에 있을 수 있다. In addition, client-side proxy 175 and local cache 185 may be partially or entirely external to device 150 and communicate over one or more of networks 106 and 108. For example, local proxy 175 may be external to device 150, and local cache 185 may be maintained at device 150. Alternatively, local proxy 175 may be within device 150 and local cache 185 may be external to device 150. In addition, each of the proxy 175 and the cache 185 may be partially inside the host server 100 and partially outside the host server 100.

하나의 실시예에서, 분산 시스템은 선택사항적 캐싱 프록시 서버(199)를 포함할 수 있다. 상기 캐싱 프록시 서버(199)는 애플리케이션 서버/콘텐츠 제공자(110), 또는 네트워크 서비스 제공자(112), 또는 이들의 임의의 조합에 의해, 네트워크 및 장치 자원을 보존하도록 네트워크 트래픽 관리를 촉진하기 위해 동작되는 구성요소일 수 있다. 예를 들어, 애플리케이션 서버/제공자(110), 호스트 서버(100) 및/또는 네트워크 서비스 제공자(112) 중 하나 이상으로부터 캐싱 콘텐츠가 장치(150)로 제공되도록 프록시 서버(199)가 사용될 수 있다. 장치(150)에서의 애플리케이션 요청 또는 그 밖의 다른 데이터 요청을 만족시키도록, 콘텐츠 캐싱이 원격 프록시(125)에 의해 전적으로 또는 부분적으로 수행될 수 있다. In one embodiment, the distributed system may include an optional caching proxy server 199. The caching proxy server 199 is operated by application server / content provider 110, or network service provider 112, or any combination thereof to facilitate network traffic management to conserve network and device resources. It may be a component. For example, proxy server 199 may be used to provide caching content to device 150 from one or more of application server / provider 110, host server 100, and / or network service provider 112. Content caching may be performed in whole or in part by the remote proxy 125 to satisfy application requests or other data requests at the device 150.

네트워크(가령, 셀룰러 네트워크 또는 그 밖의 다른 무선 네트워크)에서의 자원 보존을 위한 상황 인지 트래픽 관리 및 최적화에서, 모바일 장치(가령, 임의의 무선 장치)(150)에서의 사용자 활동/행동의 특성 및/또는 애플리케이션 거동이, 로컬 프록시(175)에 의해 추적되고, 네트워크(106)를 통해 호스트 서버(100) 내 프록시 서버(125) 구성요소로, 예를 들면, 연결 메타데이터로서 전달될 수 있다. 그 후, 프록시 서버(125)는 애플리케이션 서버/제공자(110)로 연결되고, 콘텐츠 및 데이터를 제공하여, 장치(150)로부터의 요청을 만족시킬 수 있다. The nature of user activity / behavior in the mobile device (eg, any wireless device) 150 and / or in context-aware traffic management and optimization for resource conservation in a network (eg, a cellular network or other wireless network). Alternatively, application behavior may be tracked by the local proxy 175 and passed through the network 106 to the proxy server 125 component in the host server 100, for example as connection metadata. Proxy server 125 may then connect to application server / provider 110 and provide content and data to satisfy requests from device 150.

덧붙이자면, 로컬 프록시(175)는 모바일 장치 속성(가령, 배터리 잔량, 장치가 등록된 네트워크, 라디오 상태, 또는 모바일 장치가 사용되는 중인지 여부(가령, 사용자와 상호대화 중인지 여부) 중 하나 이상)을 식별하고 불러올(retrieve) 수 있다. 일부 경우, 로컬 프록시(175)는, 프록시 서버(125)로 전송하기 전에 적절하게 데이터를 지연, 우선시(선-인출(prefetch)), 및/또는 수정할 수 있으며, 도 2-3의 예시와 관련하여 이하에서 더 상세히 설명될 것이다. In addition, the local proxy 175 may determine one or more of the mobile device properties (eg, battery level, network with which the device is registered, radio status, or whether the mobile device is in use (eg, whether or not interacting with a user)). Can be identified and retrieved In some cases, the local proxy 175 may delay, prioritize (prefetch), and / or modify the data as appropriate prior to sending it to the proxy server 125, and relate to the example of FIGS. 2-3. Will be described in more detail below.

로컬 데이터베이스(185)는 로컬 프록시(175)에 포함되거나 로컬 프록시(175)로 연결될 수 있고, 데이터 요청이 프록시 서버(125)로 포워딩되기 전에, 데이터 요청에 대한 로컬-저장된 응답이 질의될 수 있다. 로컬-캐싱된 응답은 로컬 프록시(175)에 의해 사용되어, 캐싱된 콘텐츠가 여전히 유효(valid)할 때 캐시 저장소(185)에 저장된 캐싱된 콘텐츠를 불러옴으로써, 모바일 장치(150)의 특정 애플리케이션 요청을 만족시킬 수 있다. Local database 185 may be included in or connected to local proxy 175, and a locally-stored response to the data request may be queried before the data request is forwarded to proxy server 125. . The local-cached response is used by the local proxy 175 to retrieve the cached content stored in the cache store 185 when the cached content is still valid, thereby allowing a particular application on the mobile device 150 to be loaded. Can satisfy the request

마찬가지로, 호스트 서버(100)의 프록시 서버(125)는 로컬 프록시로부터의 데이터를 콘텐츠 소스(가령, 애플리케이션 서버/콘텐츠 제공자(110))로 전송하기 전에 지연, 우선시, 또는 수정할 수 있다. 덧붙이자면, 프록시 서버(125)는 장치 속성 및 연결 메타데이터를 사용하여, 모바일 장치(150) 상의 애플리케이션의 요청을 만족시키기 위한 규칙을 생성할 수 있다. 프록시 서버(125)는, 모바일 장치(150) 또는 또 다른 모바일 장치와의 유사한 연결을 최적할 때 추후 사용하기 위해 애플리케이션의 요청에 대한 실시간 트래픽 정보를 수집할 수 있다. Similarly, proxy server 125 of host server 100 may delay, prioritize, or modify data from a local proxy before sending it to a content source (eg, application server / content provider 110). In addition, the proxy server 125 may use the device attributes and connection metadata to generate a rule to satisfy a request of an application on the mobile device 150. Proxy server 125 may collect real-time traffic information for requests of applications for later use when optimizing similar connections with mobile device 150 or another mobile device.

일반적으로, 로컬 프록시(175)와 프록시 서버(125)는 모바일 장치상에서 실행되는 복수의 애플리케이션에 투명(transparent)하다. 로컬 프록시(175)는 모바일 장치의 운영 체제 또는 플랫폼에 투명한 것이 일반적이며, 장치 제조업체-특정적이거나 장치 제조업체-특정적이 아닐 수 있다. 일부 경우, 선택사항으로서, 로컬 프록시(175)는 부분적으로 또는 전적으로 장치 특정적이도록 맞춤 구성(customizable)될 수 있다. 일부 실시예에서 로컬 프록시(175)는 무선 모델, 방화벽 및/또는 라우터에 내장될 수 있다.In general, local proxy 175 and proxy server 125 are transparent to a plurality of applications running on a mobile device. The local proxy 175 is generally transparent to the operating system or platform of the mobile device and may or may not be device manufacturer-specific or device manufacturer-specific. In some cases, as an option, the local proxy 175 may be customizable to be partly or wholly device specific. In some embodiments, local proxy 175 may be embedded in a wireless model, firewall, and / or router.

하나의 실시예에서, 일부 경우, 호스트 서버(100)는, 가령, 네트워크 서비스 제공자에 의해 제공되는 것과 같은, 네트워크 트래픽 관리를 획득할 때 장치(150)와 통신하는 단문 메시지 서비스 센터(SMSC)(112)의 저장 및 포워드(store and forward) 기능을 이용한다. 112는 그 밖의 다른 임의의 유형의 대안적 채널, 가령, USSD, 또는 그 밖의 다른 네트워크 제어 수단을 이용할 수 있다. 도 3의 예를 참조하여 추가로 설명되겠지만, 장치(150)가 이용 가능하다면 장치(150)로 자동으로 포워딩되고, 장치(150)가 현재 이용가능하지 않다면 나중에 포워딩되도록, 호스트 서버(100)는 콘텐츠 또는 HTTP 응답을 SMSC(112)로 포워딩할 수 있다. In one embodiment, in some cases, host server 100 is a short message service center (SMSC) that communicates with device 150 when obtaining network traffic management, such as, for example, provided by a network service provider. 112) store and forward. 112 may use any other type of alternative channel, such as USSD, or other network control means. As will be further described with reference to the example of FIG. 3, the host server 100 is automatically forwarded to the device 150 if it is available, and forwarded later if the device 150 is not currently available. The content or HTTP response can be forwarded to SMSC 112.

일반적으로, 본원 발명의 분산 프록시 및 캐시 시스템은, 예를 들어, 로컬 캐시(185)로부터의 요청을 서비스함으로써 네트워크 이용의 최적화를 가능하게 하고, 로컬 프록시(175)는 네트워크(106)를 통해 만족될 필요가 있는 요청의 개수를 감소시킨다. 덧붙이자면, 로컬 프록시(175) 및 프록시 서버(125)는 통신된 데이터로부터 무관한 데이터를 필터링할 수 있다. 덧붙이자면, 또한 로컬 프록시(175) 및 프록시 서버(125)는 낮은 우선순위 데이터를 축적하고, 이를 일괄적으로(in batch) 전송하여, 개별 데이터 프래그먼트를 전송하는 프로토콜 오버헤드를 피한다. 로컬 프록시(175) 및 프록시 서버(125)는 또한 트래픽을 압축 또는 트랜스코딩(transcode)하여, 네트워크(106 및/또는 108)를 통해 전송되는 데이터의 크기를 감소한다. 네트워크가 덜 사용되고 개별 애플리케이션들 간에 네트워크 트래픽이 동기화될 수 있음으로써, 네트워크(106 및/또는 108)에서의 시그널링 트래픽이 감소될 수 있다. In general, the distributed proxy and cache system of the present invention enables optimization of network usage, for example by servicing requests from local cache 185, which local proxy 175 satisfies via network 106. Reduce the number of requests that need to be made. In addition, local proxy 175 and proxy server 125 may filter irrelevant data from the communicated data. In addition, the local proxy 175 and proxy server 125 also accumulate low priority data and send it in batch to avoid the protocol overhead of sending individual data fragments. Local proxy 175 and proxy server 125 also compress or transcode the traffic to reduce the size of data transmitted over network 106 and / or 108. As the network is less used and network traffic can be synchronized between individual applications, signaling traffic in the network 106 and / or 108 can be reduced.

모바일 장치(150)의 배터리 수명과 관련하여, 로컬 캐시(185)로부터의 애플리케이션 또는 콘텐츠 요청을 서비스함으로써, 로컬 프록시(175)는 라디오 모듈이 켜지는(power up) 횟수를 감소시킬 수 있다. 로컬 프록시(175)와 프록시 서버(125)는, 낮은 우선순위 데이터를 축적하고, 라디오가 켜지는 횟수 및/또는 시간을 감소시키도록 상기 데이터를 일괄적으로 전송하기 위해 결합하여 동작할 수 있다. 로컬 프록시(175)는 모든 연결에 대해 동시에 일괄 방식 데이터 전송을 수행함으로써 네트워크 사용을 동기화할 수 있다. With regard to the battery life of mobile device 150, by servicing an application or content request from local cache 185, local proxy 175 may reduce the number of times the radio module is powered up. The local proxy 175 and the proxy server 125 may operate in conjunction to accumulate low priority data and to transmit the data collectively to reduce the number and / or time that the radio is turned on. The local proxy 175 can synchronize network usage by performing batch data transfers simultaneously for all connections.

도 2A는 자원 보존, 콘텐츠 캐싱, 및/또는 트래픽 관리를 위해 무선 네트워크의 트래픽을 관리하는 장치(250)에 위치하는 분산 프록시 및 캐시 시스템 내 클라이언트-특 구성요소의 일례를 도시하는 블록도를 도시한다. 클라이언트 측(client-side) 프록시(또는 로컬 프록시(275))는 추가로 모바일 트래픽을 카테고리화하고, 및/또는 애플리케이션 거동, 콘텐츠 우선순위, 사용자 활동, 및/또는 사용자 기대를 기초로 하는 전달 정책(delivery policy)을 구현할 수 있다. 2A shows a block diagram illustrating an example of a client-specific component in a distributed proxy and cache system located in an apparatus 250 that manages traffic of a wireless network for resource conservation, content caching, and / or traffic management. do. Client-side proxy (or local proxy 275) further categorizes mobile traffic and / or delivery policy based on application behavior, content priority, user activity, and / or user expectations. (delivery policy) can be implemented.

휴대용 전화기와 같은 휴대용 또는 모바일 장치(가령, 임의의 무선 장치)일 수 있는 장치(250)는, 예를 들어, 네트워크 인터페이스(208), 운영 체제(204), 상황 API(206), 및 모바일 애플리케이션을 포함하며, 프록시-비인지형(proxy-unaware)(210)이거나 프록시-인지형(proxy-aware)(220)일 수 있는 것이 일반적이다. 장치(250)는 도 2의 예에서 특정하게 모바일 장치로서 도시되지만, 이렇게 한정되는 것은 아니며, 장치(250)는 유선 네트워크 또는 무선 네트워크를 포함해 네트워크(가령, WiFi, 셀룰러, 블루투스(Bluetooth), LAN, WAN 등)를 통한 데이터 요청을 만족시키기 위해 신호를 수신하고 송신할 수 있는 임의의 무선, 광대역, 휴대용/모바일 또는 비-휴대용 장치일 수 있다.Device 250, which may be a portable or mobile device (eg, any wireless device), such as a portable telephone, may include, for example, network interface 208, operating system 204, context API 206, and mobile applications. It is common to include, and may be proxy-unaware 210 or proxy-aware 220. Device 250 is specifically illustrated as a mobile device in the example of FIG. 2, but is not so limited, and device 250 may include a wired network or a wireless network, such as WiFi, cellular, Bluetooth, Any wireless, broadband, portable / mobile or non-portable device capable of receiving and transmitting signals to satisfy data requests over a LAN, WAN, etc.).

네트워크 인터페이스(208)는 장치(250)가 네트워크에서 호스트 및 외부 개체에 의해 지원되는 임의의 알려진 및/또는 종래의 통신 프로토콜을 통해, 호스트 서버(250) 외부에 있는 개체와 데이터를 중재(mediate)할 수 있도록 해주는 네트워킹 모듈일 수 있다. 상기 네트워크 인터페이스(208)는, 네트워크 어댑터 카드(network adaptor card), 무선 네트워크 인터페이스 카드(가령, SMS 인터페이스, WiFi 인터페이스, 2G, 3G, 3.5G, 4G, LTE, 등(그러나 이에 국한되지 않음)의 다양한 세대의 모바일 통신 표준을 위한 인터페이스), 블루투스, 또는 연결이 라우터를 거치는지의 여부에 무관하게, 액세스 포인트, 무선 라우터, 스위치, 멀티레이어 스위치, 프로토콜 컨버터, 게이트웨이, 브리지, 브리지 라우터, 허브, 디지털 미디어 수신기, 및/또는 리피터(repeater)를 포함할 수 있다. Network interface 208 mediates the objects and data external to host server 250 via device 250 via any known and / or conventional communication protocols supported by hosts and external entities in the network. It can be a networking module that allows you to do that. The network interface 208 may include a network adapter card, a wireless network interface card (e.g., but not limited to, SMS interface, WiFi interface, 2G, 3G, 3.5G, 4G, LTE, etc.). Interface for different generations of mobile communication standards), Bluetooth, or whether the connection goes through a router, access point, wireless router, switch, multilayer switch, protocol converter, gateway, bridge, bridge router, hub, digital Media receivers, and / or repeaters.

장치(250)는, 로컬 프록시(275)(가령, 모바일 장치의 모바일 클라이언트) 및 캐시(285)를 포함할 수 있는 분산 프록시 및 캐시 시스템의 클라이언트 측(client-side) 구성요소를 더 포함할 수 있다. 하나의 실시예에서, 로컬 프록시(275)는 사용자 활동 모듈(215), 프록시 API(225), 요청/트랜잭션 관리기(235), 애플리케이션 프로토콜 모듈(248)을 갖는 캐싱 정책 관리기(245), 트래픽 성형 엔진(traffic shaping engine)(255), 및/또는 연결 관리기(265)를 포함한다. 트래픽 성형 엔진(255)은 정렬 모듈(alignment module)(256) 및/또는 일괄처리 모듈(batching module)(257)을 더 포함할 수 있고, 연결 관리기(265)는 라디오 제어기(266)를 더 포함할 수 있다. 요청/트랜잭션 관리기(235)는 애플리케이션 거동 검출기(application behavior detector)(236) 및/또는 우선순위화 엔진(prioritization engine)(241)을 더 포함할 수 있고, 애플리케이션 거동 검출기(236)는 패턴 검출기(237) 및/또는 애플리케이션 프로파일 생성기(239)를 더 포함할 수 있다. 이보다 더 많거나 더 적은 구성요소/모듈/엔진이 로컬 프록시(275) 및 각각의 예시적 구성요소에 포함될 수 있다. Device 250 may further include client-side components of a distributed proxy and cache system that may include a local proxy 275 (eg, a mobile client of a mobile device) and a cache 285. have. In one embodiment, local proxy 275 is a user activity module 215, proxy API 225, request / transaction manager 235, caching policy manager 245 with application protocol module 248, traffic shaping. A traffic shaping engine 255, and / or a connection manager 265. The traffic shaping engine 255 may further include an alignment module 256 and / or a batching module 257, and the connection manager 265 further includes a radio controller 266. can do. The request / transaction manager 235 may further include an application behavior detector 236 and / or a prioritization engine 241, the application behavior detector 236 may include a pattern detector ( 237 and / or application profile generator 239. More or fewer components / modules / engines may be included in the local proxy 275 and in each example component.

본원에서 사용될 때, "모듈", "관리기", "핸들러", "검출기", "인터페이스", "제어기", "정규화기(normalizer)", "생성기", "무효화기(invalidator)", 또는 "엔진"은 범용, 전용, 또는 공유 프로세서를 포함하고, 일반적으로 프로세서에 의해 실행되는 펌웨어 또는 소프트웨어 모듈을 포함한다. 구현예 특정적, 또는 그 밖의 다른 고려사항에 따라, 모듈, 관리기, 핸들러, 검출기, 인터페이스, 제어기, 정규화기, 생성기, 무효화기, 또는 엔진이 중앙 집중(centralize)되거나, 각자의 기능들이 분산될 수 있다. 모듈, 관리기, 핸들러, 검출기, 인터페이스, 제어기, 정규화기, 생성기, 무효화기, 또는 엔진은, 프로세서에 의해 실행되기 위해 컴퓨터-판독형(저장) 매체로 구현되는 범용 또는 특수 하드웨어, 펌웨어, 또는 소프트웨어를 포함할 수 있다.As used herein, a "module", "manager", "handler", "detector", "interface", "controller", "normalizer", "generator", "invalidator", or An "engine" includes a general purpose, dedicated, or shared processor, and generally includes firmware or software modules executed by the processor. Depending on implementation specific or other considerations, modules, managers, handlers, detectors, interfaces, controllers, normalizers, generators, invalidators, or engines may be centralized or their functions distributed. Can be. A module, manager, handler, detector, interface, controller, normalizer, generator, invalidator, or engine is general or special hardware, firmware, or software implemented as a computer-readable medium for execution by a processor. It may include.

본원에서 사용될 때, 컴퓨터 판독형 매체, 또는 컴퓨터 판독형 저장 매체는 법령(가령, 미국에서는, 35 U.S.C. 101)으로 명시된 모든 매체를 포함하며, 컴퓨터 판독형(저장) 매체를 포함하는 청구항이 유효하기 위한 범위까지 모든 비법정 매체는 특정하게 배제하는 것으로 의도된다. 알려진 법정 컴퓨터 판독형 매체는 하드웨어(가령, 레지스터, 랜덤 액세스 메모리(RAM), 비휘발성(NV) 저장장치 등)를 포함하지만, 이러한 하드웨어로 반드시 한정되는 것은 아니다. As used herein, computer readable media, or computer readable storage media, includes all media specified by legislation (eg, 35 USC 101 in the United States), and claims including computer readable (storage) media are effective. All non-legal media, to the extent intended, are specifically intended to be excluded. Known legal computer readable media include, but are not necessarily limited to, hardware (eg, registers, random access memory (RAM), nonvolatile (NV) storage, etc.).

하나의 실시예에서, 분산 프록시 및 캐시 시스템의 네트워크 트래픽 관리용 부분은 로컬 프록시(275)(모바일 클라이언트) 및/또는 캐시(285)를 포함하는 장치(250) 내에 있거나, 상기 장치(250)와 통신할 수 있다. 로컬 프록시(275)는 사용자가 장치 애플리케이션 및 서비스(가령, 전자메일, IM, 음성 메일, 시각 음성메일(visual voicemail), 피드, 인터넷, 게임, 생산성 툴(productivity tool), 또는 그 밖의 다른 애플리케이션 등)를 액세스할 수 있도록 하는 장치(250) 상의 인터페이스를 제공할 수 있다. In one embodiment, the portion for network traffic management of the distributed proxy and cache system is in, or includes, a device 250 that includes a local proxy 275 (mobile client) and / or cache 285. Can communicate. Local proxy 275 allows a user to access device applications and services such as e-mail, IM, voicemail, visual voicemail, feeds, the Internet, gaming, productivity tools, or other applications. May provide an interface on the device 250 that allows access to

프록시(275)는 일반적으로 애플리케이션 독립적이며, 원격 서버(가령, 도 1A-1B의 예에서 서버(100), 및/또는 도 1B 및 도 3A의 예에서 서버 프록시(125/325))로의 TCP 연결을 개방하기 위해 애플리케이션(가령, 프록시-인지형 및 프록시-비인지형 애플리케이션(210 및 220) 둘 모두, 또는 모바일 애플리케이션)에 의해 사용될 수 있다. 일부 경우, 로컬 프록시(275)는, 선택사항으로서 프록시-인지형 애플리케이션(220)(또는 모바일 장치(가령, 임의의 무선 장치) 상의 애플리케이션(가령 모바일 애플리케이션))과 인터페이싱하도록 사용될 수 있는 프록시 API(225)를 포함한다. The proxy 275 is generally application independent and has a TCP connection to a remote server (eg, server 100 in the examples of FIGS. 1A-1B and / or server proxy 125/325 in the examples of FIGS. 1B and 3A). May be used by applications (eg, both proxy-aware and proxy-aware applications 210 and 220, or mobile applications) to open the. In some cases, the local proxy 275 optionally includes a proxy API (which may be used to interface with the proxy-aware application 220 (or an application (eg, a mobile application) on a mobile device (eg, any wireless device)). 225).

일반적으로, 애플리케이션(210 및 220)은 임의의 사용자 애플리케이션, 위젯(widget), 소프트웨어, HTTP-기반 애플리케이션, 웹 브라우저, 비디오 또는 그 밖의 다른 멀티미디어 스트리밍 또는 다우로딩 애플리케이션, 비디오 게임, 소셜 네트워크 애플리케이션, 전자메일 클라이언트, RSS 관리 애플리케이션, 애플리케이션 스토어(application store), 문서 관리 애플리케이션, 생산성 강화 애플리케이션 등을 포함할 수 있다. 애플리케이션은 장치 제조업체에 의해, 또는 네트워크 서비스 제공자에 의해, 장치 OS와 함께 제공되거나, 사용자에 의해 다운로드되거나, 그 밖의 다른 방식으로 제공될 수 있다. In general, applications 210 and 220 may include any user application, widget, software, HTTP-based application, web browser, video or other multimedia streaming or downloading application, video game, social network application, electronics. Mail clients, RSS management applications, application stores, application management, document management applications, productivity enhancing applications, and the like. The application may be provided with the device OS, downloaded by the user, or otherwise provided by the device manufacturer or by the network service provider.

한 실시예의 로컬 프록시(275)는 도시된 바와 같이 상황 API(206)를 포함하거나, 상기 상황 API(206)로 연결된다. 상황 API(206)는 운영 체제(204) 또는 장치 플랫폼의 일부이거나, 도시된 것처럼 운영 체제(204)에 독립적일 수 있다. 운영 체제(204)는 임의의 운영 체제를 포함할 수 있으며, 제한되지 않는 예를 들면, Windows Mobile, iOS, Android, Symbian, Palm OS, Brew MP, Java 2 Micro Edition (J2ME), Blackberry, 등의 임의의 과거, 현재, 및/또는 미래 버전/판일 수 있다. The local proxy 275 of one embodiment includes a context API 206 as shown, or is connected to the context API 206. Situation API 206 may be part of operating system 204 or device platform, or may be independent of operating system 204 as shown. Operating system 204 can include any operating system, including but not limited to, Windows Mobile, iOS, Android, Symbian, Palm OS, Brew MP, Java 2 Micro Edition (J2ME), Blackberry, and the like. It can be any past, present, and / or future version / version.

상황 API(206)는 장치(205)의 운영 체제(204) 또는 특정 클라이언트/애플리케이션의 플러그-인(plug-in)일 수 있다. 상황 API(206)는 사용자 또는 장치 활동(가령, 모션, 제스처, 장치 위치, 장치 위치의 변화, 장치 백라이트, 키스트로크(keystroke), 클릭, 활성된 터치 스크린, 마우스 클릭의 감지 또는 그 밖의 다른 포인터 장치의 검출)을 나타내는 신호를 검출할 수 있다. 상황 API(206)는 장치(250) 상의 입력 장치 또는 센서로 연결되어, 이들 신호를 식별할 수 있다. 일반적으로 이러한 신호는, 장치(250)의 입력 장치/수단에서의 명시적 사용자 입력(explicit user input)에 응답하여 수신된 입력, 및/또는 장치(250)에서 또는 그 주변에서 검출된 주변 신호/상황 큐(contextual cue)(가령, 빛, 모션(motion), 압전기 등)로부터 수집된 입력을 포함할 수 있다. The context API 206 may be a plug-in of the operating system 204 of the device 205 or of a particular client / application. The context API 206 may be used to detect user or device activity (e.g., motion, gestures, device location, device location changes, device backlight, keystrokes, clicks, active touch screens, detection of mouse clicks, or other pointers). Signal can be detected. The context API 206 may be connected to an input device or sensor on device 250 to identify these signals. In general, such signals may be input received in response to explicit user input at the input device / means of device 250 and / or ambient signals / detected at or near device 250. It may include input collected from a contextual cue (eg, light, motion, piezo, etc.).

하나의 실시예에서, 장치(250)에서의 사용자 활동의 특성을 식별, 결정, 추론, 검출, 계산, 예측, 및/또는 예상하기 위해, 사용자 활동 모듈(215)은 상황 API(206)와 상호대화한다. 사용자 활동의 특성에 대한 프로파일을 생성하기 위해, 상황 API(206)에 의해 수집된 다양한 입력이 사용자 활동 모듈(215)에 의해 집합화(aggregate)될 수 있다. 이러한 프로파일은 다양한 시간적 특성(temporal characteristic)을 갖고 사용자 활동 모듈(215)에 의해 생성될 수 있다. 예를 들어, 특정 경우 특정 시간(가령, 시간 윈도(time window)로 지정된 시간, 마지막 1분, 마지막 30초 등)에서 사용자가 하고 있는 것 또는 하지 않는 것의 뷰를 제공하기 위해, 사용자 활동 프로파일이 실시간으로 생성될 수 있으며, 또한 사용자 활동 프로파일은, 장치(250)에서 관련되는 특정 작업에 대한, 또는 특정 시간 주기(가령, 마지막 2시간, 마지막 5시간)에 대한 사용자 행동의 특성을 기술하는 애플리케이션 또는 웹 페이지에 의해 정의된 '세션(session)'에 대해 생성될 수 있다.In one embodiment, the user activity module 215 interacts with the context API 206 to identify, determine, infer, detect, calculate, predict, and / or predict characteristics of user activity on the device 250. Have a conversation. In order to generate a profile for the characteristics of the user activity, various inputs collected by the situation API 206 may be aggregated by the user activity module 215. Such a profile may be generated by the user activity module 215 with various temporal characteristics. For example, to provide a view of what the user is doing or not at a particular time (eg, the time specified in the time window, the last minute, the last 30 seconds, etc.) The user activity profile may be generated in real time, and the user activity profile is also an application that describes the characteristics of the user's behavior for a particular task related to the device 250 or for a particular time period (eg, last 2 hours, last 5 hours). Or for a 'session' defined by a web page.

덧붙이자면, 사용자 활동 및 행동에 대한 추세 히스토리(historical trend)(가령, 1주, 1개월, 2개월 등)를 묘사하기 위해 사용자 활동 모듈(215)에 의해 특성 프로파일(characteristic profile)이 생성될 수 있다. 이러한 프로파일 히스토리가 사용되어, 사용자 행동의 추세(예를 들어, 여러 다른 시각에서의 액세스 빈도, 일주일의 특정 요일(주말 또는 평일)에 대한 추세, 위치 데이터(가령, IP 주소, GPS, 또는 셀 기지국 좌표 데이터)를 기초로 하는 사용자 활동 추세, 또는 위치 데이터의 변화를 기초로 하는 사용자 활동 추세(가령, 사용자 위치를 기초로 하는 사용자 활동, 또는 사용자가 나가려던 중인지 외출 중인지 등을 기초로 하는 사용자 활동))를 추론할 수 있어서, 사용자 활동 특성을 획득할 수 있다. In addition, a characteristic profile may be generated by the user activity module 215 to depict a historical trend (eg, one week, one month, two months, etc.) for user activity and behavior. have. This profile history can be used to determine trends in user behavior (e.g., frequency of access at different times, trends for specific days of the week (weekdays or weekdays), location data (e.g., IP addresses, GPS, or cell base stations). User activity trends based on changes in location data, or user activity trends based on changes in location data (e.g., user activity based on user location, or whether a user is about to leave or go out, etc.) ) Can be inferred to obtain user activity characteristics.

하나의 실시예에서, 사용자 활동 모듈(215)은 장치(250) 상의 애플리케이션, 문서, 파일, 창, 아이콘, 및 폴더와 관련해, 사용자 활동을 검출하고 추적할 수 있다. 예를 들어, 사용자 활동 모듈(215)은 애플리케이션 또는 창(가령, 웹 브라우저 또는 그 밖의 다른 임의의 유형의 애플리케이션)이 활성화될 때, 닫힐 때, 최소화될 때, 최대화될 때, 열릴 때, 전경(foreground)으로 이동될 때, 배경(background)으로 이동될 때, 멀티미디어 콘텐츠가 재생될 때 등을 검출할 수 있다. In one embodiment, user activity module 215 may detect and track user activity with respect to applications, documents, files, windows, icons, and folders on device 250. For example, the user activity module 215 may include a foreground (when an application or window (eg, a web browser or any other type of application) is activated, closed, minimized, maximized, opened, or opened). when moving to the foreground, when moving to the background, when multimedia content is played, and so on.

하나의 실시예에서, 자원 소모, 가령, 배터리/전력 소모를 최적화하기 위해, 그리고 더 일반적으로는, 그 밖의 다른 장치 자원(가령, 메모리, 저자장치, 및 프로세싱 파워)의 소모를 최적화하기 위해, 장치(250) 상의 사용자 활동의 특성은 장치(가령, 모바일 장치 또는 임의의 무선 장치)의 행동을 로컬하게 조절하도록 사용될 수 있다. 하나의 실시예에서, (가령, 연결 관리기(265)의 라디오 제어기(266)에 의해) 사용자 활동 모듈(215)로 연결되는 사용자 행동의 특성을 기초로 하여 장치에서의 라디오의 사용이 조절될 수 있다. 예를 들어, 라디오 제어기(266)는 장치(250)에서의 사용자 활동의 특성을 기초로 하여, 라디오를 끄거나 켤 수 있다. 덧붙이자면, 사용자 활동의 특성에 따라, 라디오 제어기(266)는 라디오의 파워 모드(가령, 더 높은 파워 모드 또는 더 낮은 파워 모드이도록)를 조절할 수 있다.In one embodiment, to optimize resource consumption, such as battery / power consumption, and more generally, to optimize the consumption of other device resources (eg, memory, authoring, and processing power), Characteristics of user activity on device 250 may be used to locally adjust the behavior of the device (eg, mobile device or any wireless device). In one embodiment, the use of the radio in the device may be adjusted based on the nature of the user behavior connected to the user activity module 215 (eg, by the radio controller 266 of the connection manager 265). have. For example, the radio controller 266 can turn the radio on or off based on the nature of the user activity on the device 250. In addition, depending on the nature of the user activity, the radio controller 266 may adjust the power mode of the radio (eg, to be a higher power mode or a lower power mode).

하나의 실시예에서, 장치(250)에서의 사용자 활동의 특성이 사용되어, (가령, 셀룰러 또는 또 다른 네트워크를 통해) 장치(250)와 통신할 수 있는 또 다른 장치(가령, 또 다른 컴퓨터, 모바일 장치, 무선 장치, 또는 비-휴대용 장치(non-portable device)) 또는 서버(가령, 도 1A-B 및 도 3A의 예에서 호스트 서버(100 및 300))가 자신의 장치(250)와의 통신 빈도(communication frequency)를 수정하도록 할 수 있다. 원격 장치에게 자신의 통신 빈도를 변조하는 방식(가령, 통신 빈도의 감소, 가령, 사용자가 유휴 상태인 경우 데이터 푸시 빈도의 감소, 새로운 데이터, 변경된 데이터, 또는 특정 중요도의 데이터가 이용 가능해지는 경우 등, 원격 장치가 장치(250)에게 통지하도록 요청하는 등)에 대해 지시하기 위해, 로컬 프록시(275)는 사용자 활동 모듈(215)에 의해 결정된 사용자 행동의 특성 정보를 사용할 수 있다.In one embodiment, another device (eg, another computer, capable of communicating with device 250) may be used (eg, via a cellular or another network) to use characteristics of user activity at device 250. A mobile device, wireless device, or non-portable device or server (eg, host servers 100 and 300 in the examples of FIGS. 1A-B and 3A) communicates with its device 250. It is possible to modify the communication frequency. Modulating the frequency of its communication to a remote device (e.g., reducing the frequency of communication, for example, reducing the frequency of data push when the user is idle, when new data, changed data, or data of certain importance are available) Local proxy 275 may use the characteristic information of the user behavior determined by user activity module 215, to indicate to the remote device to request notification of device 250.

하나의 실시예에서, 사용자 활동 모듈(215)은, 사용자 활동 특성이 사용자가 비활성 주기 후 활성 상태임을 지시한다고 판단한 것에 응답하여, 원격 장치(가령, 도 1A-B 및 도 3A의 예에서 서버 호스트 서버(100 및 300))가 이전에 감소된 통신 빈도의 결과로서 버퍼링된 데이터를 전송하도록 요청할 수 있다.In one embodiment, the user activity module 215 is responsive to determining that the user activity characteristic indicates that the user is active after a period of inactivity, so that the remote host (eg, server host in the examples of FIGS. 1A-B and 3A). Servers 100 and 300 may request to transmit the buffered data as a result of previously reduced communication frequency.

이에 추가로, 또는 이를 대체하여, 로컬 프록시(275)가 장치(250)에서의 사용자 활동의 특성을 원격 장치(가령, 도 1A-B 및 도 3A의 예에서, 호스트 서버(100 및 300))로 통신할 수 있고, 원격 장치는 네트워크 자원 보존과 장치(250) 자원의 보존을 위해 장치(250)와 관련된 자신 고유의 통신 주파수를 변경하는 방식을 결정한다.In addition to or in place of this, the local proxy 275 may display the characteristics of user activity on the device 250 by a remote device (eg, host servers 100 and 300 in the examples of FIGS. 1A-B and 3A). And the remote device determines how to change its own communication frequency associated with the device 250 for network resource conservation and device 250 resource conservation.

로컬 프록시(275)의 하나의 실시예는, 예를 들어, 애플리케이션(210 및/또는 220)에 의해, 및/또는 직접/간접적으로 사용자 요청에 의해, 장치(250)에서 개시되는 데이터 요청을 검출, 식별, 인터셉트, 프로세싱, 관리할 수 있는 요청/트랜잭션 관리기(235)를 더 포함한다. 요청/트랜잭션 관리기(235)는 트랜잭션 특성을 기초로하여 특정 요청 또는 트랜잭션(또는 요청/트랜잭션의 세트)을 처리하는 방식과 시점을 결정할 수 있다.One embodiment of local proxy 275 detects a data request initiated at device 250, for example by application 210 and / or 220, and / or directly / indirectly by a user request. And a request / transaction manager 235 that can identify, intercept, process, and manage. The request / transaction manager 235 can determine how and when to process a particular request or transaction (or set of requests / transactions) based on transaction characteristics.

요청/트랜잭션 관리기(235)는 장치(250)에서 애플리케이션 및/또는 사용자에 의해 이뤄진 요청 또는 트랜잭션을, 가령 우선수위화 엔진(241)에 의해 우선순위화할 수 있다. 요청/트랜잭션의 중요도 또는 우선순위는 요청/트랜잭션 관리기(235)에 의해, 예를 들어, 트랜잭션의 시간 민감도(time sensitivity), 트랜잭션에서의 콘텐츠의 시간 민감도, 또는 트랜잭션의 시간 중요도(time criticality), 트랜잭션에 의해 전송되는 데이터의 시간 중요도, 및/또는 요청을 하는 애플리케이션의 시간 중요도 또는 중요도에 따르는 규칙 세트를 적용함으로써 결정될 수 있다. Request / transaction manager 235 may prioritize requests or transactions made by applications and / or users at device 250, such as by prioritization engine 241. The importance or priority of a request / transaction may be determined by the request / transaction manager 235, eg, the time sensitivity of the transaction, the time sensitivity of the content in the transaction, or the time criticality of the transaction, It can be determined by applying a set of rules that depend on the time importance of the data sent by the transaction and / or the time importance or importance of the application making the request.

덧붙이자면, 트랜잭션 특성은, 트랜잭션이 사용자-상호대화 또는 그 밖의 다른 사용자에 의해 장치에서 개시되는 동작(가령, 애플리케이션(가령, 모바일 애플리케이션)과의 사용자 상호대화)의 결과인지 여부에 따를 수 있다. 일반적으로, 시 중요성(time critical) 트랜잭션은 사용자에 의해 개시되는 데이터 전송으로부터 야기된 트랜잭션을 포함할 수 있고, 이에 따라 우선순위화될 수 있다. 트랜잭션 특성은, 요청된 트랜잭션의 결과로서 전송되는, 또는 전송될 것으로 예상되는 데이터의 크기에 따라 달라질 수 있다. 예를 들어, 연결 관리기(265)는 전송될 필요가 있을 데이터의 크기를 기초로 하여 라디오 모드(가령, 라디오 제어기(266)를 통해 높은 전력 또는 낮은 전력 모드)를 조절할 수 있다. In addition, the transaction characteristics may depend on whether the transaction is the result of user-interaction or other user initiated operation on the device (eg, user interaction with an application (eg, a mobile application)). In general, a time critical transaction may include a transaction resulting from a data transmission initiated by a user and may be prioritized accordingly. The transaction characteristics may vary depending on the size of the data transmitted as or expected to be transmitted as a result of the requested transaction. For example, the connection manager 265 may adjust a radio mode (eg, high power or low power mode via the radio controller 266) based on the size of the data that needs to be transmitted.

덧붙이자면, 라디오 제어기(266)/연결 관리기(265)는, 트랜잭션의 시간 중요도/민감도를 기초로 하여, 라디오 전력 모드(고전력 또는 저전력 모드)를 조절할 수 있다. 라디오 제어기(266)는 시 중요성 트랜잭션(가령, 사용자에 의해 개시되는 데이터 전송, 전경에서 실행 중인 애플리케이션, 특정 기준을 충족하는 임의의 그 밖의 다른 이벤트로부터 야기된 트랜잭션)이 개시되거나 검출될 때 고전력 라디오 모드를 트리거할 수 있다. In addition, the radio controller 266 / connection manager 265 can adjust the radio power mode (high or low power mode) based on the time importance / sensitivity of the transaction. The radio controller 266 is a high power radio when a time critical transaction is initiated or detected, such as a transaction originating from a user initiated data transfer, an application running in the foreground, or any other event that meets certain criteria. You can trigger the mode.

일반적으로, 우선순위는, 예를 들어, 장치 플랫폼, 장치 제조업체, 운영 체제 등을 기초로 하여, 디폴트(default)로 설정될 수 있다. 이에 추가로, 또는 이를 대체하여, 우선순위는 특정 애플리케이션에 의해 설정될 수 있으며, 가령, 페이스북(Facebook) 애플리케이션(가령, 모바일 애플리케이션)이 다양한 트랜잭션에 대헤 자신 고유의 우선순위를 설정할 수 있고(가령, 상태 업데이트가 친구 추가 요청이나 콕 찔러보기(poke) 요청보다 더 높은 우선순위를 가질 수 있고, 메시지 전송 요청은 메시지 삭제 요청보다 저 높은 우선순위를 가질 수 있다), 전자메일 클라이언트 또는 IM 챗 클라이언트가 우선순위에 대해 자신 고유 설정을 가질 수 있다. 우선순위화 엔진(241)은 우선순위를 할당하기 위한 규칙의 세트를 포함할 수 있다. In general, the priority may be set to default, for example based on device platform, device manufacturer, operating system, and the like. In addition to or in place of this, priorities may be set by specific applications, such as Facebook applications (eg mobile applications) may set their own priorities for various transactions ( For example, a status update may have a higher priority than a friend add request or a poke request, and a message transfer request may have a higher priority than a message delete request), an email client or IM chat. Clients can have their own settings for priority. Prioritization engine 241 may include a set of rules for assigning priorities.

또한 우선순위화 엔진(241)은 요청/트랜잭션에 대한 전체 우선순위 상태를 결정할 때, 네트워크 제공자 제한(limitation) 또는 상세사항(specification)을 추적할 수 있다. 덧붙여, 우선순위는 명시적으로 또는 묵시적으로 사용자 선호도에 의해 부분적으로 또는 전적으로 결정될 수 있다. 사용자는, 일반적으로, 서로 다른 티어(tier)에서의 우선순위, 가령, 세션, 유형, 또는 애플리케이션에 대해 특정 우선순위를 설정할 수 있다(가령, 브라우징 세션 vs. 게임 세션 vs. IM 채팅 세션, 사용자가 게임 세션을 IM 챗 세션보다 항상 높은 우선순위를 갖도록 설정할 수 있고, IM 챗 세션은 웹 브라우징 세션보다 높은 우선순위를 가질 수 있다). 사용자는 애플리케이션 특정 우선순위(가령, 사용자는 페이스북(Facebook)-관련 트랜잭션을 링크드인(LinkedIn)-관련 트랜잭션보다 높은 우선순위를 갖도록 설정할 수 있음)를 특정 트랜잭션 유형에 대해 설정(가령, 모든 애플리케이션들 간 모든 메시지 전송 요청은 메시지 삭제 요청보다 더 높은 우선순위를 갖고, 모든 일정(calendar)-관련 이벤트는 높은 우선순위를 갖도록 하는 등)하거나, 및/또는 특정 폴더에 대해 애플리케이션 특정 우선순위를 설정할 수 있다. The prioritization engine 241 may also track network provider limitations or specifications when determining the overall priority status for a request / transaction. In addition, the priority may be determined, in part or in whole, by user preference, either explicitly or implicitly. In general, a user may set specific priorities for different tiers, such as session, type, or application (eg, browsing session vs. game session vs. IM chat session, user). Can set the game session to always have a higher priority than the IM chat session, and the IM chat session can have a higher priority than the web browsing session). The user sets application specific priority (e.g., user can set Facebook-related transactions to have higher priority than LinkedIn-related transactions) for a specific transaction type (e.g. all applications All message transfer requests between them have a higher priority than message deletion requests, all calendar-related events have a higher priority, etc.) and / or set application specific priority for a particular folder. Can be.

우선순위화 엔진(241)은 서로 다른 개체에 의해 설정된 우선순위들 간 충돌을 추적하고 해결할 수 있다. 예를 들어, 사용자에 의해 특정되는 수동 설정이 장치 OS 설정보다 우선시될 수 있고, 네트워크 제공자 파라미터/제한(가령, 네트워크 서비스 영역, 지리적 현장에 대해 디폴트로 설정된 것, 특정 시각에 대해 설정된 것, 또는 서비스/요금 유형을 기초로 설정된 것)이 임의의 사용자 특정된 설정 및/또는 애플리케이션 설정 우선순위를 제한할 수 있다. 일부 경우, 사용자로부터 수신된 수동 동기화 요청은, 요청된 동작에 대해 개별 할당된 우선순위 또는 전체 우선순위 등급에 무관하게, 요청된 동기화가 요청될 때 수행되는, 일부, 대부분, 또는 모든 우선순위 설정을 무효화(override)할 수 있다.The prioritization engine 241 may track and resolve conflicts between priorities set by different entities. For example, a manual setting specified by a user may be prioritized over a device OS setting and may be a network provider parameter / limitation (eg, network service area, default set for a geographic site, set for a particular time of day, or Set based on service / fee type) may limit any user specified settings and / or application setting priorities. In some cases, a manual sync request received from a user is set to some, most, or all priorities that are performed when the requested sync is requested, regardless of the individually assigned priority or the overall priority class for the requested action. Can be overridden.

우선순위는, 임의의 알려진 및/또는 종래의 방식(제한받지 않는 예를 들면, 이진 표현, 다가 표현(multi-valued representation), 등급별 표현(graded representation))으로 내부적으로 특정되고 추적될 수 있으며, 모두 본 발명의 기술의 범위 내에 있는 것으로 고려된다. Priorities may be internally specified and tracked in any known and / or conventional manner (e.g., without limitation, binary representations, multi-valued representations, graded representations), All are considered to be within the scope of the present technology.

표 1Table 1

Figure 112012099216048-pat00001
Figure 112012099216048-pat00001

표 1은, 설명을 목적으로, 이진 표현 스킴으로 할당된 우선순위들의 예시를 갖는 트랜잭션의 일부 예를 나타낸다. 추가적인 유형의 이벤트, 요청, 트랜잭션에 대해, 그리고 앞서 설명한 바와 같이, 추가적인 할당이 가능하며, 우선순위 할당은 더 높거나 낮은 입도 레벨(granular level)에서, 가령, 세션 레벨 또는 애플리케이션 레벨 등에서 이뤄질 수 있다. Table 1 shows some examples of transactions with examples of priorities assigned to a binary representation scheme for purposes of explanation. For additional types of events, requests, transactions, and as previously described, additional assignments are possible, and priority assignments can be made at higher or lower granular levels, such as at the session level or application level. .

상기의 표의 예에서 나타나는 것처럼, 일반적으로 더 낮은 우선순위의 요청/트랜잭션은, 메시지 상태를 읽음, 읽지 않음으로 업데이트하기, 메시지 삭제하기, 연락처 삭제하기가 있고, 더 높은 우선순위의 요청/트랜잭션은, 일부 경우에서, 상태 업데이트, 새 IM 챗 메시지, 새 전자메일, 일정 이벤트 업데이트/취소/제거, 모바일 게임 세션 내 이벤트, 또는 그 밖의 다른 엔터테인먼트 관련 이벤트, 웹 구매 또는 온라인을 통한 구매 확인, 추가 로딩 또는 콘텐츠 다운로드 요청하기, 연락처 관련 이벤트, 장치 설정을 변경하기 위한 트랜잭션, 위치-인지형 또는 위치 기반 이벤트/트랜잭션, 또는 사용자에 의해 개시되거나 사용자가 응답을 기다리고 있다고 알려지거나 예상되거나 추측되는 그 밖의 다른 임의의 이벤트/요청/트랜잭션을 포함할 수 있다. As shown in the example of the table above, generally lower priority requests / transactions include reading message status, updating to unread, deleting messages, deleting contacts, and higher priority requests / transactions. , In some cases, status updates, new IM chat messages, new emails, update / cancel / remove calendar events, events in mobile game sessions, or other entertainment-related events, purchases made via web or online, and additional loading Or requesting content downloads, contact-related events, transactions to change device settings, location-aware or location-based events / transactions, or other initiation, known, expected or inferred by the user waiting for a response. It can include any event / request / transaction.

수신함 가지치기(inbox pruning) 이벤트(가령, 전자메일, 또는 그 밖의 다른 임의의 유형의 메시지)는 일반적으로 낮은 우선순위라고 여겨지며, 그 밖의 다른 임박한 이벤트가 없다면, 장치(250) 상의 라디오의 사용을 트리거하지 않을 것이다. 구체적으로, 스케줄링된 가지치기 이벤트가 발생할 때, 오래된 전자메일 또는 그 밖의 다른 콘텐츠를 삭제하는 가지치기 이벤트에, 다른 경우라면 라디오가 켜지지 않을 그 밖의 다른 통신이 '업힐 수 있다(piggy backed)'. 예를 들어, 사용자가 '메시지를 7일 동안 보관'으로 설정된 선호도를 가진다면, 메시지가 7일째를 초과한 때 장치(250)에서 메시지 삭제를 개시하기 위해 장치 라디오를 켜는 대신, 다음 번 라디오가 켜질 때 메시지가 삭제된다. 라디오가 이미 켜져 있는 경우, 가지치기는 정규 스케줄대로 발생할 수 있다. Inbox pruning events (e.g., e-mail, or any other type of message) are generally considered low priority, and if there are no other impending events, the use of radio on device 250 is disabled. Will not trigger. Specifically, when a scheduled pruning event occurs, a pruning event that deletes old email or other content may 'piggy backed' other communications that would otherwise not turn on the radio. For example, if a user has a preference set to 'Keep message for seven days', the next radio will be turned on instead of turning on the device radio to initiate message deletion on device 250 when the message exceeds the seventh day. The message is deleted when it is turned on. If the radio is already on, pruning can occur on a regular schedule.

장치(250)로부터 나가는 트래픽을 자원 최적화를 위해 관리하기 위해(가령, 장치 라디오를 배터리 보존을 위해 더 효율적으로 사용하기 위해) 요청/트랜잭션 관리기(235)는 요청(가령, 우선순위화 엔진(241)에 의한 요청)에 대한 우선순위를 사용할 수 있다. 예를 들어, 연결 관리기(265)에 의해 제어될 때, 장치(250) 상에서의 라디오가 이미 스위치-온되어 있지 않은 경우, 특정 우선순위 등급 이하의 트랜잭션/요청이 라디오의 사용을 트리거할 수 있다. 이와 달리, 트랜잭션에 대한 요청이 특정 우선순위 레벨 이상이라고 검출될 때 상기 요청이 전송될 수 있도록, 라디오 제어기(266)가 라디오를 켤 수 있다. To manage the outgoing traffic from device 250 for resource optimization (eg, to use device radio more efficiently for battery conservation), request / transaction manager 235 may request (eg, prioritization engine 241). You can use priority for). For example, when controlled by the connection manager 265, if a radio on the device 250 is not already switched on, a transaction / request below a certain priority level may trigger the use of the radio. . Alternatively, the radio controller 266 can turn on the radio so that the request can be sent when a request for a transaction is detected to be above a certain priority level.

하나의 실시예에서, 우선순위 할당(가령, 로컬 프록시(275) 또는 또 다른 장치/개체에 의해 결정되는 우선순위 할당)이 사용되어, 원격 장치가 모바일 장치 또는 무선 장치와의 통신의 빈도를 수정할 수 있다. 예를 들어, 더 높은 중요도의 데이터가 모바일 장치나 무선 장치로 전송될 수 있을 때 원격 장치는 장치(250)에게 통지를 전송하도록 구성될 수 있다. In one embodiment, priority assignment (eg, priority assignment determined by the local proxy 275 or another device / object) is used to modify the frequency of the remote device's communication with the mobile device or wireless device. Can be. For example, the remote device can be configured to send a notification to the device 250 when higher importance data can be sent to the mobile device or wireless device.

하나의 실시예에서, 예를 들어, 트래픽 성형 엔진(255)에 의해, 트래픽을 성형하거나 관리할 때 트랜잭션 우선순위가 사용자 활동의 특성과 함께 사용될 수 있다. 예를 들어, 트래픽 성형 엔진(255)은, 사용자가 휴지기 즉 비활성 상태임을 검출한 것에 응답하여, 상기 장치(250)로부터 낮은 우선순위의 트랜잭션을 전송하기를 일정 시간 동안 기다릴 수 있다. 덧붙이자면, 트래픽 성형 엔진(255)에 의해, 복수의 낮은 우선순위 트랜잭션이 축적되어, (가령, 일괄처리 모듈(257)을 통해) 장치(250)로부터 일괄 전송(batch transferring)될 수 있다. 하나의 실시예에서, 사용자에 의해 우선순위가 설정, 구성, 또는 재조절될 수 있다. 예를 들어, 표 1에 기재된 콘텐츠는 장치(250)의 사용자 인터페이스에서 동일하거나 유사한 형태로 액세스될 수 있으며, 예를 들어, 우선순위를 조절하거나 보기 위해 사용자에 의해 사용될 수 있다. In one embodiment, for example, by traffic shaping engine 255, transaction priorities may be used in conjunction with the nature of user activity when shaping or managing traffic. For example, the traffic shaping engine 255 may wait for a period of time to transmit a low priority transaction from the device 250 in response to detecting that the user is idle or inactive. In addition, by traffic shaping engine 255, a plurality of low priority transactions may be accumulated and batch transferred from device 250 (eg, via batch module 257). In one embodiment, priorities may be set, configured, or readjusted by the user. For example, the content described in Table 1 may be accessed in the same or similar form in the user interface of device 250, and may be used by the user, for example, to adjust or view priorities.

일괄처리 모듈(257)은 특정 기준에 따라 일괄 전송을 개시할 수 있다. 예를 들어, 일괄 전송(가령, 발생된 복수의 이벤트의 일괄 전송이 있으며, 여기서 일부 이벤트는 서로 다른 때에 발생함)은, 특정 횟수의 낮은 우선순위 이벤트가 검출된 후, 또는 첫 번째 낮은 우선순위 이벤트가 개시되고 일정 시간이 흐른 후, 발생할 수 있다. 덧붙이면, 장치(250)에서 더 높은 우선순위 이벤트가 개시되거나 검출될 때, 일괄처리 모듈(257)이 누적된 낮은 우선순위 이벤트들의 일괄 전송을 개시할 수 있다. 또 다른 이유로(가령, 원격 장치, 가령, 호스트 서버(100 또는 300)로부터 데이터를 수신하기 위해) 라디오 사용이 트리거될 때 일괄 전송은 다른 방식으로 개시될 수 있다. 하나의 실시예에서, 일괄 전송이 발생할 때, 임박한 가지치기 이벤트(수신함(inbox)의 가지치기), 또는 그 밖의 다른 임의의 낮은 우선순위 이벤트가 실행될 수 있다.The batch module 257 may initiate a batch transfer according to certain criteria. For example, a batch transfer (eg, a batch transfer of multiple events that occur, where some events occur at different times) may occur after a certain number of low priority events have been detected, or the first low priority. It may occur after a certain time has passed and the event is initiated. In addition, when a higher priority event is initiated or detected at device 250, batch module 257 may initiate a batch transmission of accumulated low priority events. Batch transmission can be initiated in other ways when radio use is triggered for another reason (eg, to receive data from a remote device, such as host server 100 or 300). In one embodiment, when a batch transfer occurs, an impending pruning event (pruning of inbox), or any other low priority event may be executed.

일반적으로, 다음에서 나열되는 것들 중 하나 이상을 기초로 하여, 이벤트/트랜잭션 레벨, 애플리케이션 레벨, 또는 세션 레벨에서 일괄처리 능력(batching capability)이 비활성화 또는 활성화될 수 있다: 사용자 설정, 장치 제한/설정, 제조업체 명세, 네트워크 제공자 파라미터/제한, 플랫폼 특정 제한/설정, 장치 OS 설정 등. 하나의 실시예에서, 애플리케이션/창/파일이 닫히거나, 종료되거나, 배경으로 이동될 때 일괄 전송이 개시될 수 있고, 선택사항으로서, 일괄 전송을 개시하기 전에 사용자에게 프롬프팅될 수 있으며, 사용자는 일괄 전송을 수동으로 트리거할 수 있다. In general, batch capability may be disabled or enabled at the event / transaction level, application level, or session level based on one or more of the following listed: user settings, device restrictions / settings , Manufacturer specifications, network provider parameters / limitations, platform specific restrictions / settings, device OS settings, etc. In one embodiment, a batch transfer can be initiated when an application / window / file is closed, terminated, or moved to the background, optionally, prompted to the user before initiating the batch transfer, and Can manually trigger a batch transfer.

하나의 실시예에서, 로컬 프록시(275)가 캐시(285)로 데이터를 캐싱함으로써, 장치(250)상에서의 라디오 사용을 로컬하게 조절한다. 캐시(285)에 저장된 콘텐츠에 의해 장치(250)로부터의 요청 또는 트랜잭션이 만족될 수 있을 때, 라디오 제어기(266)는 요청을 원격 개체(가령, 도 1A 및 도 3A에 도시된 호스트 서버(100, 300) 또는 콘텐츠 제공자/애플리케이션 서버, 가령, 도 1B 및 도 1C의 예에서 도시되는 서버/제공자(110))로 전송하기 위해 라디오를 활성화시킬 필요가 없다. 따라서 로컬 프록시(275)는 데이터 요청을 만족하도록, 데이터를 로컬하게 저장하기 위해 로컬 캐시(285) 및 캐시 정책 관리기(245)를 사용하여, 네트워크 자원 및 장치 배터리 소모를 보존하기 위해 장치 라디오의 사용을 생략 또는 감소시킬 수 있다. In one embodiment, local proxy 275 caches data into cache 285 to locally regulate radio usage on device 250. When a request or transaction from device 250 can be satisfied by the content stored in cache 285, radio controller 266 sends the request to a remote entity (eg, host server 100 shown in FIGS. 1A and 3A). , 300) or a content provider / application server, such as the server / provider 110 shown in the examples of FIGS. 1B and 1C). Thus, the local proxy 275 uses the local cache 285 and cache policy manager 245 to store data locally to satisfy the data request, thereby using the device radio to conserve network resources and device battery consumption. Can be omitted or reduced.

로컬 캐시를 활용할 때, 요청/트랜잭션 관리기(225)가 장치(250) 상에서의 애플리케이션에 의한 데이터 요청을 인터셉트하면, 로컬 레포지토리(local repository)(285)에게, 임의의 로컬 저장된 응답이 존재하는지 여부에 대해, 그리고 상기 응답이 유효한지 여부에 대해 질의될 수 있다. 로컬 캐시(285)에서 유효한 응답이 이용가능할 때, 장치(250)가 셀룰러 네트워크 또는 무선 광대역 네트워크를 액세스할 필요 없이, 응답이 장치(250)상의 애플리케이션에 제공될 수 있다.When utilizing a local cache, if the request / transaction manager 225 intercepts a data request by an application on the device 250, it will tell the local repository 285 whether there are any locally stored responses. And whether the response is valid. When a valid response is available in the local cache 285, the response may be provided to an application on the device 250 without the device 250 having to access the cellular network or the wireless broadband network.

유효한 응답이 이용 가능하지 않은 경우, 로컬 프록시(275)는 원격 프록시(가령, 도 3A의 서버 프록시(325))에게, 원격 저장된 응답이 유효한지 여부에 대해 질의할 수 있다. 상기 원격 저장된 응답이 유효한 경우, 상기 응답(가령, 도 1C의 예의 경우, 서버 캐시(135) 또는 선택적 캐싱 서버(199)에 저장될 수 있는 응답)은 모바일 장치로 제공될 수 있으며, 이는, 모바일 장치(250)가 셀룰러 네트워크에 액세스할 필요 없이 이뤄질 수 있어서, 네트워크 자원의 소모가 완화될 수 있다.If no valid response is available, the local proxy 275 may query the remote proxy (eg, server proxy 325 of FIG. 3A) as to whether the remote stored response is valid. If the remotely stored response is valid, the response (eg, a response that may be stored in server cache 135 or optional caching server 199 in the case of the example of FIG. 1C) may be provided to a mobile device, which may be mobile. The device 250 can be made without having to access the cellular network, so that the consumption of network resources can be mitigated.

유효한 캐시 응답이 이용 가능하지 않은 경우, 또는 캐시 응답이 인터셉트된 데이터 요청에 대해 이용 가능하지 않은 경우, 로컬 프록시(275), 가령, 캐싱 정책 관리기(245)가 데이터 요청을 원격 프록시(가령, 도 3A의 서버 프록시(325))로 전송할 수 있으며, 상기 원격 프록시는 데이터 요청을 콘텐츠 소스(가령, 도 1A의 애플리케이션 서버/콘텐츠 제공자(110))로 포워딩하며, 콘텐츠 소스로부터의 응답이 원격 프록시를 통해 제공될 수 있으며, 이는 도 3A의 예시적 호스트 서버(300)와 관련된 설명에서 추가로 설명될 것이다. 캐시 정책 관리기(245)는 다양한 프로토콜(가령, HTTP, HTTPS, IMAP, POP, SMTP, XMPP, 및/또는 ActiveSync)을 사용하는 요청을 관리하거나 프로세싱할 수 있다. 캐싱 정책 관리기(245)는 데이터 요청에 대한 응답을, 동일하거나 유사한 데이터 요청을 만족시킬 때 추후 사용되도록, 로컬 데이터베이스(285)에 캐시 엔트리로서 로컬하게 저장할 수 있다. If a valid cache response is not available, or if a cache response is not available for an intercepted data request, the local proxy 275, such as the caching policy manager 245, may request the data request to be remote proxy (eg, FIG. 3A server proxy 325, which forwards the data request to a content source (eg, application server / content provider 110 of FIG. 1A), and the response from the content source forwards the remote proxy. And may be further described in the description associated with the example host server 300 of FIG. 3A. Cache policy manager 245 may manage or process requests using various protocols (eg, HTTP, HTTPS, IMAP, POP, SMTP, XMPP, and / or ActiveSync). Caching policy manager 245 may store the response to the data request locally as a cache entry in local database 285 for later use in satisfying the same or similar data request.

캐싱 정책 관리기(245)는 원격 프록시가 데이터 요청에 대한 응답을 모니터링할 것을 요청할 수 있으며, 원격 프록시는, 데이터 요청에 대한 예상되지 않은 응답이 검출될 때, 장치(250)에게 통지할 수 있다. 이러한 이벤트의 경우, 캐시 정책 관리기(245)는 데이터 요청에 대해 예상되지 않은 응답(가령, 새 데이터, 변경된 데이터, 추가 데이터 등)을 통지받을 때, 장치(250) 상에서 로컬 저장된 응답을 지우거나 대체할 수 있다. 하나의 실시예에서, 캐싱 정책 관리기(245)는 특정 요청에 대해 사용되는 프로토콜(가령, HTTP, HTTPS, IMAP, POP, SMTP, XMPP, 및/또는 ActiveSync, 그러나 이에 국한되지 않음)을 검출하거나 식별할 수 있다. 하나의 실시예에서, (가령, 캐싱 정책 관리기(245)의 애플리케이션 프로토콜 모듈(246)을 통한) 로컬 프록시(275) 상의 애플리케이션-특정적 핸들러(application specific handler)가, 분산 프록시 내 핸들러로 포트 매핑(port map)(가령, 도 3A의 예시의 경우, 프록시 서버(325)로 포트 매핑)될 수 있는 임의의 프로토콜의 최적화를 가능하게 한다. Caching policy manager 245 may request that the remote proxy monitor the response to the data request, and the remote proxy may notify device 250 when an unexpected response to the data request is detected. For these events, cache policy manager 245 clears or replaces locally stored responses on device 250 when it is notified of unexpected responses to data requests (eg, new data, changed data, additional data, etc.). can do. In one embodiment, caching policy manager 245 detects or identifies the protocol used for the particular request (eg, but not limited to HTTP, HTTPS, IMAP, POP, SMTP, XMPP, and / or ActiveSync). can do. In one embodiment, an application specific handler on the local proxy 275 (eg, via the application protocol module 246 of the caching policy manager 245) maps the port to a handler in the distributed proxy. port map (eg, port mapping to proxy server 325 in the example of FIG. 3A) to enable optimization of any protocol.

하나의 실시예에서, 예를 들어, 콘텐츠 소스로의 데이터 요청이 모바일 장치로 반환될 동일한 결과를 산출할 때, 원격 프록시가 장치(250)로 결과를 반환하기 전에 콘텐츠 소스로부터의 변경된 결과에 대한 데이터 요청에 대해 수신된 응답을 모니터링할 수 있도록, 로컬 프록시(275)가 원격 프록시에게 통지한다. 일반적으로, 로컬 프록시(275)는 로컬 캐싱된 콘텐츠를 이용하여 장치(250) 상의 애플리케이션에 대한 애플리케이션 서버 응답을 시뮬레이트(simulate)할 수 있다. 이는, 새로운/변경된 데이터가 이용 가능하지 않는 트랜잭션에 대해 셀룰러 네트워크가 이용되는 것을 막고, 따라서, 네트워크 자원을 이용가능하게 하며 네트워크 혼잡을 방지할 수 있다. In one embodiment, for example, when a data request to a content source yields the same result to be returned to the mobile device, the remote proxy is not responsible for the changed result from the content source before returning the result to the device 250. The local proxy 275 notifies the remote proxy so that it can monitor the response received for the data request. In general, local proxy 275 may use local cached content to simulate an application server response to an application on device 250. This prevents the cellular network from being used for transactions where new / modified data is not available, thus making network resources available and preventing network congestion.

하나의 실시예에서, 로컬 프록시(275)는 장치(250) 상에서 액세스되거나 설치되는 애플리케이션(가령, 프록시-인지형 및/또는 프록시-비인지형 애플리케이션(210 및 220))을 추적, 검출, 관찰, 모니터링하기 위한 애플리케이션 거동 검출기(236)를 포함한다. 장치(250) 상에서 액세스되는 하나 이상의 애플리케이션의 애플리케이션 거동, 또는 (가령 패턴 검출기(237)를 통해) 검출되는 거동의 패턴이 로컬 프록시(275)에 의해 사용되어, 이들 애플리케이션의 데이터 수요를 만족시키기 위해 요구되는 무선 네트워크에서의 트래픽을 최적화할 수 있다. In one embodiment, local proxy 275 tracks, detects, observes, and monitors applications (eg, proxy-aware and / or proxy-aware applications 210 and 220) that are accessed or installed on device 250. An application behavior detector 236 for monitoring. Application behavior of one or more applications accessed on device 250, or patterns of behavior detected (eg, via pattern detector 237), may be used by local proxy 275 to satisfy the data needs of these applications. It can optimize the traffic in the required wireless network.

예를 들어, 복수의 애플리케이션의 검출된 거동을 기초로 하여, 트래픽 성형 엔진(traffic shaping engine)(255)이 (가령, 정렬 모듈(256)을 통해) 애플리케이션들 중 적어도 일부에 의해 네트워크(무선 네트워크)를 통해 만들어진 콘텐츠 요청을 정렬할 수 있다. 정렬 모듈(256)은 정렬을 하기 위해 먼저 수신된 일부 요청들을 지연시키거나 우선시할 수 있다. 요청이 정렬될 때, 트래픽 성형 엔진(255)은 연결 관리기를 이용하여, 네트워크를 통해 폴링함으로써, 애플리케이션 데이터 요청을 만족시킬 수 있다. 복수의 애플리케이션에 대한 콘텐츠 요청들이, 거동 패턴 또는 규칙/설정(예를 들어, 복수의 애플리케이션에 의해 요청되는 콘텐츠 유형(오디오, 비디오, 텍스트 등), 장치(가령, 모바일 또는 무선 장치) 파라미터, 및/또는 네트워크 파라미터/트래픽 상태, 네트워크 서비스 제공자 제약/상세사항 등)을 기초로 정렬될 수 있다. For example, based on the detected behavior of the plurality of applications, a traffic shaping engine 255 may be configured by at least some of the applications (eg, via the alignment module 256) to be networked (wireless network). ) Can be used to sort the content requests made. The alignment module 256 may delay or prioritize some of the requests that were first received for the alignment. When the request is sorted, the traffic shaping engine 255 may use the connection manager to poll the network to satisfy the application data request. Content requests for a plurality of applications may include behavior patterns or rules / settings (eg, content type (audio, video, text, etc.) requested by the plurality of applications, device (eg, mobile or wireless device) parameters, and And / or network parameters / traffic status, network service provider constraints / details, etc.).

하나의 실시예에서, 패턴 검출기(237)는, 예를 들어, 애플리케이션 거동의 패턴을 추적함으로써, 복수의 애플리케이션에 의해 만들어지는 애플리케이션 요청에서의 반복(recurrence)을 검출할 수 있다. 추적되는 패턴은, 특정 애플리케이션이 배경 프로세스로서, 애플리케이션 서버에 규칙적으로, 특정 시각, 특정 요일에, 예측 가능한 방식으로 주기적으로, 특정 빈도로, 특정 유형의 이벤트에 응답하여 특정 빈도로, 특정 유형의 사용자 질의에 응답하여 요청되는 콘텐츠가 동일한 빈도, 동일한 요청이 이뤄지는 빈도, 요청들 간 간격, 요청을 하는 애플리케이션, 또는 이들 중 임의의 조합을 갖고 폴링하는 것의 검출을 포함할 수 있다. In one embodiment, the pattern detector 237 may detect recurrence in application requests made by multiple applications, for example by tracking a pattern of application behavior. The pattern that is tracked is that a particular application, as a background process, periodically at a specific time, on a specific day, in a predictable manner, at a specific frequency, at a specific frequency, in response to a specific type of event, at a specific frequency, The content requested in response to a user query may include detection of polling with the same frequency, the frequency at which the same request is made, the interval between requests, the application making the request, or any combination thereof.

이러한 반복이 트래픽 성형 엔진(255)에 의해 사용되어, 모바일 장치 또는 무선 장치(250)에서 수행될 애플리케이션 요청으로부터 야기될 콘텐츠 소스(가령, 도 1A의 애플리케이션 서버/콘텐츠 제공자(110))로부터의 콘텐츠의 폴링이, 상기 장치(250)에 원격으로 위치하는 프록시 서버(가령, 도 1C의 프록시 서버(125) 또는 도 3A의 프록시 서버(325))에 의해 분담될 수 있다. 반복이 규칙에 일치할 때 트래픽 성형 엔진(255)이 폴링을 분담하기로 결정할 수 있다. 예를 들어, 정확히 동일한 자원 또는 반환되는 값을 갖거나 요청과 응답 사이에 반복되는 시간 주기의 검출(가령, 특정 시각에서 요청되는 자원의 검출)을 기초로 하는 동일한 자원에 대한 복수의 발생 또는 요청이 있을 수 있다. 폴링의 분담이, 반복되는 콘텐츠 폴링에 대해 콘텐츠 소스와의 무선(셀룰러 또는 그 밖의 다른 무선 광대역) 연결을 확립하기 위해 모바일 장치(250)가 필요로 하는 대역폭 소모량을 감소시킬 수 있다. This iteration is used by traffic shaping engine 255 to allow content from content sources (eg, application server / content provider 110 of FIG. 1A) to result from application requests to be performed at mobile device or wireless device 250. Polling may be shared by a proxy server (eg, proxy server 125 of FIG. 1C or proxy server 325 of FIG. 3A) remotely located at the device 250. The traffic shaping engine 255 may decide to share polling when the iteration matches the rule. For example, multiple occurrences or requests for the same resource that have exactly the same resources or returned values or are based on the detection of a repeated period of time between the request and the response (eg, the detection of the requested resource at a particular time). This can be. The sharing of polling may reduce the bandwidth consumption that mobile device 250 requires to establish a wireless (cellular or other wireless broadband) connection with a content source for repeated content polling.

콘텐츠 소스의 폴링에서 콘텐츠 변화가 검출되지 않을 때, 폴링의 분담의 결과로서, 장치(250)에서의 데이터 요청을 만족시키기 위해 로컬 캐시(285)에 저장되는 로컬 캐싱된 콘텐츠가 제공될 수 있다. 따라서 데이터가 변경되지 않을 때, 라디오 사용을 활성화할 필요 없이, 또는 셀룰러 대역폭을 차지하지 않고, 애플리케이션 데이터 수요가 만족될 수 있다. 데이터가 변경되거나, 및/또는 새로운 데이터가 수신될 때, 폴링을 분담하는 원격 개체가 장치(250)에게 통지할 수 있다. 원격 개체는 도 3A의 예에서 나타나는 것처럼 호스트 서버(300)일 수 있다. When no content change is detected in the polling of the content source, as a result of the sharing of polling, local cached content may be provided that is stored in the local cache 285 to satisfy the data request at the device 250. Thus, when data does not change, application data demands can be satisfied without having to activate radio usage or taking up cellular bandwidth. When data is changed and / or new data is received, the remote entity sharing the poll may notify the device 250. The remote entity may be a host server 300 as shown in the example of FIG. 3A.

하나의 실시예에서, 로컬 프록시(275)는, 상당한 양의 전력을 소모하고 따라서 모바일 장치 배터리 수명에 부정적 영향을 미치는 TCP/IP 연결을 유지하기 위한 주기적 킵얼라이브 메시지(keep-alive message)의 수요/사용을 경감시킬 수 있다. 로컬 프록시 내 연결 관리기(265)(가령, 하트비트 관리기(heartbeat manager)(267))가 애플리케이션으로부터 전송되고 있는 임의의 또는 모든 하트비트(킵얼라이브) 메시지를 검출, 식별, 및 인터셉트할 수 있다. In one embodiment, the local proxy 275 demands a periodic keep-alive message to maintain a TCP / IP connection that consumes a significant amount of power and thus negatively affects mobile device battery life. I can reduce use. Connection manager 265 (eg, heartbeat manager 267) in the local proxy may detect, identify, and intercept any or all heartbeat (keeplive) messages being sent from the application.

하트비트 관리기(267)는 임의의 또는 모든 이들 하트비트 메시지가 셀룰러, 또는 또 다른 네트워크를 통해 전송되는 것을 막을 수 있으며, 대신, 백엔드(가령, 도 lA의 예의 경우, 애플리케이션 서버/제공자(110))와의 연결을 유지하기 위해, 분산 프록시 시스템의 서버 구성요소(가령, 도 1C에 도시된 것)가 하트비트 메시지를 생성하고 전송하는 것에 의지할 수 있다. Heartbeat manager 267 may prevent any or all of these heartbeat messages from being sent over cellular, or another network, and instead replace backends (e.g., application server / provider 110 in the example of FIG. In order to maintain connectivity to the server, server components of the distributed proxy system (eg, shown in FIG. 1C) may rely on generating and sending heartbeat messages.

일반적으로, 로컬 프록시(275)는 개별 관리기, 모듈, 및/또는 엔진에 대해 설명된 기능들 중 임의의 하나 또는 일부를 나타낸다. 본 발명의 범위 내에서, 로컬 프록시(275) 및 장치(250)는 더 많거나 더 적은 구성요소를 포함할 수 있고, 더 많거나 더 적은 기능이 포함될 수 있다. In general, local proxy 275 represents any one or some of the functions described for an individual manager, module, and / or engine. Within the scope of the present invention, local proxy 275 and device 250 may include more or fewer components, and may include more or less functionality.

도 2B는 애플리케이션 거동 및/또는 네트워크 상태에 대해 캐싱하고 캐싱 전략을 적응화할 수 있는 도 2A의 예에서 나타난 캐시 시스템 내 구성요소의 추가 예를 도시하는 블록도를 도시한다. FIG. 2B shows a block diagram illustrating additional examples of components in the cache system shown in the example of FIG. 2A that may cache for application behavior and / or network conditions and adapt the caching strategy.

하나의 실시예에서, 캐싱 정책 관리기(245)는 메타데이터 발생기(203), 캐시 룩-업 엔진(205), 캐시 적절성 판단 엔진(cache appropriateness decision engine)(246), 폴 스케줄 생성기(247), 애플리케이션 프로토콜 모듈(248), 캐시 또는 연결 선택 엔진(249) 및/또는 로컬 캐시 무효화기(244)를 포함한다. 캐시 적절성 판단 엔진(246)은 타이밍 예측기(timing predictor)(246a), 콘텐츠 예측기(content predictor)(246b), 요청 분석기(246c), 및/또는 응답 분석기(246d)를 포함하며, 캐시 또는 연결 선택 엔진(249)은 응답 스케줄러(249a)를 포함한다. 메타데이터 생성기(203) 및/또는 캐시 룩-업 엔진(205)은, 캐시 엔트리의 수정 또는 추가, 또는 이들의 질의를 위해, 캐시(285)(또는 로컬 캐시)로 연결된다. In one embodiment, caching policy manager 245 includes metadata generator 203, cache look-up engine 205, cache appropriateness decision engine 246, poll schedule generator 247, Application protocol module 248, cache or connection selection engine 249, and / or local cache invalidator 244. Cache adequacy determination engine 246 includes a timing predictor 246a, a content predictor 246b, a request analyzer 246c, and / or a response analyzer 246d, and selects a cache or connection Engine 249 includes a response scheduler 249a. Metadata generator 203 and / or cache look-up engine 205 are connected to cache 285 (or local cache) for modifying or adding cache entries, or for querying them.

캐시 룩-업 엔진(205)은 ID 또는 URI 필터(205a)를 더 포함하고, 로컬 캐시 무효화기(244)는 TTL 관리기(244a)를 더 포함하며, 폴 스케줄 생성기(247)는 스케줄 업데이트 엔진(247a) 및/또는 시간 조절 엔진(247b)을 더 포함할 수 있다. 캐싱 정책 관리기(245)의 한 가지 실시예는 애플리케이션 캐시 정책 레포지토리(243)를 포함한다. 하나의 실시예에서, 애플리케이션 거동 검출기(236)는 패턴 검출기(237), 폴 간격 검출기(238), 애플리케이션 프로파일 생성기(239), 및/또는 우선순위 엔진(241)을 포함한다. 폴 간격 검출기(238)는 응답/요청 추적 엔진(238b)을 갖는 롱 폴 검출기(long poll detector)(238a)를 더 포함할 수 있다. 폴 간격 검출기(238)는 롱 폴 헌팅 검출기(long poll hunting detector)(238c)를 더 포함할 수 있다. 애플리케이션 프로파일 생성기(239)는 응답 지연 간격 추적기(239a)를 더 포함할 수 있다. The cache look-up engine 205 further includes an ID or URI filter 205a, the local cache invalidator 244 further includes a TTL manager 244a, and the poll schedule generator 247 includes a schedule update engine ( 247a) and / or time adjustment engine 247b. One embodiment of caching policy manager 245 includes an application cache policy repository 243. In one embodiment, the application behavior detector 236 includes a pattern detector 237, a pole spacing detector 238, an application profile generator 239, and / or a priority engine 241. The poll interval detector 238 may further include a long poll detector 238a having a response / request tracking engine 238b. The pole spacing detector 238 may further include a long poll hunting detector 238c. The application profile generator 239 may further include a response delay interval tracker 239a.

패턴 검출기(237), 애플리케이션 프로파일 생성기(239), 및 우선순위 엔진(241)이 도 2A의 예시에서 나타난 패턴 검출기에 대한 기재와 관련하여 기재되었다. 하나의 실시예는 애플리케이션 프로파일(가령, HTTP 요청의 거동, 패턴, 유형 등)과 관련된 정보 또는 메타데이터를 저장하기 위해 로컬 프록시(275)에 의해 사용될 수 있는 애플리케이션 프로파일 레포지토리(242)를 더 포함한다. The pattern detector 237, the application profile generator 239, and the priority engine 241 have been described with reference to the description for the pattern detector shown in the example of FIG. 2A. One embodiment further includes an application profile repository 242 that can be used by the local proxy 275 to store metadata or information related to the application profile (eg, behavior, pattern, type, etc. of the HTTP request). .

캐시 적절성 판단 엔진(246)은, 모바일 장치(250)가 상호대화하며 콘텐츠를 갖는 콘텐츠 소스(가령, 도 1B의 예시의 경우, 애플리케이션 서버/콘텐츠 제공자(110))로부터의 콘텐츠가 캐싱되기 적합할 수 있는지 여부를 검출, 평가, 또는 결정할 수 있다. 예를 들어, 상기 판단 엔진(246)은 모바일 장치(250)에서 개시되는 요청 및/또는 상기 요청에 대해 수신된 응답에 대한 정보를 이용하여, 캐싱 가능함(cacheability), 캐싱 가능할 가능성이 있음(potential cacheability), 또는 캐싱 불가능함(non-cacheability)을 결정할 수 있다. 일부 경우, 판단 엔진(246)은 먼저, 요청이 블랙리스트에 올라간 도착지와 관련됐는지 여부, 또는 요청 자체가 블랙리스트에 올라간 클라이언트 또는 애플리케이션으로부터 발원된 것인지 여부를 검증할 수 있다. 그런 경우, 판단 엔진(246)에 의해, 추가 프로세싱 및 분석이 수행되지 않을 수 있고, 요청을 만족시키기 위해 요청이 무선으로(over the air) 서버로 전송되도록 허용될 수 있다. 블랙리스트에 올라간 도착지 또는 애플리케이션/클라이언트(가령, 모바일 애플리케이션)가 로컬 프록시에서 로컬하게 (가령, 애플리케이션 프로파일 레포지토리(242)에) 유지되거나, 원격으로 (가령, 프록시 서버(325) 또는 또 다른 개체에) 유지될 수 있다.The cache adequacy determination engine 246 may be suitable for caching content from a content source with which the mobile device 250 interacts and has content (eg, application server / content provider 110 in the example of FIG. 1B). Can be detected, evaluated, or determined. For example, the decision engine 246 may be cacheable, potential, using information about a request initiated by the mobile device 250 and / or a response received for the request. cacheability, or non-cacheability may be determined. In some cases, decision engine 246 may first verify whether the request is associated with a blacklisted destination or whether the request itself originated from a blacklisted client or application. If so, further processing and analysis may not be performed by decision engine 246 and the request may be allowed to be sent over the air to the server to satisfy the request. Blacklisted destinations or applications / clients (e.g., mobile applications) are maintained locally at the local proxy (e.g., in the application profile repository 242), or remotely (e.g., in the proxy server 325 or another object). Can be maintained.

하나의 실시예에서, 예를 들어, 요청 분석기(246c)를 통해, 판단 엔진(246)은, 모바일 장치(250)에서 생성된 애플리케이션 또는 클라이언트 요청에 대한 정보를 수집한다. 요청 정보는 요청 특성 정보, 가령, 요청 방법을 포함할 수 있다. 예를 들어, 요청 방법은 모바일 애플리케이션 또는 클라이언트에 의해 생성된 HTTP 요청의 유형을 지시할 수 있다. 하나의 실시예에서, 요청 방법이 GET 요청이거나 POST 요청인 경우, 상기 요청에 대한 응답이 캐싱 가능하거나, 캐싱 가능할 가능성이 있는 것으로 식별될 수 있다. 또 다른 유형의 요청(가령, OPTIONS, HEAD, PUT, DELETE, TRACE, 또는 CONNECT)이 캐싱될 수 있거나 캐싱되지 않을 수 있다. 일반적으로 캐싱될 수 없는 요청 방법에 의한 HTTP 요청은 캐싱되지 않을 것이다. In one embodiment, for example, via request analyzer 246c, decision engine 246 collects information about an application or client request generated at mobile device 250. The request information may include request characteristic information, for example, a request method. For example, the request method may indicate the type of HTTP request made by the mobile application or client. In one embodiment, if the request method is a GET request or a POST request, the response to the request may be identified as being or may be cacheable. Another type of request (eg, OPTIONS, HEAD, PUT, DELETE, TRACE, or CONNECT) may or may not be cached. In general, HTTP requests by request methods that cannot be cached will not be cached.

요청 특성 정보는 예를 들면, 요청 크기와 관련된 정보를 더 포함할 수 있다. 특정 크기를 초과하는 본체 크기(body size)를 갖는 요청(가령, HTTP 요청)에 대한 응답이 캐싱되지 않을 것이다. 예를 들어, 요청에 대한 정보가 요청의 요청 본체 크기가 특정 크기를 초과하지 않는다고 가리키는 경우, 캐싱 가능함(cacheability)이라고 결정될 수 있다. 일부 경우, 최대 캐싱 가능한 요청 본체 크기는 8092 바이트로 설정될 수 있다. 또 다른 경우, 예를 들어, 네트워크 수용력 또는 네트워크 운영자 특정 설정에 따라서, 여러 다른 값들이 사용될 수 있다.The request characteristic information may further include information related to the request size, for example. Responses to requests with body sizes exceeding a certain size (eg, HTTP requests) will not be cached. For example, if the information about the request indicates that the request body size of the request does not exceed a certain size, it may be determined to be cacheability. In some cases, the maximum cacheable request body size may be set to 8092 bytes. In other cases, different values may be used, for example, depending on network capacity or network operator specific settings.

일부 경우, 특정 애플리케이션 서버/콘텐츠 제공자(가령, 도 1C의 서버/콘텐츠 제공자(110))로부터의 콘텐츠는, 기준의 세트, 예를 들면, 콘텐츠 소스로부터 요청되는 콘텐츠의 시간 중요도를 특정하는 기준들을 기초로 하여, 캐싱되기 적합하다고 결정된다. 하나의 실시예에서, 로컬 프록시(가령, 도 1C 및 도 2A의 로컬 프록시(175 또는 275))가, 애플리케이션에 의해 요청되는 호스트 서버로부터의 콘텐츠를, 애플리케이션에 의해 만들어지는 후속 요청을 만족시키기 위해, 모바일 장치상의 로컬 캐시에 캐싱되는 요소로서 저장하기 위한 선택 기준을 적용한다.In some cases, content from a particular application server / content provider (eg, server / content provider 110 of FIG. 1C) may contain criteria that specify the time importance of the content requested from the content source, eg, a content source. On the basis, it is determined that it is suitable to be cached. In one embodiment, a local proxy (eg, local proxy 175 or 275 in FIGS. 1C and 2A) is configured to satisfy subsequent requests made by the application with content from the host server requested by the application. Apply selection criteria for storing as elements cached in a local cache on the mobile device.

캐시 적절성 판단 엔진(246)은, (가령, 모바일 애플리케이션 또는 장치(250) 상의 그 밖의 다른 클라이언트에 의해) 모바일 장치(250)로부터 전송되는 요청들의 검출된 패턴 및/또는 수신된 응답들의 패턴을 더 기초로 하여, 요청 및/또는 응답에서 예측가능성(predictability)을 검출할 수 있다. 예를 들어, 판단 엔진(246)(가령, 요청 분석기(246c))에 의해 수집되는 요청 특성 정보는, 하나의 요청과, 모바일 장치상의 동일 클라이언트에 의해 생성되는 나머지 다른 요청들(또는 동일한 호스트로 향해지는 나머지 다른 요청들)(가령, 유사하거나 동일한 식별자 파라미터를 가짐) 간의 주기성 정보(periodicity information)를 더 포함할 수 있다. Cache adequacy determination engine 246 further detects a pattern of requests sent from mobile device 250 and / or a pattern of received responses (eg, by a mobile application or other client on device 250). On the basis, predictability can be detected in the request and / or response. For example, request characteristic information collected by decision engine 246 (eg, request analyzer 246c) may be sent to one request and the other requests generated by the same client on the mobile device (or to the same host). Periodicity information between the remaining other requests that are directed (eg, having similar or identical identifier parameters).

상기 하나의 요청 및 동일한 클라이언트에 의해 생성되는 나머지 다른 요청들이, 일부 식별 가능한, 또는 부분적으로 또는 전체적으로 재생성될 수 있는 변하는 패턴을 갖고 고정 속도로, 또는 거의 고정 속도로, 또는 동적 속도(dynamic rate)로 발생할 때, 판단 엔진(246) 또는 요청 분석기(246c)에 의해 주기성이 검출될 수 있다. 일부 식별 가능한 패턴(가령, 규칙적 간격, 검출 가능한 패턴을 갖는 간격, 또는 추세(가령, 증가하는 추세, 감소하는 추세 등))을 갖고 요청이 이뤄지는 경우, 타이밍 예측기(246a)가 장치상의 특정 애플리케이션에 의해 이뤄지는 요청이 예측 가능하다고 결정하고, 적어도 타이밍 관점에서, 캐싱되기 적절할 가능성이 있는 것으로 식별할 수 있다. The one request and the other requests made by the same client have a varying pattern that may be partially reproducible, or partially or wholly reproducible, at a fixed rate, or almost at a fixed rate, or at a dynamic rate. As such, periodicity may be detected by decision engine 246 or request analyzer 246c. When a request is made with some identifiable pattern (eg, regular interval, interval with detectable pattern, or trend (eg, increasing trend, decreasing trend, etc.)), the timing predictor 246a may be applied to a particular application on the device. The request made by it can be determined to be predictable and can be identified as likely to be cached, at least in terms of timing.

일반적으로, 식별 가능한 패턴 또는 추세는, 예를 들어 임의의 애플리케이션 또는 클라이언트 거동을 포함할 수 있으며, 이들은 모바일 장치(250) 상의 로컬 프록시(275) 상에서 로컬하게 시뮬레이트(simulate)될 수 있거나, 예를 들어 호스트(300) 상의 프록시 서버(325)에 의해 원격으로 시뮬레이트될 수 있거나, 로컬 시뮬레이션과 원격 시뮬레이션이 조합되어 애플리케이션 거동을 모방할 수 있다.In general, identifiable patterns or trends may include, for example, any application or client behavior, which may be simulated locally on local proxy 275 on mobile device 250, or For example, it can be simulated remotely by the proxy server 325 on the host 300, or local simulations and remote simulations can be combined to mimic application behavior.

하나의 실시예에서, 판단 엔진(246)은, 예를 들어, 응답 분석기(246d)를 통해, 모바일 장치(250)에서 생성되는 애플리케이션 또는 클라이언트 요청에 대한 응답에 관한 정보를 수집할 수 있다. 일반적으로 응답은, 모바일 장치(250)에서 요청을 전송했던 애플리케이션(가령, 모바일 애플리케이션)의 서버 또는 호스트로부터 수신된다. 일부 경우, 모바일 클라이언트 또는 애플리케이션은 애플리케이션의 모바일 버전(가령, 소셜 네트워킹, 검색, 여행 관리, 음성메일, 연락처 관리기, 전자메일) 또는 웹 브라우저나 데스크톱 클라이언트를 통해 액세스되는 웹 사이트일 수 있다. In one embodiment, the determination engine 246 may collect information regarding the response to the application or client request generated at the mobile device 250, for example via the response analyzer 246d. In general, the response is received from the server or host of the application (eg, mobile application) that sent the request at mobile device 250. In some cases, the mobile client or application may be a mobile version of the application (eg, social networking, search, travel management, voicemail, contact manager, email) or a web site accessed through a web browser or desktop client.

예를 들어, 응답 특성 정보는, 응답을 전송할 때 전송 인코딩(transfer encoding)이 사용되는지 또는 청크 전송 인코딩(chunked transfer encoding)이 사용되는지에 대한 지시자(indication)를 포함할 수 있다. 일부 경우, 전송 인코딩 또는 청크 전송 인코딩을 이용한 HTTP 요청에 대한 응답은 캐싱되지 않으며, 따라서 추후 분석을 위해 이동된다. 왜냐하면, 보통, 청크 응답은 크고 캐싱되기 적합하지 않는데, 이는 이들 트랜잭션의 프로세싱이 전체적인 수행을 느리게 할 가능성이 높기 때문이다. 따라서 일부 실시예에서, 응답 전송 시 전송 인코딩이 사용되지 않을 때, 캐싱 가능함 또는 캐싱 가능할 가능성이 있음으로 결정될 수 있다.For example, the response characteristic information may include an indication as to whether transfer encoding or chunked transfer encoding is used when transmitting the response. In some cases, responses to HTTP requests using transport encoding or chunked encoding are not cached and are therefore moved for later analysis. Because usually, chunk responses are large and unsuitable for caching, because the processing of these transactions is likely to slow the overall performance. Thus, in some embodiments, it may be determined that there is a possibility of being cacheable or cacheable when transport encoding is not used in response transmission.

덧붙이자면, 응답 특성 정보가, 응답 분석기(246d)에 의해 식별될 수 있는 응답의 관련된 상태 코드를 포함할 수 있다. 일부 경우, 캐싱될 수 없는 상태 코드를 갖는 HTTP 응답은 일반적으로 캐싱되지 않는다. 응답 분석기(246d)가 응답으로부터 상태 코드를 추출할 수 있으며, 상기 상태 코드가 캐싱 가능함 또는 캐싱 불가능함 상태 코드와 일치하는지 여부를 결정할 수 있다. 임의의 캐싱 가능함 상태 코드의 예로는, 200-OK, 301-Redirect, 302-Found, 303-See other, 304-Not Modified, 307Temporary Redirect, 또는 500-Internal server error를 포함한다. 임의의 캐싱 불가능함 상태 코드로는, 예를 들어, 403-Forbidden 또는 404-Not found를 포함할 수 있다. In addition, the response characteristic information may include an associated status code of the response that may be identified by response analyzer 246d. In some cases, HTTP responses with status codes that cannot be cached are generally not cached. Response analyzer 246d may extract the status code from the response and may determine whether the status code matches a cacheable or non-cacheable status code. Examples of any cacheable status codes include 200-OK, 301-Redirect, 302-Found, 303-See other, 304-Not Modified, 307Temporary Redirect, or 500-Internal server error. Any non-cacheable status code may include, for example, 403-Forbidden or 404-Not found.

하나의 실시예에서, 응답에 대한 정보가 캐싱 불가능함 상태 코드를 나타내지 않거나, 캐싱 가능함 상태 코드를 나타내는 경우 캐싱 가능함 또는 캐싱 가능할 가능성이 있음이라고 결정될 수 있다. 응답 분석기(246d)가 특정 응답과 연계된 캐싱 가능하지 않음 상태 코드를 검출한 경우, 추가 프로세싱으로부터 특정 트랜잭션(요청/응답 쌍)이 제거되고, 일시적으로, 또는 반영구적으로, 또는 영구적으로 캐싱 불가능함이라고 결정될 수 있다. 상태 코드가 캐싱 가능함이라고 나타내는 경우, 도 9-10의 예시적 흐름도에서 나타나는 것처럼, 트랜잭션(가령, 요청 및/또는 응답 쌍)이 추가 프로세싱의 대상이 될 수 있고, 캐싱 가능함을 확인하기 위해 분석될 수 있다.In one embodiment, it may be determined that the information for the response does not represent a non-cacheable status code or is likely to be cacheable or cacheable if it represents a cacheable status code. If response analyzer 246d detects a non-cacheable status code associated with a particular response, the specific transaction (request / response pair) is removed from further processing and is not cacheable temporarily, semi-permanently, or permanently. Can be determined. If the status code indicates that it is cacheable, then the transaction (eg, request and / or response pair) may be subject to further processing and analyzed to confirm that it is cacheable, as shown in the example flow chart of FIGS. 9-10. Can be.

또한 응답 특성 정보는 응답 크기 정보를 포함할 수 있다. 일반적으로, 응답이 특정 크기를 초과하지 않는 경우, 응답은 모바일 장치(250)에서 로컬하게 캐싱될 수 있다. 일부 경우, 디폴트 최대 캐싱되는 응답 크기는 115KB로 설정된다. 또 다른 경우, 최대 캐싱 가능한 응답 크기는 서로 다를 수 있으며, 및/또는 동작 상태, 네트워크 상태, 네트워크 수용량, 사용자 선호도, 네트워크 운영자 요구사항, 또는 그 밖의 다른 애플리케이션 특정, 사용자 특정 및/또는 장치 특정 요인을 기초로, 동적으로 조절될 수 있다. 하나의 실시예에서, 응답 분석기(246d)는 응답의 크기를 식별할 수 있고, 응답 크기가 특정 임계치 또는 최댓값을 초과하지 않는 경우, 캐싱 가능함 또는 캐싱 가능할 가능성이 있음으로 결정될 수 있다.In addition, the response characteristic information may include response size information. In general, if the response does not exceed a certain size, the response may be cached locally at the mobile device 250. In some cases, the default maximum cached response size is set to 115 KB. In other cases, the maximum cacheable response size may be different, and / or operational status, network status, network capacity, user preferences, network operator requirements, or other application-specific, user-specific and / or device-specific factors. On the basis of this, it can be dynamically adjusted. In one embodiment, response analyzer 246d may identify the magnitude of the response and may be determined to be cacheable or likely to be cacheable if the response magnitude does not exceed a certain threshold or maximum.

덧붙이자면, 응답 특성 정보는, 한 요청에 대한 한 응답 및 모바일 장치상의 동일한 클라이언트에 의해 생성되거나 동일한 콘텐츠 호스트 또는 애플리케이션 서버로 전달되는 그 밖의 다른 요청에 대한 그 밖의 다른 응답에 대한 응답 본체 정보(response body information)를 포함할 수 있다. 예를 들어, 응답 분석기(246d)에 의해, 응답에 대한 응답 본체 정보와 그 밖의 다른 응답에 대한 응답 본체 정보가 비교되어, 동적 콘텐츠 (또는 빈번하게 변경되며 캐시 엔트리로 효율적으로 서비스될 수 없는 콘텐츠, 가령, 금융 데이터, 주식 시세, 뉴스 피드, 실시간 스포츠 이벤트 활동 등을 포함한 응답)의 캐싱이 방지될 수 있다.In addition, the response characteristic information is response body information for one response to one request and for other responses to other requests generated by the same client on the mobile device or delivered to the same content host or application server. body information). For example, the response analyzer 246d compares the response body information for the response with the response body information for the other responses so that the dynamic content (or content that changes frequently and cannot be efficiently serviced by cache entries) is compared. Caching of, for example, responses including financial data, stock quotes, news feeds, real-time sporting event activities, and the like can be prevented.

캐시 적절성 판단 엔진(246)(가령, 콘텐츠 예측기(246b))이 반복성(repeatability)을 확정적으로 식별하거나, 반복성의 지시자를 식별하거나, 반복성의 가능성을 식별하거나, 콘텐츠 소스(가령, 도 1A-1C의 예시의 경우, 콘텐츠 호스트/애플리케이션 서버(110))로부터 수신된 응답의 예측성을 식별할 수 있다. 반복성은, 예를 들어, 콘텐츠 소스로부터 수신된 적어도 2개의 응답을 추적하고, 2개의 응답이 서로 동일한지 여부를 결정함으로써 검출될 수 있다. 예를 들어, 한 응답에 대한 응답 본체 정보와, 동일한 모바일 클라이언트에 의해 전송되거나 동일한 호스트/서버로 전달되는 그 밖의 다른 응답에 대한 응답 본체 정보가 동일하거나 실질적으로 동일한 경우 응답 분석기(246d)에 의해, 캐싱 가능함으로 결정될 수 있다. 2개의 응답은 연속한 요청들에 응답하여 전송된 응답일 수도 있고, 아닐 수도 있다. 하나의 실시예에서, 특정 애플리케이션으로부터의 요청에 대해 수신된 응답의 해시 값(hash value)이 (휴리스틱을 이용하거나 이용하지 않고) 애플리케이션에 대해 전체적으로, 및/또는 특정 요청에 대한 콘텐츠의 반복성을 결정하기 위해 사용된다. 추가적인 동일한 응답이 일부 애플리케이션에 대해, 또는 특정 환경 하에서 요구될 수 있다.Cache adequacy determination engine 246 (e.g., content predictor 246b) may reliably identify repeatability, identify indicators of repeatability, identify the likelihood of repeatability, or determine a content source (e.g., Figures 1A-1C). For example, the predictability of the response received from the content host / application server 110 can be identified. Repeatability can be detected, for example, by tracking at least two responses received from a content source and determining whether the two responses are equal to each other. For example, if the response body information for one response and the response body information for another response sent by the same mobile client or delivered to the same host / server are the same or substantially the same, then response analyzer 246d This may be determined as caching possible. The two responses may or may not be responses sent in response to successive requests. In one embodiment, the hash value of the response received for a request from a particular application determines the repeatability of the content as a whole and / or for a particular request (with or without heuristics) for the application. Used to Additional identical responses may be required for some applications or under certain circumstances.

수신된 콘텐츠의 반복성은 100% 확정될 필요는 없다. 예를 들어, 특정 개수 또는 특정 퍼센트의 응답들이 서로 동일하거나 유사한 경우, 응답이 반복성이 있다고 결정될 수 있다. 특정 개수 또는 특정 퍼센트의 동일/유사한 응답은, 디폴트(default)로 설정되거나, 요청을 발생하는 애플리케이션을 기초로 설정된(가령, 애플리케이션이 꾸준한 업데이트로 매우 동적인지, 드문 업데이트로 덜 동적인지 여부) 선택 시간 주기 동안 추적될 수 있다. 모바일 장치(250) 상의 요청하는 애플리케이션 또는 클라이언트로 제공될 콘텐츠를 캐싱할 때, 분산 시스템에 의해 임의의 지시된 예측성 또는 반복성, 또는 반복될 가능성이 활용될 수 있다. The repeatability of the received content need not be 100% finalized. For example, if a certain number or a certain percentage of responses are the same or similar to each other, it may be determined that the responses are repeatable. A certain number or a certain percentage of identical / similar responses can be set to default or based on the application making the request (eg whether the application is very dynamic with a steady update or less dynamic with a rare update). Can be tracked for a period of time. When caching content to be provided to a requesting application or client on mobile device 250, any indicated predictive or repeatable, or likelihood of being repeated by a distributed system may be utilized.

하나의 실시예에서, 롱 폴 유형 요청의 경우, 첫 2개의 응답들에 대한 응답 지연 시간이 서로 동일하거나, 실질적으로 동일하거나, 간격이 증가하는 것으로 검출된 경우, 로컬 프록시(175)는 세 번째 요청에 대한 응답을 캐싱하기 시작할 수 있다. 일반적으로 첫 2개의 응답들에 대해 수신된 응답은 서로 동일해야 하며, 세 번째 요청에 대해 수신된 세 번째 응답이 동일하다고 검증되면(가령, R0 = R1 = R2인 경우), 세 번째 응답이 모바일 장치에 로컬하게 캐싱될 수 있다. 애플리케이션의 유형, 데이터의 유형, 콘텐츠의 유형, 사용자 선호도, 또는 통신업체(carrier)/네트워크 운영자 명세에 따라, 더 적거나 더 많은 개수의 동일한 응답들이 캐싱되기 시작할 필요가 있을 수 있다. In one embodiment, for a long pole type request, if it is detected that the response delay times for the first two responses are equal to each other, substantially the same, or increase in interval, the local proxy 175 receives the third message. You can start caching the response to the request. In general, the responses received for the first two responses must be identical to each other, and if the third response received for the third request is verified to be the same (for example, if R0 = R1 = R2), then the third response is mobile. It can be cached locally on the device. Depending on the type of application, type of data, type of content, user preference, or carrier / network operator specification, fewer or more identical responses may need to begin to be cached.

애플리케이션 거동 검출기(236)의 롱 폴 헌팅 검출기(238c)에 의해 검출될 때, 롱 폴에 대한 동일한 응답의 증가하는 응답 지연은 헌팅 주기(hunting period)(가령, 모바일 장치상의 애플리케이션/클라이언트가, 특정 네트워크가 허용할 요청과 응답 사이의 가장 긴 시간을 찾는 중인 주기)를 가리킬 수 있다. When detected by the long pole hunting detector 238c of the application behavior detector 236, the increasing response delay of the same response to the long pole is determined by a hunting period (e.g., application / client on the mobile device). How long the network is looking for the longest time between a request and a response).

일례가 T0, T1, T2를 이용하여 이하에서 설명될 수 있으며, 여기서, T는 연속하는 요청들에 대해, 요청이 전송되는 시점과 응답(가령, 응답 헤더)이 검출/수신되는 시점 사이의 지연 시간을 나타낸다:An example can be described below using T0, T1, T2, where T is the delay between the time a request is sent and the time a response (eg, response header) is detected / received for successive requests. Indicates time:

T0 = 응답0(t) - 요청0(t) = 180 s. (+/- 허용오차)T0 = response 0 (t)-request 0 (t) = 180 s. (+/- tolerance)

T1 = 응답1(t) - 요청1(t) = 240 s. (+/- 허용오차)T1 = response1 (t)-request1 (t) = 240 s. (+/- tolerance)

T2 = 응답2(t) - 요청2(t) = 500 s. (+/- 허용오차)T2 = response2 (t)-request2 (t) = 500 s. (+/- tolerance)

앞서 나타난 예시적 타이밍 시퀀스 T0 < T1 < T2에서, 이는, 네트워크 타임아웃이 아직 초과되지 않았을 때 롱 폴에 대한 헌팅 패턴을 나타낼 수 있다. 덧붙이자면, 3개의 요청에 대하여 수신된 응답 R0, R1, 및 R2이 서로 동일한 경우, R2는 캐싱될 수 있다. 이 예에서, 롱 폴이 정착(settle)되기를 기다리지 않고 롱 폴 헌팅 주기 동안 R2가 캐싱되며, 따라서 응답 캐싱이 신속화된다(가령, 이는 모든 또는 선택된 애플리케이션에 대해 구현될 수 있는 선택사항적인 가속화된 캐싱 거동이다).In the example timing sequence T0 <T1 <T2 shown above, this may indicate a hunting pattern for the long pole when the network timeout has not yet been exceeded. In addition, if the received responses R0, R1, and R2 for the three requests are equal to each other, R2 may be cached. In this example, R2 is cached during the long pole hunting period without waiting for the long pole to settle, so response caching is accelerated (eg, optional accelerated caching that can be implemented for all or selected applications). Behavior).

따라서 로컬 프록시(275)는 앞서 나타난 타이밍 시퀀스로부터 추출될 수 있는 정보(가령, 폴링 스케줄, 폴링 간격, 폴링 유형)를 프록시 서버로 특정하고, 캐싱을 시작하며, 프록시 서버가 소스로 폴링하고 소스를 모니터링하는 것을 시작하도록 요청할 수 있다(가령, T0, T1, T2 중 임의의 것(일반적으로는 T2, 즉, 타임 아웃 없는 가장 긴 검출 간격)을 폴링 간격으로서 이용하며, 소스로부터의 응답이 수신되는 폴링 간격이 콘텐츠 소스(가령, 애플리케이션 서버/서비스 제공자(310))에게 폴링할 때 사용되도록 도 3A의 프록시 서버(325)로 전송될 것이다).Thus, the local proxy 275 specifies the information that can be extracted from the timing sequence shown above (e.g. polling schedule, polling interval, polling type) as a proxy server, starts caching, and the proxy server polls the source and polls the source. You can request to start monitoring (eg any of T0, T1, T2 (typically T2, i.e. the longest detection interval without timeout) as the polling interval, and the response from the source is received. The polling interval will be sent to the proxy server 325 of FIG. 3A to be used when polling the content source (eg, application server / service provider 310).

그러나 시간 간격이 점점 더 짧아지는 것으로 검출되는 경우, 애플리케이션(가령, 모바일 애플리케이션)/클라이언트가, 콘텐츠 소스(가령, 애플리케이션/서버 서버/제공자(110 또는 310))로부터 응답이 신뢰할만하게(reliably) 수신될 수 있는 시간 간격 동안 여전히 헌팅할 수 있고, 따라서 일반적으로, 요청/응답 간격이 예를 들어 롱 폴 유형 요청에 대해 동일한 시간 간격 또는 증가하는 시간 간격을 가리킬 때까지 캐싱은 시작되지 않아야 한다. However, if it is detected that the time interval is getting shorter, the application (eg mobile application) / client receives the response reliably from the content source (eg application / server server / provider 110 or 310). Hunting may still be possible for a time interval that may be, so in general, caching should not be started until the request / response interval points to the same or incremental time interval, for example for a long pole type request.

검출된 감소하는 지연을 핸들링하는 일례가 이하에서, T0, T1, T2, T3, 및 T4를 이용해 설명될 수 있으며, 여기서 T는 연속한 요청에 대해 요청이 전송된 시점과 응답(가령, 응답 헤더)이 검출/수신된 시점 사이의 지연 시간을 가리킨다: An example of handling the detected decreasing delay may be described below using T0, T1, T2, T3, and T4, where T is the time at which the request was sent and the response (eg, response header) for successive requests. Indicates the delay time between the detected / received times:

T0 = 응답0(t) - 요청0(t) = 160 s. (+/- 허용오차)T0 = response 0 (t)-request 0 (t) = 160 s. (+/- tolerance)

T1 = 응답1(t) - 요청1(t) = 240 s. (+/- 허용오차)T1 = response1 (t)-request1 (t) = 240 s. (+/- tolerance)

T2 = 응답2(t) - 요청2(t) = 500 s. (+/- 허용오차)T2 = response2 (t)-request2 (t) = 500 s. (+/- tolerance)

T3 = 700 s.에서 타임 아웃 (+/- 허용오차)Timeout at T3 = 700 s. (+/- tolerance)

T4 = 응답4(t) - 요청4(t) = 600 (+/- 허용오차)T4 = response 4 (t)-request 4 (t) = 600 (+/- tolerance)

상기의 타이밍 시퀀스에서 나타나는 것처럼, 응답 지연에 대한 패턴 T1 < T2 < T3 > T4이 검출되는 경우(가령, 애플리케이션 거동 검출기(236)의 롱 폴 헌팅 검출기(238c)에 의해 검출), 롱 폴 헌팅 주기 동안 T3가 네트워크 타임 아웃을 초과할 가능성이 높다고 판단될 수 있다. 요청3에서, 연결이 네트워크, 애플리케이션, 서버에 의해, 또는 그 밖의 다른 이유로, 응답이 전송되거나 이용 가능해지기 전에 종료됐기 때문에, 응답이 수신되지 않았을 가능성이 높다. 요청4(T4 후)에서, 응답(가령, 응답4)이 검출되거나 수신된 경우, 그 후, (콘텐츠 반복성 조건이 충족되는 경우) 로컬 프록시(275)가 캐싱을 위해 상기 응답을 이용할 수 있다. 로컬 프록시는 또한, 프록시 서버가 콘텐츠 소스를 모니터링/폴링하기 위해 설정된 폴링 스케줄에서 T4를 폴 간격으로서 이용할 수 있다. As shown in the timing sequence above, when the pattern T1 < T2 < T3 > T4 for the response delay is detected (e.g., by the long pole hunting detector 238c of the application behavior detector 236), the long pole hunting period. It may be determined that T3 is likely to exceed the network timeout. In request 3, it is likely that the response was not received because the connection was terminated before the response was sent or made available by the network, the application, the server, or for some other reason. In request 4 (after T4), if a response (eg, response 4) is detected or received, then the local proxy 275 may use the response for caching (if the content repeatability condition is met). The local proxy may also use T4 as the poll interval in the polling schedule that the proxy server is set to monitor / polle the content source.

상기의 기재가, 증가하는 응답 지연을 검출하는 경우, 응답이 수신되고, 특정 요청에 대해 타임 아웃되지 않는 한, 롱 폴이 헌팅 모드에 있는 동안 캐싱이 시작될 수 있음을 나타낸다. 이는 롱 폴 헌팅 동안 선택적 가속화된 캐싱(optional accelerated caching)이라고 일컬어질 수 있다. 또한 헌팅 모드가 완료된 후(가령, 폴 요청이 일정한 또는 거의 일정한 지연 값으로 정착된 후) 캐싱이 시작될 수 있다. 롱 폴 동안 헌팅이 발생하거나 발생하지 않을 수 있으며, 헌팅이 발생할 때, 프록시(275)는 헌팅을 검출하고 헌팅 주기(동일한 응답을 갖는 증가하는 간격) 동안 캐싱을 시작할지 여부를 결정하거나 헌팅이 안정적인 값으로 정착될 때까지 기다릴 수 있다.When the above description detects an increasing response delay, it indicates that caching may begin while the long pole is in hunting mode, unless a response is received and timed out for a particular request. This may be referred to as optional accelerated caching during long pole hunting. Caching may also begin after the hunting mode is complete (eg, after a poll request has settled to a constant or near constant delay value). Hunting may or may not occur during long poles, and when hunting occurs, the proxy 275 detects the hunting and decides whether to start caching during the hunting cycle (increasing intervals with the same response) or when hunting is stable. You can wait for the value to settle.

하나의 실시예에서, 캐시 적절성 판단 엔진(246)의 타이밍 예측기(246a)가, 애플리케이션(가령, 모바일 애플리케이션) 또는 클라이언트로부터의 아웃고잉 요청으로부터 수신된 응답의 타이밍을 추적함으로써, 로컬 캐싱된 응답이 콘텐츠 소스(가령, 애플리케이션 서버/콘텐츠 제공자(110 또는 310)) 거동을 시뮬레이트(simulate)하는 방식으로(예를 들어, (가령, 타이밍 관점에서) 응답이나 콘텐츠가 장치(250) 상의 요청하는 애플리케이션/클라이언트에게 전달될 방식으로) 모바일 장치(250) 상의 요청하는 클라이언트에게 제공될 수 있도록 부분적으로 또는 전체적으로 재현 가능한 임의의 식별 가능한 패턴을 검출할 수 있다. 이는, 애플리케이션 또는 모바일 클라이언트 요청에 대한 응답이, 콘텐츠 소스(가령, 애플리케이션, 콘텐츠 제공자(110 또는 310))로부터 직접 불러와 지거나 수신되는 대신, 로컬 및/또는 원격 캐시로부터 서비스될 때 사용자 경험(user experience)의 보존을 보장한다.In one embodiment, the timing predictor 246a of the cache adequacy determination engine 246 tracks the timing of the response received from an outgoing request from an application (eg, a mobile application) or a client such that the local cached response is In a manner that simulates the behavior of the content source (eg, application server / content provider 110 or 310) (eg, in response to (eg, in terms of timing)), the application / Any identifiable pattern that is partially or wholly reproducible may be detected so that it can be provided to the requesting client on mobile device 250 (in a manner to be delivered to the client). This means that when a response to an application or mobile client request is serviced from a local and / or remote cache, instead of being retrieved or received directly from a content source (eg, application, content provider 110 or 310), ensure the preservation of experience

하나의 실시예에서, 판단 엔진(246) 또는 타이밍 예측기(246a)가, 예를 들어, 요청/응답 추적 엔진(238b) 및/또는 애플리케이션 프로파일 생성기(239)(가령, 응답 지연 간격 추적기(239a))로부터 특정 애플리케이션(가령, 모바일 애플리케이션) 또는 클라이언트의 타이밍 특성을 결정한다. 타이밍 특성을 이용해, 타이밍 예측기(246a)가 요청에 응답하여 수신된 콘텐츠가 적합한지, 또는 캐싱되기 적합할 가능성이 있는지 여부를 결정한다. 예를 들어, 특정 애플리케이션으로부터의 2개의 연속하는 요청들 간의 폴 요청 간격이 사용되어, 요청 간격이 반복될 수 있는지(가령, 일정, 거의 일정, 패턴을 갖고 증가, 패턴을 갖고 감소, 등) 여부를 결정할 수 있고, 예측될 수 있으며, 따라서 정확히, 또는 허용오차 수준 내에서 대략적으로 시간들 중 적어도 일부에서 재현될 수 있다.In one embodiment, the decision engine 246 or the timing predictor 246a may, for example, request / response tracking engine 238b and / or application profile generator 239 (eg, response delay interval tracker 239a). ) Determine timing characteristics of a particular application (eg, mobile application) or client. Using the timing characteristic, the timing predictor 246a determines whether the received content is appropriate or likely to be cached in response to the request. For example, the poll request interval between two consecutive requests from a particular application may be used to determine whether the request interval can be repeated (eg, constant, nearly constant, increment with pattern, decrease with pattern, etc.). Can be determined and predicted, and can thus be reproduced at least some of the time exactly, or within tolerance levels.

일부 경우, 특정 애플리케이션에 대한, 하나의 애플리케이션의 복수의 요청에 대한, 또는 복수의 애플리케이션에 대한 특정 요청 유형의 타이밍 특성이 애플리케이션 프로파일 레포지토리(242)에 저장될 수 있다. 일반적으로, 애플리케이션 프로파일 레포지토리(242)는 타이밍 패턴, 타이밍 반복성, 콘텐츠 반복성 등을 포함하는 애플리케이션 요청/응답 특성과 관련된 임의의 유형의 정보 또는 메타데이터를 저장할 수 있다. In some cases, timing characteristics of a particular request type for a particular application, for a plurality of requests of one application, or for a plurality of applications may be stored in the application profile repository 242. In general, the application profile repository 242 can store any type of information or metadata related to application request / response characteristics, including timing patterns, timing repeatability, content repeatability, and the like.

또한 애플리케이션 프로파일 레포지토리(242)는, 특정 애플리케이션에 의해 사용되는 요청의 유형(가령, 롱 폴, 장기 유지(long-held) HTTP 요청, HTTP 스트리밍, 푸시, COMET 푸시 등)을 나타내는 메타데이터를 저장할 수 있다. 애플리케이션에 의한 요청 유형을 나타내는 애플리케이션 프로파일은, 후속하는 동일한/유사한 요청이 검출될 때, 또는 이미 카테고리화된 애플리케이션으로부터 요청이 검출될 때, 사용될 수 있다. 이러한 방식으로, 추적 및/또는 분석된 적 있는 특정 요청 유형에 대한, 또는 구체적 애플리케이션의 요청에 대한 타이밍 특성은 재분석될 필요가 없다. The application profile repository 242 may also store metadata indicating the type of request used by a particular application (eg, long poll, long-held HTTP request, HTTP streaming, push, COMET push, etc.). have. An application profile indicating the type of request by the application can be used when a subsequent same / similar request is detected, or when a request is detected from an already categorized application. In this way, the timing characteristics for a particular request type that has been tracked and / or analyzed, or for a specific application's request, need not be reanalyzed.

애플리케이션 프로파일은 수명시간(time-to-live)(가령, 디폴트 만료 시간)과 연계될 수 있다. 애플리케이션 프로파일, 또는 다양한 형태의 애플리케이션 또는 요청의 프로파일을 위해 만료 시간을 사용하는 것은 케이스별로 사용될 수 있다. 애플리케이션 프로파일 엔트리의 수명시간(time-to-live) 또는 실제 만료 시간이 디폴트 값으로 설정되거나, 개별적으로 결정되거나, 조합되어 설정될 수 있다. 또한 애플리케이션 프로파일은 무선 네트워크, 물리 네트워크, 네트워크 운영자, 또는 특정 통신업체 특정적일 수 있다. Application profiles may be associated with a time-to-live (eg, default expiration time). Using an expiration time for an application profile, or for various types of application or request profiles, can be used on a case-by-case basis. The time-to-live or actual expiration time of the application profile entry may be set to a default value, individually determined or in combination. The application profile may also be wireless network, physical network, network operator, or specific carrier specific.

하나의 실시예는 애플리케이션 블랙리스트 관리기(201)를 포함한다. 애플리케이션 블랙리스트 관리기(201)는 애플리케이션 캐시 정책 레포지토리(243)에 연결되고, 로컬 프록시 또는 캐싱 정책 관리기(245) 내부에 부분적으로 또는 전부 위치할 수 있다. 마찬가지로, 블랙리스트 관리기(201)는 로컬 프록시 또는 애플리케이션 거동 검출기(236) 내부에 부분적으로 또는 전부 위치할 수 있다. 블랙리스트 관리기(201)는 영구적 또는 일시적으로 '블랙리스트'에 올라갔으며, 캐싱되지 않음이라고 식별되는 서버/호스트의 도착지의 리스트를 집합화, 추적, 업데이트, 관리, 조절, 또는 동적으로 모니터할 수 있다. 도착지 블랙리스트는, 요청에서 식별될 때, 요청이 (셀룰러) 네트워크를 통해 서비스되기 위해 전송되게 하도록 사용될 수 있다. 요청이 블랙리스트 도착지로 전달된다고 검출되기 때문에 요청의 추가 프로세싱이 수행될 수 없다. One embodiment includes an application blacklist manager 201. The application blacklist manager 201 is connected to the application cache policy repository 243 and may be partially or fully located within the local proxy or caching policy manager 245. Similarly, blacklist manager 201 may be located partially or fully within local proxy or application behavior detector 236. The blacklist manager 201 has been 'blacklisted' permanently or temporarily, and can aggregate, track, update, manage, adjust, or dynamically monitor a list of destinations of servers / hosts that are identified as not cached. have. The destination blacklist may be used to, when identified in the request, cause the request to be sent for service over the (cellular) network. Further processing of the request cannot be performed because it is detected that the request is delivered to the blacklist destination.

특정 URL 또는 식별자 패턴(가령, URI 패턴) 등의 주소 식별자에 의해 블랙리스트 도착지가 애플리케이션 캐시 정책 레포지토리(243)에서 식별될 수 있다. 일반적으로, 임의의 이유로, 사용자(모바일 장치(250)의 소유자/사용자), 장치(250)의 운영 체제/모바일 플랫폼, 도착지 자체, (셀룰러 네트워크의) 네트워크 운영자, 인터넷 서비스 제공자, 기타 제3자를 포함한 임의의 측에 의해, 또는 캐싱될 수 없음/캐싱되기 부적합함이라고 알려진 애플리케이션용 도착지들의 리스트에 따라서, 블랙리스트 도착지가 설정되거나 수정될 수 있다. 블랙리스트 도착지 내 일부 항목은, 로컬 프록시(가령, 캐시 적절성 판단 엔진(246))에 의해 수행되는 분석 또는 프로세싱을 기초로 집합화된 도착지를 포함할 수 있다. The blacklist destination may be identified in the application cache policy repository 243 by an address identifier such as a particular URL or identifier pattern (eg, URI pattern). Generally, for any reason, the user (owner / user of mobile device 250), the operating system / mobile platform of device 250, the destination itself, a network operator (of a cellular network), an Internet service provider, other third party The blacklist destination may be set or modified by any side including it, or according to the list of destinations for the application known to be uncacheable / not cacheable. Some items in the blacklist destination may include destinations aggregated based on analysis or processing performed by a local proxy (eg, cache suitability determination engine 246).

예를 들어, 응답이 캐싱되기 부적합한 것으로 식별되는 모바일 장치상의 애플리케이션 또는 모바일 클라이언트가 블랙리스트에 추가될 수 있다. 그들의 대응하는 호스트/서버가 모바일 장치(250)상의 요청하는 애플리케이션/클라이언트의 식별자에 추가로, 또는 상기 식별자를 대신하여 추가될 수 있다. 프록시 시스템에 의해 식별되는 이러한 클라이언트의 일부 또는 전부가 블랙리스트에 추가될 수 있다. 예를 들어, 일시적으로, 캐싱되기 부적합한 것으로 식별되는 모든 애플리케이션 클라이언트 또는 애플리케이션에 대해, (타이밍, 주기성, 응답 콘텐츠 변화 빈도, 콘텐츠 예측성, 크기, 등을 기초로) 특정 검출 특성을 갖는 것만 블랙리스트에 올라갈 수 있다.For example, an application or mobile client on the mobile device that the response is identified as inappropriate to be cached may be added to the blacklist. Their corresponding host / server may be added in addition to, or in place of, the identifier of the requesting application / client on mobile device 250. Some or all of these clients identified by the proxy system may be added to the blacklist. For example, for all application clients or applications that are temporarily identified as unsuitable for caching, only those with specific detection characteristics (based on timing, periodicity, response content change frequency, content predictability, size, etc.) are blacklisted. Can go up.

블랙리스트의 항목은 (도착지보다는) 모바일 장치상의 요청하는 애플리케이션 또는 요청하는 클라이언트의 리스트를 포함할 수 있어서, 특정 애플리케이션 또는 특정 클라이언트로부터 요청이 검출될 때, 응답을 위해, 네트워크를 통해 전송될 수 있는데, 이는 블랙리스트의 클라이언트/애플리케이션이 대부분의 상황에서 캐싱되지 않기 때문이다. The item of the blacklist may include a list of requesting applications or requesting clients on the mobile device (rather than destination) so that when a request is detected from a particular application or a specific client, it may be sent over the network for a response. This is because blacklisted clients / applications are not cached in most situations.

애플리케이션이 액세스되는 모바일 장치와 연계된 모바일 계정에 따라, 특정 애플리케이션 프로파일이 상이하게(가령, 로컬 프록시(275) 및 원격 프록시(325)의 상이한 거동) 취급되거나 처리될 수 있다. 예를 들어, 더 많이 지불하는 계정, 즉 프리미어 계정은 무선 네트워크의 더 빈번한 액세스, 또는 더 높은 대역폭 허용을 가능하게 할 수 있고, 따라서 자원의 보존에 비교되는 더 우수한 성능을 강조하면서, 로컬 프록시(275)와 프록시 서버(325) 사이에 구현되는 캐싱 정책에 영향을 미칠 수 있다. 특정 애플리케이션 프로파일은 서로 다른 무선 네트워크 상태 하에서(가령, 혼잡이나 네트워크 작동불능(network outage) 등을 기초로) 상이하게 취급되거나 처리될 수 있다.Depending on the mobile account associated with the mobile device to which the application is accessed, certain application profiles may be handled or processed differently (eg, different behavior of local proxy 275 and remote proxy 325). For example, a more paying account, i.e., a Premier account, may allow for more frequent access, or higher bandwidth allowance, of a wireless network, thus emphasizing better performance compared to the conservation of resources, while providing a local proxy ( Caching policy implemented between 275 and proxy server 325. Specific application profiles may be handled or handled differently under different wireless network conditions (eg, based on congestion or network outage, etc.).

모바일 장치(250) 상의 복수의 클라이언트 또는 애플리케이션에 대해 캐시 적절성이 결정, 추적, 및 관리될 수 있다. 모바일 장치(250) 상의 특정 클라이언트 또는 애플리케이션에 의해 개시되는 여러 다른 요청, 또는 요청 유형에 대해, 캐시 적절성이 또한 결정될 수 있다. 캐싱 정책 관리기(245)는, 예측가능함, 또는 예측가능할 가능성이 있음을 경험적으로(heuristically) 결정하거나 추정하는 타이밍 예측기(246a) 및/또는 콘텐츠 예측기(246b)와 함께, 다양한 애플리케이션, 또는 특정 애플리케이션에 대한 다양한 요청에 대한 캐싱 가능함 정보를 추적, 관리, 및 저장할 수 있다. 캐싱 가능함 정보는 또한 조건(가령, 애플리케이션이 특정 시각에서, 또는 특정 요일에 캐싱될 수 있거나, 특정 애플리케이션의 특정 요청이 캐싱될 수 있거나, 특정 도착지 주소를 갖는 모든 요청이 캐싱될 수 있다)을 포함할 수 있으며, 상기 조건 하에서, 캐싱이 적절하고, 상기 조건은, 캐시 적절성 판단 엔진(246)에 의해 결정 및/또는 추적될 수 있고, 캐시 적절성 판단 엔진(246)에 연결되는 애플리케이션 캐시 정책 레포지토리(243)에 적절하게 저장 및/또는 업데이트될 수 있다. Cache adequacy may be determined, tracked, and managed for a plurality of clients or applications on mobile device 250. For various other requests, or types of requests initiated by a particular client or application on mobile device 250, cache suitability may also be determined. The caching policy manager 245, in conjunction with the timing predictor 246a and / or the content predictor 246b, empirically determines or estimates that it is predictable, or likely to be predictable, for various applications or specific applications. Can track, manage, and store cacheable information on various requests for The cacheable information also includes a condition (eg, the application may be cached at a specific time of day or at a specific day of the week, a specific request of a specific application may be cached, or all requests with a specific destination address may be cached). And, under the above conditions, caching is appropriate, and the conditions may be determined and / or tracked by the cache adequacy determination engine 246 and connected to the cache adequacy determination engine 246 ( 243) may be stored and / or updated as appropriate.

요청, 애플리케이션, 및/또는 연계된 조건의 캐싱 가능함과 관련된, 애플리케이션 캐시 정책 레포지토리(243)의 정보는, 추후 동일한 요청이 검출될 때 사용될 수 있다. 이러한 방식으로, 판단 엔진(246) 및/또는 타이밍 및 콘텐츠 예측기(246a/b)는, 캐싱 가능함에 대해 평가하기 위해, 요청/응답 타이밍 및 콘텐츠 특성을 추적하고 재분석할 필요가 없다. 덧붙이자면, 일부 경우, 캐싱 가능함 정보는, 직접 통신을 통해, 또는 호스트 서버(가령, 호스트 서버(300)의 프록시 서버(325))를 통해, 또 다른 모바일 장치의 로컬 프록시와 공유될 수 있다. Information in the application cache policy repository 243, related to the caching of requests, applications, and / or associated conditions, may be used later when the same request is detected. In this manner, decision engine 246 and / or timing and content predictor 246a / b do not need to track and reanalyze request / response timing and content characteristics in order to evaluate for caching. In addition, in some cases, cacheable information may be shared with a local proxy of another mobile device, either through direct communication or through a host server (eg, proxy server 325 of host server 300).

예를 들어, 다양한 모바일 장치상의 로컬 프록시(275)에 의해 검출된 캐싱 가능함 정보가 호스트 서버 상의 원격 호스트 서버 또는 프록시 서버(325)(가령, 도 3A의 예시의 경우, 호스트 서버(300) 또는 프록시 서버(325), 또는 도 1B-C의 예시의 경우 프록시 서버(125))로 전송될 수 있다. 그 후, 원격 호스트 또는 프록시 서버가 애플리케이션 특정적, 요청 특정적 캐싱 가능함 정보, 및/또는 임의의 연계된 조건에 대한 정보를, 사용되기 위해, 하나의 무선 네트워크 내에 있거나, 복수의 무선 네트워크들에 걸쳐 있는(동일한 서비스 제공자이거나 복수의 무선 서비스 제공자) 다양한 모바일 장치 또는 그들의 로컬 프록시에게 분산시킬 수 있다. 일반적으로, 캐싱을 위한 선택 기준은, 예를 들어, 모바일 장치가 활성 상태인지 비활성상태인지 여부를 나타내는 모바일 장치의 상태, 네트워크 조건, 및/또는 라디오 커버리지 통계치(radio coverage statistic)를 더 포함할 수 있다. 캐시 적절성 판단 엔진(246)은, 기준들 중 임의의 하나 이상으로, 임의의 순서로, 캐싱이 적합할 수 있는 소스를 식별할 수 있다. For example, the cacheable information detected by the local proxy 275 on the various mobile devices may be remote host server or proxy server 325 on the host server (eg, host server 300 or proxy in the example of FIG. 3A). Server 325 or proxy server 125 in the example of FIGS. 1B-C. Thereafter, the remote host or proxy server may use application-specific, request-specific caching-capable information, and / or information about any associated condition, in one wireless network, or in a plurality of wireless networks, to be used. It may be distributed to various mobile devices or their local proxies that span (either the same service provider or multiple wireless service providers). In general, the selection criteria for caching may further include, for example, the mobile device's status, network conditions, and / or radio coverage statistic indicating whether the mobile device is active or inactive. have. The cache adequacy determination engine 246 may identify, in any order, a source from which caching may be suitable, in any one or more of the criteria.

애플리케이션 서버/콘텐츠 제공자가 모바일 장치(250) 상에 로컬 캐싱되기 적합할 가능성이 있다고 식별된 또는 검출된 콘텐츠를 가진다면, 캐시 정책 관리기(245)는, 콘텐츠 소스로부터 수신된 콘텐츠를 모바일 장치(250) 상의 로컬 캐시(가령, 도 1C와 도 2A의 예시의 경우, 로컬 캐시(185 또는 285))의 캐시 요소로서 저장함으로써 식별된 소스로부터 수신된 연계된 콘텐츠를 계속 캐싱할 수 있다.If the application server / content provider has identified or detected content that is likely to be suitable for local caching on mobile device 250, cache policy manager 245 may retrieve the content received from the content source from mobile device 250. The associated content received from the identified source can still be cached by storing as a cache element of a local cache (eg, local cache 185 or 285 in the example of FIGS. 1C and 2A).

응답이 캐시 엔트리로서 캐시(285)(가령, 또한 로컬 캐시라고도 지칭됨)에 저장될 수 있다. 요청에 대한 응답에 덧붙여, 캐싱된 엔트리가 응답의 캐싱과 관련된 추가 정보를 갖는 응답 메타데이터를 포함할 수 있다. 메타데이터는 메타데이터 생성기(203)에 의해 생성될 수 있고, 예를 들어, 타이밍 데이터(가령, 캐시 엔트리의 액세스 시간, 또는 캐시 엔트리의 생성 시간(creation time))를 포함할 수 있다. 메타데이터는 추가 정보, 가령, 캐싱된 엔트리로서 저장되는 응답이 다음 번 응답을 만족시키기 위해 사용되는지 여부를 결정하는 데 사용되기 적합한 임의의 정보를 포함할 수 있다. 예를 들어, 메타데이터 정보는, 요청 타이밍 히스토리(가령, 요청 시간, 요청 시작 시점, 요청 종료 시점을 포함하는 요청 타이밍 히스토리), 요청 및/또는 응답의 해시(hash), 시간격, 또는 시간격의 변화 등을 더 포함할 수 있다. The response may be stored in cache 285 (eg, also referred to as a local cache) as a cache entry. In addition to the response to the request, the cached entry may include response metadata with additional information related to the caching of the response. The metadata may be generated by the metadata generator 203 and may include, for example, timing data (eg, access time of a cache entry, or creation time of a cache entry). The metadata may include additional information, such as any information suitable for use in determining whether a response stored as a cached entry is used to satisfy the next response. For example, metadata information may include request timing history (eg, request timing history including request time, request start time, request end time), hash, time interval, or time interval of the request and / or response. It may further include a change.

캐시 엔트리는, 예를 들어, 캐시 무효화기(244)의 TTL 관리기(244a)에 의해 할당되거나 결정될 수 있는 수명시간(TTL: time-to-live)과 연계되어 캐시(285)에 저장되는 것이 일반적이다. 응답이 여전히 유효한지 또는 모바일 장치(250) 상의 특정 요청 또는 클라이언트/애플리케이션에 대해 관련이 있는지 여부에 무관하게, 캐시 엔트리의 수명시간은 엔트리가 캐시(285) 내에서 영속하는 시간이다. 예를 들어, 특정 캐시 엔트리의 수명시간이 12시간으로 설정되는 경우, 캐시 엔트리 내에 포함된 응답 본체가 여전히 유효하고, 관련 요청에 대해 적용 가능할지라도, 캐시 엔트리는 삭제 또는 제거되거나, 그 밖의 다른 방식으로 초과된 수명시간을 갖고 있음이 지시된다. Cache entries are typically stored in cache 285 in association with a time-to-live (TTL), which may be allocated or determined, for example, by TTL manager 244a of cache invalidator 244. to be. Regardless of whether the response is still valid or relevant for a particular request or client / application on mobile device 250, the lifetime of the cache entry is the time that the entry lasts within cache 285. For example, if the lifetime of a particular cache entry is set to 12 hours, the cache entry is deleted or removed, or otherwise, even if the response body contained within the cache entry is still valid and applicable to the associated request. It is indicated that it has an exceeded life time.

(가령, TTL 관리기(244a)에 의해) 다르게 특정되지 않는 한, 모든 엔트리에 대해 자동으로 디폴트 수명시간이 사용되거나, 개별 TTL(가령, 다양한 동적 또는 정적 기준을 기초로 하여 TTL 관리기(244a)에 의해 결정된 TTL)을 이용해 각각의 캐시 엔트리가 생성될 수 있다. 각각의 엔트리는 응답 데이터 및 임의의 연계된 메타데이터 모두와 연계된 단일 수명시간을 가질 수 있다. 일부 경우, 연계된 메타데이터는 응답 데이터와 상이한 수명시간(가령, 더 긴 수명시간)을 가질 수 있다.Unless otherwise specified (eg, by the TTL manager 244a), default lifetimes are automatically used for all entries, or the TTL manager 244a is based on individual TTL (eg, various dynamic or static criteria). Each cache entry can be generated using the determined TTL). Each entry may have a single lifetime associated with both response data and any associated metadata. In some cases, the associated metadata may have a different lifetime (eg, longer lifetime) than the response data.

이에 추가로, 또는 이를 대신하여, 모바일 장치(250)의 원격에 위치하며 상기 모바일 장치(250)와 무선 통신하는 프록시 서버(가령, 도 1B 및 도 3A의 예시의 경우 프록시 서버(125 또는 325))에게 캐싱될 콘텐츠를 갖는 콘텐츠 소스를 알려서, 새로운 또는 변경된 데이터에 대해 프록시 서버가 콘텐츠 소스(가령, 애플리케이션 서버/콘텐츠 제공자(110))를 모니터할 수 있다. 마찬가지로, 로컬 프록시(가령, 도 1B 및 도 2A의 로컬 프록시(175 또는 275))가 프록시 서버에게, 특정 애플리케이션 서버/콘텐츠 제공자로부터 수신된 콘텐츠가 로컬 캐시(285) 내 캐싱되는 요소로서 저장되어 있다고 알릴 수 있다. In addition or in lieu thereof, a proxy server located remotely of the mobile device 250 and in wireless communication with the mobile device 250 (eg, proxy server 125 or 325 in the example of FIGS. 1B and 3A). ) Can be informed of the content source with the content to be cached so that the proxy server can monitor the content source (eg, application server / content provider 110) for new or changed data. Similarly, a local proxy (eg, local proxy 175 or 275 in FIGS. 1B and 2A) is stored to the proxy server as content received from a particular application server / content provider as an element cached in local cache 285. You can inform.

콘텐츠가 로컬하게 캐싱되어 있는 경우, 폴링 요청을 서비스하기 위해 모바일 장치의 라디오가 활성화되지 않도록, 캐시 정책 관리기(245)가 애플리케이션 서버/콘텐츠 호스트(가령, 110 또는 310)를 접촉하기 위한 미래의 폴링 요청을 수신하면, 로컬 캐시로부터 캐싱된 요소를 불러와서, 모바일 장치(250)에서 만들어진 폴링 요청에 응답할 수 있다. 예를 들어, 서비스될 응답이 응답인지 확인하기 위해 캐시 룩-업 엔진(205)이 캐시(285)에게 질의할 수 있다. 일치하는(matching) 캐시 엔트리를 식별하는 것과 또한 캐시 엔트리에 응답과 함께 저장된 임의의 메타데이터를 이용하는 것에 응답하여 응답이 캐시로부터 서비스될 수 있다. 요청의 URI 또는 또 다른 유형의 식별자를 이용해(가령, ID 또는 URI 필터(205a)를 통해) 캐시 룩-업 엔진에 의해 캐시 엔트리가 질의될 수 있다. 캐시 룩-업 엔진(205)은, 현재 요청에 대해 서비스될 때 응답이 사용되기에 여전히 적합한지 여부를 결정하기 위해, 일치되는 캐시 엔트리와 함께 저장된 메타데이터를 더 사용할 수 있다(가령, 임의의 타이밍 정보 또는 그 밖의 다른 관련 정보를 추출할 수 있다). If the content is cached locally, future polling for the cache policy manager 245 to contact the application server / content host (eg 110 or 310) so that the radio of the mobile device is not activated to service the polling request. Upon receiving the request, the cached element may be retrieved from the local cache and responded to the polling request made at the mobile device 250. For example, cache look-up engine 205 may query cache 285 to ascertain whether the response to be serviced is a response. The response may be serviced from the cache in response to identifying a matching cache entry and also using any metadata stored with the response in the cache entry. Cache entries may be queried by the cache look-up engine using the URI of the request or another type of identifier (eg, via ID or URI filter 205a). The cache look-up engine 205 may further use the metadata stored with the matching cache entry (eg, any) to determine whether the response is still suitable for use when served for the current request. Timing information or other related information).

다양한 복수의 전략들 중 하나 이상을 이용해 엔진(205)에 의한 캐시 룩-업이 수행될 수 있다. 하나의 실시예에서, 적어도 하나의 룩-업 전략이 일치되는 캐시 엔트리를 식별할 때까지, 캐시(285)에 저장된 각각의 엔트리에 대해 복수의 룩-업 전략이 순차적으로 수행될 수 있다. 캐시 룩-업을 수행하기 위해 사용되는 전략은, 엄격한 일치 기준, 또는 비-일치 파라미터를 허용하는 일치 기준을 포함할 수 있다. Cache look-up by engine 205 may be performed using one or more of a variety of strategies. In one embodiment, a plurality of look-up strategies may be performed sequentially for each entry stored in cache 285 until at least one look-up strategy identifies a matching cache entry. The strategy used to perform the cache look-up may include strict match criteria, or match criteria to allow non-match parameters.

예를 들어, 룩-업 엔진(205)은, 프록시가 캐시 엔트리를 식별하려 시도하는 중인 현재 요청에서 참조되는 식별자(가령, 호스트 또는 자원에 대한 URI)와 캐시 엔트리와, 함께 저장된 식별자가 정확히 일치함을 찾는 엄격한 일치 전략을 수행할 수 있다. 식별자가 URI 또는 URL을 포함하는 경우, 엄격한 일치를 위한 일치 알고리즘이 URL 내 모든 파라미터와 일치하는 캐시 엔트리를 찾을 것이다. 예를 들면:For example, look-up engine 205 may match an identifier stored in the current request with which the proxy is attempting to identify the cache entry (eg, a URI for a host or a resource) and the cache entry with the identifier stored together. A strict consensus strategy can be followed. If the identifier includes a URI or a URL, the matching algorithm for strict matching will find a cache entry that matches all parameters in the URL. For example:

예시 1.Example 1.

1. 캐시가 http://test.com/products/에 대한 엔트리를 포함한다.1. The cache contains an entry for http://test.com/products/.

2. 요청이 URI http://test.com/products/로 이뤄지는 중이다. 2. The request is being made to the URI http://test.com/products/.

두 URI가 모두 동일하기 때문에, 엄격한 전략이 일치함을 찾을 것이다. Since both URIs are identical, you will find that the strict strategy matches.

예시 2.Example 2.

1. 캐시가 http://test.com/products/?query=all에 대한 엔트리를 포함한다. The cache contains an entry for http://test.com/products/?query=all.

2. 요청이 URI http://test.com/products/?query=sub로 이뤄지는 중이다. 2. The request is being made with the URI http://test.com/products/?query=sub.

앞서 요약된 엄격한 전략 하에서, 질의 파라미터에서 URI가 상이하기 때문에, 일치함은 발견되지 않을 것이다. Under the strict strategy summarized above, no match will be found because the URIs in the query parameters are different.

또 다른 예시적 전략에서, 룩-업 엔진(205)은, 프록시가 일치 캐시 엔트리를 식별하려 시도하는 현재 요청 내 식별자 참조와 부분적으로 일치되는 식별자를 이용해 캐시 엔트리를 찾는다. 예를 들어, 룩-업 엔진(205)은 요청 식별자와 질의 파라미터 값이 상이한 식별자를 이용해 캐시 엔트리를 찾을 수 있다. 이러한 전략을 이용할 때, 룩-업 엔진(205)은 복수의 이전 요청에 대해 수집된 정보(가령, 식별자 내 임의의 파라미터들의 리스트)를 수집하여, 현재 요청의 검출된 임의의 파라미터를 이용해, 추후 체크되도록 할 수 있다. 예를 들어, URI 또는 URL 식별자와 함께 캐시 엔트리가 저장되는 경우, 룩-업 엔진이, 질의 파라미터가 상이한 URI를 이용해 캐시 엔트리를 검색한다. 발견된 경우, 엔진(205)은 이전 요청 동안 수집되거나, 현재 URI/URL에서 검출되거나 상기 현재 URI/URL로부터 추출된 임의의 파라미터가 임의의 파라미터 리스트에 속하는지 여부가 체크된 정보(가령, 임의의 파라미터의 리스트)를 찾기 위해 캐시 엔트리를 검사할 수 있다. In another example strategy, look-up engine 205 looks for a cache entry using an identifier that partially matches an identifier reference in the current request that the proxy is attempting to identify a matching cache entry. For example, the look-up engine 205 may find a cache entry using an identifier that has a different request identifier and query parameter value. When using this strategy, the look-up engine 205 collects the collected information for a plurality of previous requests (eg, a list of any parameters in the identifier), using any detected parameters of the current request, later Can be checked. For example, if a cache entry is stored with a URI or URL identifier, the look-up engine retrieves the cache entry using a URI with different query parameters. If found, the engine 205 checks whether the information collected during the previous request, detected in the current URI / URL or extracted from the current URI / URL belongs to an arbitrary parameter list (eg, any The cache entry can be examined to find a list of parameters.

예시 1.Example 1.

1. 캐시가 http://test.com/products/?query=all에 대한 엔트리를 포함하며, 여기서 질의는 임의(arbitrary)라고 표시된다. 1. The cache contains an entry for http://test.com/products/?query=all, where the query is marked arbitrary.

2. URI http://text.com/products/?query=sub로 요청이 이뤄지는 중이다. 2. A request is being made with the URI http://text.com/products/?query=sub.

질의 파라미터가 임의라고 표시되어 있기 때문에 일치함이 발견될 것이다.Since the query parameters are marked as random, they will be found to match.

예시 2.Example 2.

1. 캐시가 http://test.com/products/?query=all에 대한 엔트리를 포함하며, 질의가 임의라고 표시된다. 1. The cache contains an entry for http://test.com/products/?query=all, and the query is marked as random.

2. URI http://test.com/products/?query=sub&sort=asc로 요청이 이뤄지는 중이다. 2. A request is being made with the URI http://test.com/products/?query=sub&sort=asc.

현재 요청이 캐시 엔트리에서 임의라고 표시되지 않은 파라미터를 포함하기 때문에, 일치함이 발견되지 않을 것이다.Since the current request includes a parameter that is not marked random in the cache entry, no match will be found.

캐시 히트(cache hit)를 검출하기 위한 추가 전략이 채용될 수 있다. 이들 전략은 단독으로, 또는 임의의 조합으로, 구현될 수 있다. 이들 전략 중 임의의 하나가, 일치함을 결정할 때 캐시 히트가 결정될 수 있다. 어떠한 이유로든 요청된 데이터가 캐시(285)로부터 서비스될 수 없다고 룩-업 엔진(205)이 결정할 때 캐시 미스(cache miss)가 지시될 수 있다. 예를 들어, 임의의 또는 모든 이용되는 룩-업 전략에 대해 어떠한 캐시 엔트리도 식별되지 않을 때 캐시 미스가 결정될 수 있다.Additional strategies for detecting cache hits may be employed. These strategies may be implemented alone or in any combination. A cache hit can be determined when any one of these strategies determines a match. A cache miss may be indicated when the look-up engine 205 determines that the requested data cannot be served from the cache 285 for any reason. For example, a cache miss can be determined when no cache entry is identified for any or all of the used look-up strategies.

일치하는 캐시 엔트리가 존재하지만 현재 요청에 대해 무효하다고 또는 관련 없다고 결정될 때도 역시 캐시 미스가 결정될 수 있다. 예를 들어, 룩-업 엔진(205)은, 일치하는 캐시 엔트리와 연계된 메타데이터(가령, 캐시 엔트리의 타이밍 데이터를 포함할 수 있는 메타데이터)를 더 분석하여, 현재의 요청에 응답할 때 사용되기에 여전히 적합한지 여부를 결정할 수 있다. A cache miss can also be determined when a matching cache entry exists but is determined to be invalid or unrelated to the current request. For example, look-up engine 205 further analyzes the metadata associated with the matching cache entry (eg, metadata that may include timing data of the cache entry) to respond to the current request. It can be determined whether it is still suitable for use.

룩-업 엔진(205)이 캐시 히트(가령, 요청된 데이터가 캐시로부터 서비스될 수 있다고 가리키는 이벤트)를 식별할 때, 일치 캐시 엔트리에 저장된 응답이 캐시로부터 서비스되어, 애플리케이션/클라이언트의 요청을 만족시킬 수 있다. When the look-up engine 205 identifies a cache hit (e.g., an event indicating that the requested data can be served from the cache), the response stored in the match cache entry is served from the cache to satisfy the application / client's request. You can.

캐시(285)에 저장된 캐시 엔트리를 이용해 요청을 서비스함으로써, 네트워크 대역폭 및 그 밖의 다른 자원이, 모바일 장치(250)에서 이미 수신된 적이 있는 응답에서 변경되지 않았을 수 있는 폴 응답을 요청/수신하도록 사용될 필요가 없다. 이러한 서비스 및 이행 애플리케이션(가령, 모바일 애플리케이션)의 요청을 로컬 캐시(285) 내 캐시 엔트리를 통해 서비스하고 이행함으로써, 요청이, 대역폭을 추가로 소모하는 무선 네트워크를 통해 전송될 필요가 없기 때문에, 더 효율적인 자원 및 모바일 네트워크 트래픽 활용 및 관리가 가능해진다. 일반적으로, 캐시(285)는 모바일 장치(250)의 전원 켜기와 끄기 사이에서 지속될 수 있고, 애플리케이션/클라이언트 리프레시와 재시작 사이에서도 지속될 수 있다. By servicing requests using cache entries stored in cache 285, network bandwidth and other resources can be used to request / receive poll responses that may not have changed from responses that have already been received at mobile device 250. no need. By servicing and fulfilling requests from such service and fulfillment applications (eg, mobile applications) via cache entries in local cache 285, the requests do not need to be transmitted over the wireless network, which consumes additional bandwidth. Enable efficient resource and mobile network traffic utilization and management. In general, cache 285 may persist between powering on and off of mobile device 250 and may also persist between application / client refresh and restart.

예를 들어, 로컬 프록시(275)는, 모바일 장치(250) 상의 자신의 모바일 장치(250) 또는 애플리케이션 또는 그 밖의 다른 유형의 클라이언트로부터의 아웃고잉 요청을 수신하면, 요청을 인터셉트하고, 모바일 장치(250)의 로컬 캐시(285)에 캐싱된 응답이 이용가능한지 여부를 결정한다. 로컬 캐시(285)에 캐싱된 응답이 이용가능한 경우, 아웃고잉 요청에, 모바일 장치의 캐시 상의 캐싱된 응답을 이용해 로컬 프록시(275)가 응답한다. 따라서 무선 네트워크를 통해 아웃고잉 요청을 전송할 필요 없이, 아웃고잉 요청이 충족될 수 있으며, 따라서, 네트워크 자원 및 배터리 소모량이 보존된다. For example, when the local proxy 275 receives an outgoing request from its mobile device 250 or application or other type of client on the mobile device 250, it intercepts the request and sends the mobile device ( It is determined whether the response cached in local cache 285 of 250 is available. If a response cached in the local cache 285 is available, the local proxy 275 responds to the outgoing request using the cached response on the cache of the mobile device. Thus, the outgoing request can be satisfied without the need to send outgoing requests over the wireless network, thus conserving network resources and battery consumption.

하나의 실시예에서, 콘텐츠 서버가 지속형 연결(persistent connection)을 통해(가령, 로컬 프록시에 의한 인터셉트 없이 확립됐을 지속형 연결, 또는 장기 유지(long-held) HTTP 연결, 또는 롱 폴 유형 연결을 통해) 아웃고잉 요청에 응답했을 방식에 대응하도록, 장치(250) 상의 요청하는 애플리케이션/클라이언트에 응답하는 것의 타이밍이 정해진다. 의도된 콘텐츠 소스(가령, 도 1B-C의 콘텐츠 호스트/애플리케이션 서버(110))로부터 수신된 프레시 콘텐츠가 아닌 로컬 캐시(285)로부터 저장된 콘텐츠를 서비스함으로써 최종 사용자 경험이 반영되지 않거나, 최소한만 반영되도록 애플리케이션 거동을 보존하기 위해, 로컬 프록시(275)에 의해 응답의 타이밍이 에뮬레이트되거나 시뮬레이트될 수 있다. 타이밍은, 정확하게 복제되거나, 사용자가 알아차리지 않을 수 있거나 동작 문제를 일으키지 않도록 애플리케이션에 의해 유사하게 처리될 수 허용오차 파라미터 내로 추정될 수 있다. In one embodiment, the content server may establish a persistent connection over a persistent connection (eg, a persistent connection that would have been established without interception by a local proxy, or a long-held HTTP connection, or a long pole type connection). Timing the response to the requesting application / client on the device 250 to correspond to the manner in which it would have responded to the outgoing request. By serving content stored from local cache 285 rather than fresh content received from the intended content source (e.g., content host / application server 110 of Figures 1B-C), the end user experience is not reflected or minimally reflected. In order to preserve application behavior as much as possible, the timing of the response may be emulated or simulated by the local proxy 275. The timing can be estimated within tolerance parameters that can be replicated correctly, or similarly handled by the application so that the user may not notice or cause operational problems.

예를 들어, 아웃고잉 요청은, 콘텐츠 서버(가령, 도 1B-1C의 예의 경우, 애플리케이션 서버/콘텐츠 제공자)에 대해 의도된 지속형 연결에 대한 요청일 수 있다. 콘텐츠 소스(서버)와의 지속형 연결(가령, 롱 폴, COMET-스타일 푸시, 또는 비동기식 HTTP 요청에서의 그 밖의 다른 임의의 푸시 시뮬레이션, 장기 유지 HTTP 요청, HTTP 스트리밍, 등)에서, 요청이 전송된 후 연결이 임의의 시간 동안 유지된다. 모바일 장치와 서버 간의 연결은, 콘텐츠가 모바일 장치로 전송되기 위해 서버에서 이용가능할 때까지, 지속될 수 있는 것이 일반적이다. 따라서 일반적으로, 롱 폴 요청이 전송되는 시점과 콘텐츠 소스로부터 요청이 수신되는 시점 사이에 약간의 시간 지연이 있을 수 있다. 콘텐츠 소스에 의해 특정 시간 동안 응답이 제공되지 않는 경우, 응답이 전송되지 않은 경우 네트워크 이유로(가령, 소켓 폐쇄(socket closure)로) 연결이 종료될 수 있다. For example, the outgoing request may be a request for a persistent connection intended for a content server (eg, an application server / content provider in the example of FIGS. 1B-1C). In a persistent connection with a content source (server) (e.g., long pole, COMET-style push, or any other push simulation in an asynchronous HTTP request, long-lived HTTP request, HTTP streaming, etc.) The connection is then maintained for any time. The connection between the mobile device and the server typically can last until the content is available at the server for delivery to the mobile device. Thus, in general, there may be a slight time delay between when a long poll request is sent and when a request is received from a content source. If no response is provided by the content source for a particular time, the connection may be terminated for network reasons (eg, with socket closure) if no response is sent.

따라서 콘텐츠 서버로부터 지속형 연결(가령, 롱 폴 스타일 연결)을 통해 전송되는 응답을 에뮬레이트하기 위해, 아웃고잉 요청에 캐싱된 응답으로 응답하기 전에 시간격이 경과되게 함으로써, 콘텐츠 서버의 응답의 방식이 시뮬레이트될 수 있다. 예를 들어, 요청별로, 또는 애플리케이션별로(클라이언트별로) 시간격의 길이가 결정될 수 있다.Thus, in order to emulate a response sent over a persistent connection (e.g., a long pole style connection) from a content server, the response of the content server must be timed out before responding with a cached response to the outgoing request. Can be simulated. For example, the length of time interval may be determined per request or per application (per client).

하나의 실시예에서, 아웃고잉 요청이 발원되는 모바일 장치상의 애플리케이션의 요청 특성(가령, 타이밍 특성)을 기초로, 시간격이 결정된다. 예를 들어, 로컬 캐시 엔트리로 요청에 응답하기 전에 기다리기 위한 시간격을 결정하기 위해 폴 요청 간격이 사용되고, 응답 스케줄러(249a)에 의해 관리될 수 있다.In one embodiment, the time interval is determined based on the request characteristics (eg, timing characteristics) of the application on the mobile device from which the outgoing request originated. For example, the poll request interval can be used to determine the time interval to wait before responding to a request with a local cache entry and can be managed by the response scheduler 249a.

캐시 정책 관리기(245)의 한 가지 실시예는 폴 스케줄 생성기(247)를 포함하고, 폴 스케줄 생성기(247)는 모바일 장치(250) 상의 하나 이상의 애플리케이션에 대해 폴링 스케줄을 생성할 수 있다. 폴링 스케줄은, 모바일 장치를 대신하여 (요청이 전달되는 호스트 서버(호스트 서버(110 또는 310))로 폴링함으로써, 캐싱된 응답이 주기적으로 검증될 수 있도록) 하나 이상의 애플리케이션에 대해 콘텐츠 소스를 모니터링할 때 모바일 장치(250)와 물리적으로 구별 및/또는 구분되는 개체에 의해 사용될 수 있는 폴링 간격을 특정할 수 있다. 모바일 장치(250)를 위해 소스에서 콘텐츠를 모니터링할 수 있는 이러한 외부 개체의 한 가지 예로는 프록시 서버(가령, 도 1B 및 도 3A-C의 예에서 도시되는 프록시 서버(125 또는 325))가 있다. One embodiment of cache policy manager 245 includes a poll schedule generator 247, which can generate a polling schedule for one or more applications on mobile device 250. Polling schedules can monitor content sources for one or more applications (such that polled responses can be periodically verified by polling the host server (host server 110 or 310) from which the request is forwarded) on behalf of the mobile device. When a polling interval may be specified that may be used by an entity that is physically and / or distinct from the mobile device 250. One example of such an external entity that can monitor content at the source for mobile device 250 is a proxy server (eg, proxy server 125 or 325 shown in the examples of FIGS. 1B and 3A-C). .

예를 들어, 모바일 장치로부터 콘텐츠 소스로 전달되는 폴링 요청들 간 간격을 기초로 하여, 폴링 스케줄(가령, 폴링 속도/빈도(rate/frequency))이 결정될 수 있다. 모바일 장치(250)에서 (로컬 프록시에 의해) 폴링 스케줄 또는 폴링 속도가 결정될 수 있다. 하나의 실시예에서, 애플리케이션 거동 검출기(236)의 폴 간격 검출기(238)가 모바일 장치(250)로부터 콘텐츠 소스로 전달되는 폴링 요청을 모니터링하여, 임의의 또는 모든 애플리케이션(가령, 모바일 애플리케이션)으로부터 이뤄진 폴링 요청들 간 간격을 결정할 수 있다.For example, based on the interval between polling requests delivered from the mobile device to the content source, a polling schedule (eg, polling rate / frequency) can be determined. The polling schedule or polling rate may be determined (by the local proxy) at the mobile device 250. In one embodiment, the poll interval detector 238 of the application behavior detector 236 monitors the polling request passed from the mobile device 250 to the content source, so that any or all applications (eg, mobile applications) are made. The interval between poll requests can be determined.

예를 들어, 폴 간격 검출기(238)는 장치(250) 상의 애플리케이션 또는 클라이언트에 대해 요청과 응답을 추적할 수 있다. 하나의 실시예에서, 동일한 모바일 클라이언트 또는 애플리케이션(가령, 모바일 애플리케이션)에 의해 모바일 장치(250) 상의 애플리케이션(가령, 모바일 애플리케이션)으로부터 개시된 아웃고잉 요청의 검출 전에, 연속하는 요청들이 추적된다. 응답이 캐싱되는 요청에 대해 수집된 요청 정보를 이용해, 폴링 속도(polling rate)가 결정될 수 있다. 하나의 실시예에서, 요청을 생성한 동일한 클라이언트에 의해 생성되는 이전 요청들 사이의 시간격들의 평균으로부터 폴링 속도가 결정된다. 예를 들어, 현재 요청과 이전 요청 사이에서 제 1 간격이 계산될 수 있고, 2개의 이전 요청들 사이에서 제 2 간격이 계산될 수 있다. 제 1 간격과 제 2 간격의 평균으로부터 폴링 속도(polling rate)가 설정될 수 있고, 캐싱 전략을 설정할 때 프록시 서버로 전송될 수 있다.For example, the poll interval detector 238 can track the request and response for an application or client on the device 250. In one embodiment, subsequent requests are tracked prior to the detection of an outgoing request initiated from an application (eg, a mobile application) on mobile device 250 by the same mobile client or application (eg, a mobile application). Using the request information collected for the request for which the response is cached, the polling rate may be determined. In one embodiment, the polling rate is determined from the average of the time intervals between previous requests generated by the same client making the request. For example, a first interval may be calculated between a current request and a previous request, and a second interval may be calculated between two previous requests. The polling rate can be set from the average of the first and second intervals and sent to the proxy server when setting up the caching strategy.

평균을 생성할 때, 대안적 간격이 계산될 수 있는데, 가령, 2개의 이전 요청들에 추가되는 복수의 이전 요청들이 사용될 수 있고, 평균을 계산할 때, 셋 이상의 간격이 사용될 수 있다. 일반적으로, 간격을 계산할 때, 특정 요청이, 호스트 서버/콘텐츠 소스로부터 간격 계산을 위해 사용되기 위한 응답을 수신할 필요가 없다. 즉, 요청이 검출되는 한, 요청 전송에 실패한 경우, 또는 응답 불러오기에 실패한 경우라도, 간격 계산에서 특정 요청의 타이밍 특성이 사용될 수 있다. When generating an average, alternative intervals may be calculated, such as a plurality of previous requests in addition to two previous requests may be used, and three or more intervals may be used when calculating the average. In general, when calculating the interval, a particular request does not need to receive a response from the host server / content source to be used for calculating the interval. That is, as long as the request is detected, even if the request fails to transmit or fails to retrieve the response, the timing characteristic of the particular request may be used in the interval calculation.

폴 스케줄 생성기(247)의 한 가지 실시예는 스케줄 업데이트 엔진(247a 및/또는 시간 조정 엔진(247b))을 포함한다. 스케줄 업데이트 엔진(247a)은, 모바일 장치(250) 상의 클라이언트 또는 애플리케이션(가령, 모바일 애플리케이션)으로부터 생성된 실제 요청에서 검출된 간격 변화를 기초로, 이전 설정된 값으로부터 특정 애플리케이션 서버/콘텐츠 호스트가 이용하는 속도(rate) 또는 폴링 간격을 업데이트할 필요가 있는지 여부를 결정할 수 있다. One embodiment of the poll schedule generator 247 includes a schedule update engine 247a and / or a time adjustment engine 247b. The schedule update engine 247a uses the speed used by a particular application server / content host from a previously set value based on interval changes detected in actual requests made from a client or application (eg, mobile application) on the mobile device 250. You can decide whether you need to update the rate or polling interval.

예를 들어, 모니터링 속도(monitoring rate)를 결정하라는 요청이 서로 다른 요청 간격에서 애플리케이션(가령, 모바일 애플리케이션) 또는 클라이언트로부터 전송될 수 있다. 스케줄링된 업데이트 엔진(247a)이 실제 요청의 업데이트된 폴링 간격을 결정하고, 이전에 설정된 속도(rate)와 상이한, 모바일 장치(250)를 대리하여 호스트로 폴링하기 위한 새로운 속도를 생성할 수 있다. 업데이트된 폴링 속도가, 셀룰러 네트워크를 통해 원격 프록시(프록시 서버(325))로 전달되어, 원격 프록시가 특정 호스트를 모니터링할 수 있다. 일부 경우, 호스트를 모니터링하는 원격 프록시 또는 원격 개체에서 업데이트된 폴링 속도가 결정될 수 있다.For example, a request to determine the monitoring rate may be sent from an application (eg, a mobile application) or a client at different request intervals. The scheduled update engine 247a may determine the updated polling interval of the actual request and generate a new rate for polling the host on behalf of the mobile device 250 that is different from the previously set rate. The updated polling rate is communicated through the cellular network to a remote proxy (proxy server 325) so that the remote proxy can monitor the particular host. In some cases, the updated polling rate may be determined at the remote proxy or remote object monitoring the host.

하나의 실시예에서, 시간 조정 엔진(247b)이, 애플리케이션 서버/콘텐츠 소스(110 또는 310)를 모니터링하기 위해 생성된 폴 스케줄을 더 최적화할 수 있다. 예를 들어, 선택사항으로서, 시간 조정 엔진(247b)이 프록시 서버로 폴링하기 시작할 시간을 특정할 수 있다. 예를 들어, 프록시 서버가 애플리케이션을 모니터링하는 폴링 간격을 설정하는 것에 추가로, 서버/콘텐츠 호스트가 모바일 클라이언트/애플리케이션에서 실제 요청이 생성되는 시간을 특정할 수 있다. In one embodiment, the time coordination engine 247b may further optimize the poll schedule generated to monitor the application server / content source 110 or 310. For example, optionally, the time adjustment engine 247b may specify a time to begin polling the proxy server. For example, in addition to setting a polling interval at which the proxy server monitors the application, the server / content host can specify when the actual request is made at the mobile client / application.

그러나 일부 경우, 내재적인 전송 지연 또는 추가되는 네트워크 지연 또는 그 밖의 다른 유형의 대기시간(latency) 때문에, 원격 프록시 서버가 약간의 지연(가령, 수 분, 또는 수 초)을 두고 로컬 프록시로부터 폴 설정을 수신한다. 이는, 모바일 클라이언트/애플리케이션에 의해 요청이 발생한 후, 소스에서의 응답 변화를 검출하는 효과를 가지며, 이는, 응답이 더 이상 현재이거나 유효하지 않은 후 다시 한 번 애플리케이션으로 서비스된 후 캐싱된 응답의 무효화가 발생하도록 한다.In some cases, however, due to inherent transmission delays, additional network delays, or other types of latency, the remote proxy server sets up polling from the local proxy with some delay (for example, minutes or seconds). Receive This has the effect of detecting a change in the response at the source after the request is made by the mobile client / application, which invalidates the cached response after the response has been serviced to the application once again after it is no longer current or valid. To occur.

날짜가 지난 콘텐츠(out-dated content)를 무효화하기 전에 다시 한 번 서비스하는 이러한 최적화되지 않은 결과를 해결하기 위해, 시간 조정 엔진(247b)은 속도(rate)에 추가로 폴링이 시작해야 하는 시점(t0)을 특정할 수 있으며, 여기서, 특정된 초기 시점(t0)은, 프록시 서버(325)에게, 모바일 애플리케이션/클라이언트에 의해 요청이 발생될 때 실제 시간보다 짧은 시간으로 특정되어 알려진다. 이러한 방식으로, 실제 애플리케이션 요청 전에 임의의 콘텐츠 변화가 검출될 수 있도록, 모바일 클라이언트에 의해 실제 요청이 발생하기 약간 전에, 서버가 자원으로 폴링한다. 이는 무효 또는 무관한 날짜가 지난 콘텐츠/응답이, 프레시 콘텐츠(fresh content)가 서비스되기 전에 다시 한 번 서비스되는 것을 방지한다. To solve this unoptimized result of serving once again before invalidating out-dated content, the time coordination engine 247b is added to the rate at which time polling should begin. t0), where the specified initial time point t0 is specified and known to the proxy server 325 as a time shorter than the actual time when the request is generated by the mobile application / client. In this way, the server polls for resources just before the actual request occurs by the mobile client so that any content change can be detected before the actual application request. This prevents invalid / irrelevant content / responses from being served once again before fresh content is served.

하나의 실시예에서, 모바일 장치(250)로부터의 아웃고잉 요청이, 모바일 장치(250) 상의 동일한 애플리케이션 또는 클라이언트로부터의 이전 요청의 타이밍 특성을 기초로 하는, 지속형 연결(가령, 롱 폴, COMET 스타일 푸시, 및 장기 유지 (HTTP) 요청)을 위한 것이라고 검출된다. 예를 들어, 폴 간격 검출기(238)의 롱 폴 검출기(238a)의 요청/응답 추적 엔진(238b)에 의해 요청 및/또는 이에 대응하는 응답이 추적될 수 있다. In one embodiment, the outgoing request from the mobile device 250 is based on the timing characteristics of the previous request from the same application or client on the mobile device 250, such as a persistent connection (eg, long pole, COMET). Style push, and long term maintenance (HTTP) requests). For example, the request and / or corresponding response may be tracked by the request / response tracking engine 238b of the long pole detector 238a of the pole interval detector 238.

연속하는 요청의 타이밍 특성은 애플리케이션 또는 클라이언트에 대한 폴링 스케줄을 설정하도록 결정될 수 있다. 폴링 스케줄은 콘텐츠 변경을 찾기 위해 콘텐츠 소스(콘텐츠 소스/애플리케이션 서버)를 모니터하도록 사용되어, 모바일 장치(250) 내 로컬 캐시 상에 저장된 캐싱된 콘텐츠가 적절하게 관리(가령, 업데이트되거나 폐기)될 수 있다. 하나의 실시예에서, 타이밍 특성은, 예를 들어, 응답 지연 시간('D') 및/또는 유휴 시간(idle time)('IT')을 포함할 수 있다. The timing characteristic of successive requests can be determined to set a polling schedule for the application or client. Polling schedules are used to monitor content sources (content source / application servers) to find content changes so that cached content stored on a local cache within mobile device 250 can be properly managed (eg, updated or discarded). have. In one embodiment, the timing characteristic may include, for example, a response delay time 'D' and / or an idle time 'IT'.

하나의 실시예에서, 출원인 또는 클라이언트 요청에 대한 타이밍도를 결정, 계산, 및/또는 추정하기 위해, 응답/요청 추적 엔진(238b)이 요청과 응답을 추적할 수 있다. In one embodiment, the response / request tracking engine 238b may track the request and the response to determine, calculate, and / or estimate a timing diagram for an applicant or client request.

예를 들어, 제 1 요청에 따라 모바일 장치에서 응답이 수신된 후, 응답/요청 추적 엔진(238b)이, 모바일 장치상의 클라이언트에 의해 개시되는 제 1 요청(요청0)과, 모바일 장치상의 클라이언트에 의해 개시되는 제 1 요청(요청1)을 검출한다. 제 2 요청은 제 1 요청에 뒤따르는 요청이다.For example, after a response is received at the mobile device according to the first request, the response / request tracking engine 238b may be configured to send the first request (request 0) initiated by the client on the mobile device and the client on the mobile device. Detect the first request (request1) initiated by the. The second request is a request following the first request.

하나의 실시예에서, 응답/요청 추적 엔진(238b)이 요청 및 응답을 추적하여, 애플리케이션 또는 클라이언트 요청에 대한 타이밍도를 결정, 계산, 및/또는 추정할 수 있다. 제 1 요청에 따라 모바일 장치에서 응답이 수신된 후, 응답/요청 추적 엔진(238b)은, 모바일 장치상의 클라이언트에 의해 개시되는 제 1 요청과, 모바일 장치상의 클라이언트에 의해 개시되는 제 2 요청을 검출할 수 있다. 제 1 요청은 제 1 요청에 뒤따르는 요청이다. In one embodiment, response / request tracking engine 238b may track requests and responses to determine, calculate, and / or estimate timing diagrams for application or client requests. After the response is received at the mobile device according to the first request, the response / request tracking engine 238b detects the first request initiated by the client on the mobile device and the second request initiated by the client on the mobile device. can do. The first request is a request following the first request.

응답/요청 추적 엔진(238b)은 제 1 요청, 제 2 요청, 및 상기 제 1 요청에 따라 수신된 응답 간의 상대적 타이밍을 더 결정한다. 일반적으로 애플리케이션에 의해 생성되는 요청이 롱 폴 요청인지 여부를 결정하기 위해, 상대적 타이밍이 롱 폴 검출기(238a)에 의해 사용될 수 있다. The response / request tracking engine 238b further determines the relative timing between the first request, the second request, and the response received in accordance with the first request. In general, relative timing may be used by long pole detector 238a to determine whether a request generated by an application is a long pole request.

일반적으로, 상대적 타이밍을 계산할 때 응답/요청 추적 엔진(238b)에 의해 사용되는 제 1 요청 및 제 2 요청이, 롱 폴 헌팅 주기가 정착된 후, 또는 롱 폴 헌팅이 발생하지 않는 경우에, 사용되기 위해 선택된다. 롱 폴 헌팅 주기의 일반적인 타이밍 특성이, 예를 들어, 롱 폴 헌팅 검출기(238c)에 의해 검출될 수 있다. 즉, 응답/요청 추적 엔진(238b)에 의해 추적되며, 특정 요청이 롱 폴인지 여부를 결정하기 위해 사용되는 요청은, 롱 폴이 정착된 후, 발생한다. In general, the first request and the second request used by the response / request tracking engine 238b when calculating relative timing are used after the long pole hunting period is settled or when long pole hunting does not occur. Is chosen to be. General timing characteristics of the long pole hunting period can be detected, for example, by the long pole hunting detector 238c. That is, a request that is tracked by the response / request tracking engine 238b and used to determine whether a particular request is a long pole occurs after the long pole has settled.

하나의 실시예에서, 롱 폴 헌팅 검출기(238c)는, 증가하는 요청 간격(가령, 증가하는 지연 시간) 및 이에 뒤따르는 어떠한 응답도 없는 요청(가령, 연결이 타임 아웃됨)을 검출함으로써, 또는 증가하는 요청 간격 및 이에 뒤따르는 간격의 감소를 검출함으로써, 헌팅 모드를 식별하거나 검출할 수 있다. 덧붙이자면, 롱 폴 헌팅 검출기(238c)가 필터 값 또는 임계값을, 그 이상에서 검출된 지연이 롱 폴 요청-응답 지연이라고 간주될 수 있는 요청-응답 시간 지연 값(가령, 절댓값)에 적용할 수 있다. 필터 값은 롱 폴의 임의의 적합한 값 특성 및/또는 네트워크 조건(가령, 2초, 5초, 10초, 15초, 20초, 등)일 수 있으며, 필터 또는 임계값으로서 사용될 수 있다. In one embodiment, the long pole hunting detector 238c detects an increasing request interval (eg, an increasing delay time) followed by a request without any response (eg, a connection is timed out), or By detecting an increasing request interval followed by a decrease in the interval, the hunting mode can be identified or detected. In addition, the long pole hunting detector 238c may apply a filter value or threshold to a request-response time delay value (eg, an absolute value) where a delay detected above may be considered as a long pole request-response delay. Can be. The filter value may be any suitable value characteristic of the long pole and / or network conditions (eg, 2 seconds, 5 seconds, 10 seconds, 15 seconds, 20 seconds, etc.) and may be used as a filter or threshold.

응답 지연 시간('D')은, 요청이 전송된 후 응답을 수신하기 위한 시작 시점을 지칭하고, 유휴(idle)는 응답이 수신된 후 뒤따르는 요청을 전송하기 위한 시간을 지칭한다. 하나의 실시예에서, 응답 지연 시간('D') 또는 ('D')의 평균(가령, 임의의 시간 주기 동안의 임의의 평균)의 유휴 시간('IT')에 대한 비교(가령, 추적 엔진(238b)에 의해 수행되는 비교)를 토대로, 예를 들어, 롱 폴 검출기(238a)에 의해, 아웃고잉 요청이 지속형 연결에 대한 것이라고 검출된다. 사용되는 평균의 개수는 고정되거나, 동적으로 조절되거나, 더 긴 시간 동안 변경될 수 있다. 예를 들어, 응답 지연 시간 간격이 유휴 시간 간격보다 큰 경우(D>IT 또는 D>>IT), 클라이언트에 의해 개시되는 요청이 롱 폴 요청이라고 결정된다. 하나의 실시예에서, 롱 폴 검출기의 추적 엔진(238b)이 응답 지연 시간 간격을, 제 1 요청의 시점과 응답의 초기 검출 또는 완전 수령 시점 사이에 경과된 시간의 크기로서, 계산, 결정, 또는 추정한다. The response delay time 'D' refers to the starting point for receiving a response after the request is sent, and idle refers to the time for sending a request that follows after the response is received. In one embodiment, a comparison (eg, tracking) of the idle time ('IT') of the average of the response delay time ('D') or ('D') (eg, any average for any time period). Based on the comparison performed by engine 238b), for example, by long pole detector 238a, it is detected that the outgoing request is for a persistent connection. The number of averages used may be fixed, dynamically adjusted, or changed for longer periods of time. For example, if the response delay time interval is greater than the idle time interval (D> IT or D >> IT), it is determined that the request initiated by the client is a long poll request. In one embodiment, the tracking engine 238b of the long pole detector calculates, determines, or measures the response delay time interval as the amount of time elapsed between the time of the first request and the time of initial detection or full receipt of the response. Estimate.

하나의 실시예에서, 예를 들어, 롱 폴 요청 또는 롱 폴 HTTP 요청에 대한 응답에서 확립된 지속형 연결이, 이전 요청에 대한 응답의 수신 후 다음번 요청의 즉각적인 또는 거의 즉각적인 발생을 검출하는 것을 특징으로 갖기 때문에, 유휴 시간('IT')이 짧을 때(가령, IT~0), 요청은 지속형 연결에 대한 것이라고 검출된다. 따라서, 유휴 시간('IT')이 이러한 즉각적이거나 거의 즉각적인 재-요청을 검출하도록 사용되어, 롱 폴 요청을 식별할 수 있다. 제 1 요청에 대한 응답이 수신된 후, 추적 엔진(238b)에 의해 결정된 절대 또는 상대적 타이밍이 사용되어, 제 2 요청이 즉각적이거나 거의 즉각적으로 재-요청됐는지 여부를 결정할 수 있다. 예를 들어, IT가 작아서 D+RT+IT~D+RT인 경우, 요청이 롱 폴 요청이라고 카테고리화될 수 있다. IT는 임계값보다 작은 경우 작은 것으로 판단될 수 있다. 임계값은 고정되거나, 짧은 시간 주기(1세션, 1일, 1달 등) 동안 계산될 수 있거나, 더 긴 시간 주기(가령, 몇 달, 또는 분석의 수명) 동안 계산될 수 있다. 예를 들어, 매 요청에 대하여, 평균 IT가 계산될 수 있고, 이 평균 IT를 이용하여 임계치가 결정될 수 있다(가령, 특정 퍼센티지 미만의 평균 IT가 임계치로서 사용될 수 있다). 이로 인하여, 시간의 흐름에 따라 임계치는 네트워크 상태 및 서버 수용력의 변경, 자원 이용가능도 또는 서버 응답의 변경에 자동으로 적응될 수 있다. 고정된 임계치는 임의의 값(예를 들어, 1s, 2s, 3s,... 등, 그러나 이에 제한되지 않음)을 취할 수 있다. In one embodiment, for example, a persistent connection established in response to a long pole request or a long pole HTTP request detects an immediate or near immediate occurrence of the next request after receipt of a response to the previous request. When the idle time ('IT') is short (eg IT ~ 0), the request is detected as being for a persistent connection. Thus, idle time ('IT') can be used to detect this immediate or near immediate re-request to identify the long pole request. After a response to the first request is received, the absolute or relative timing determined by the tracking engine 238b may be used to determine whether the second request was re-requested immediately or near instantaneously. For example, if IT is small and D + RT + IT ~ D + RT, the request may be categorized as a long pole request. IT may be determined to be smaller when it is smaller than the threshold. The threshold may be fixed or calculated for a short time period (one session, one day, one month, etc.) or may be calculated for a longer time period (eg, several months, or the lifetime of the analysis). For example, for each request, an average IT can be calculated, and a threshold can be determined using this average IT (eg, an average IT below a certain percentage can be used as the threshold). As such, over time, the threshold may be automatically adapted to changes in network conditions and server capacity, resource availability, or server responses. The fixed threshold may take any value (eg, 1s, 2s, 3s, ..., etc., but not limited to).

하나의 실시예에서, 롱 폴 검출기(238a)는, (가령, 추적 엔진(238b)에 의해 결정된) 상대적 타이밍을, 타 애플리케이션에 대한 요청-응답 타이밍 특성에 비교하여, 애플리케이션의 요청이 롱 폴 요청인지 여부를 결정할 수 있다. 예를 들어, 응답 지연 간격 시간(가령, x번의 요청에 대한 평균, 또는 x 시간에 걸쳐 평균내진 임의의 개수의 지연 간격 시간)이 임계값보다 큰 경우, 클라이언트 또는 애플리케이션에 의해 개시되는 요청이 롱 폴 요청이라고 결정될 수 있다. In one embodiment, the long pole detector 238a compares the relative timing (e.g., determined by the tracking engine 238b) to the request-response timing characteristic for another application so that the request of the application is a long pole request. Can be determined. For example, if the response delay interval time (eg, average for x requests, or any number of delay intervals averaged over x times) is greater than the threshold, the request initiated by the client or application is long. It can be determined as a poll request.

타 클라이언트에 의해, 예를 들어, 요청/응답 추적 엔진(238b)에 의해 및/또는 애플리케이션 프로파일 생성기(239)(가령, 응답 지연 간격 추적기(239a))에 의해, 발생된 요청에 대해 응답 지연 간격 시간을 이용해 임계값이 결정될 수 있다. 상기 타 클라이언트는 동일한 모바일 장치에 상주할 수 있고, 모바일 장치상의 구성요소에 의해 임계값이 로컬하게 결정된다. 예를 들어, 모든 네트워크에 걸쳐 있는 모든 자원 서버에 대한 모든 요청에 대해 임계값이 결정될 수 있다. 모든 요청 또는 적용 가능한 임계값을 갖지 않는 임의의 요청에 대해 사용되도록 임계값이 특정 상수 값(가령, 30초)으로 설정될 수 있다(가령, D>30초인 경우 롱 폴이 검출된다).Response delay intervals for requests generated by other clients, for example by request / response tracking engine 238b and / or by application profile generator 239 (eg, response delay interval tracker 239a). The threshold may be determined using time. The other client may reside on the same mobile device and the threshold is locally determined by a component on the mobile device. For example, a threshold may be determined for all requests for all resource servers across all networks. The threshold may be set to a specific constant value (eg, 30 seconds) to be used for all requests or for any request that does not have an applicable threshold (eg, a long pole is detected if D> 30 seconds).

일부 경우, 상기 타 클라이언트가 서로 다른 모바일 장치상에 상주하며, 임계치가, 모바일 장치 외부에 위치하며, 무선 네트워크를 통해 복수의 서로 다른 모바일 장치와 통신할 수 있는 프록시 서버(가령, 도 3A-B의 예시의 경우, 호스트(300)의 프록시 서버(325))에 의해 결정될 수 있으며, 이는 도 3B를 참조하여 더 설명될 것이다. In some cases, proxy servers (eg, FIGS. 3A-B) may reside on different mobile devices and thresholds may be located outside the mobile device and communicate with a plurality of different mobile devices over a wireless network. Can be determined by proxy server 325 of host 300, which will be further described with reference to FIG. 3B.

하나의 실시예에서, 캐시 정책 관리기(245)가 폴링 스케줄을 프록시 서버(가령, 도 1B-1C 및 도 3A의 예시에서 나타난 프록시 서버(125 또는 325))로 전송하고, 프록시 서버에 의해, 예를 들어, 변경된 콘텐츠나 새로운 콘텐츠(요청 또는 애플리케이션과 연계된 캐싱된 응답과 상이한 업데이트된 응답)를 찾기 위해 콘텐츠 소스를 모니터링하는 데 사용될 수 있다. 프록시로 전송된 폴링 스케줄은 복수의 타이밍 파라미터, 가령, 간격(요청 1에서 요청 2까지의 시간) 또는 타임 아웃 간격(예를 들어 롱 폴에서 사용되는, 응답을 대기하는 시간)(그러나 이에 국한되지 않음)를 포함할 수 있다. 요청/응답 타이밍 시퀀스의 타이밍도를 참조하면, 타이밍 간격('R1', 'D', 'RT' 및/또는 'IT') 또는 상기 값들의 임의의 통계적 조작(가령, 평균, 표준 편차 등)이 프록시 서버로 전체적으로 또는 부분적으로 전송될 수 있다. In one embodiment, cache policy manager 245 sends a polling schedule to a proxy server (eg, proxy server 125 or 325 shown in the examples of FIGS. 1B-1C and 3A), and by a proxy server, yes For example, it can be used to monitor content sources to find changed content or new content (updated responses that are different from cached responses associated with the request or application). The polling schedule sent to the proxy can include, but is not limited to, a plurality of timing parameters, such as intervals (time from request 1 to request 2) or timeout intervals (eg, time to wait for a response, used in long poles). Not). Referring to the timing diagram of the request / response timing sequence, the timing intervals 'R1', 'D', 'RT' and / or 'IT' or any statistical manipulation of the values (eg average, standard deviation, etc.) It may be sent in whole or in part to this proxy server.

예를 들어, 로컬 프록시(275)가 롱 폴을 검출하는 경우, 요청/응답 타이밍 시퀀스의 다양한 타이밍 간격(가령, 'D', 'RT' 및/또는 'IT')이 프록시 서버(325)로 전송되어, 콘텐츠 소스(가령, 애플리케이션 서버/콘텐츠 호스트(110))로 폴링할 때 사용될 수 있다. 또한 로컬 프록시(275)는 프록시 서버(325)에게, 모니터링될 특정 애플리케이션 또는 요청 롱 폴 요청이라고 알려줄 수 있다(가령, 프록시 서버에게 "롱 폴 플래그(long poll flag)"를 설정하도록 명령함). 덧붙이자면, 프록시 서버가 다양한 타이밍 간격을 사용하여, 모바일 장치를 대리하여 킵-얼라이브 지시자(keep-alive indication)를 전송할 때를 결정할 수 있다. For example, when the local proxy 275 detects a long pole, various timing intervals (eg, 'D', 'RT' and / or 'IT') of the request / response timing sequence may be directed to the proxy server 325. Can be sent and used when polling to a content source (eg, application server / content host 110). Local proxy 275 may also inform proxy server 325 that it is a particular application or request long poll request to be monitored (eg, instruct the proxy server to set a "long poll flag"). In addition, the proxy server may use various timing intervals to determine when to send a keep-alive indication on behalf of the mobile device.

특정 요청에 대해 애플리케이션 서버/콘텐츠 소스로부터 새롭거나 변경된 데이터(가령, 업데이트된 응답)가 검출될 때 캐싱 정책 관리기(245)의 로컬 캐시 무효화기(244)가 로컬 캐시(가령, 캐시(185 또는 285)) 내 캐시 요소를 무효화할 수 있다. 프록시 서버(가령, 프록시(325) 또는 호스트 서버(300))로부터 수신된 통지를 기초로 하여, 캐싱된 응답이 아웃고잉 요청에 대해 무효인 것으로 결정될 수 있다. 모바일 클라이언트의 요청에 대해 응답을 제공하는 소스가 모니터링되어, 요청에 대한, 모바일 장치(250)의 캐시에 저장된 캐싱된 응답의 관련성(relevancy)을 결정할 수 있다. 예를 들어, 특정 요청 또는 특정 애플리케이션에 대해 캐싱된 응답이 더 이상 유효하지 않을 때, 캐싱된 무효화기(244)가 모바일 장치의 캐시에서 캐싱된 응답을 더 제거/삭제할 수 있다. When new or changed data (eg, an updated response) is detected from an application server / content source for a particular request, the local cache invalidator 244 of the caching policy manager 245 is configured to cache the local cache (eg, cache 185 or 285). )) You can invalidate my cache elements. Based on the notification received from the proxy server (eg, proxy 325 or host server 300), it may be determined that the cached response is invalid for the outgoing request. The source providing the response to the mobile client's request may be monitored to determine the relevancy of the cached response stored in the cache of the mobile device 250 to the request. For example, when a cached response for a particular request or a specific application is no longer valid, the cached invalidator 244 may further remove / delete the cached response from the cache of the mobile device.

하나의 실시예에서, 캐싱된 응답은 아웃고잉 요청을 발생시킨 애플리케이션으로 다시 한 번 제공된 후, 캐싱된 응답이 더 이상 유효하지 않다고 판단되면 캐시로부터 제거된다. 캐싱된 응답은 시간 간격 동안 기다리지 않고 제공될 수 있거나, 시간 간격(가령, 롱 폴 내 응답 지연을 에뮬레이트하기 위해 특정된 것으로 판단된 시간 간격) 동안 기다린 후 다시 제공될 수 있다. 하나의 실시예에서, 시간 간격이 응답 지연 'D', 또는 둘 이상의 응답 지연 'D'의 값의 평균 값이다. In one embodiment, the cached response is once again provided to the application that issued the outgoing request and then removed from the cache if it is determined that the cached response is no longer valid. The cached response may be provided without waiting for a time interval, or may be provided again after waiting for a time interval (eg, a time interval determined to be specific to emulate a response delay within a long pole). In one embodiment, the time interval is the average value of the values of the response delay 'D', or two or more response delays 'D'.

예를 들어, 새로운 데이터 또는 변경된 데이터가 프록시 서버(가령, 도 1B-1C 및 도 3A의 예시에서 나타난 프록시 서버(125 또는 325))에 의해 검출될 수 있다. 특정 요청/폴에 대한 캐시 엔트리가 무효화된 때, 모바일 장치(250)상의 라디오의 사용이 (가령, 로컬 프록시(275) 또는 캐시 정책 관리기(245)에 의해) 활성화되어, 후속하는 폴링 요청을 만족시킬 수 있고, 이는 도 9-10의 상호대화도를 참조하여 더 설명될 것이다. For example, new or changed data may be detected by a proxy server (eg, proxy server 125 or 325 shown in the examples of FIGS. 1B-1C and 3A). When the cache entry for a particular request / pol is invalidated, the use of the radio on mobile device 250 is activated (eg, by local proxy 275 or cache policy manager 245) to satisfy subsequent polling requests. This may be further explained with reference to the interactive diagrams of FIGS. 9-10.

캐시 정책 관리기(245)의 한 가지 실시예는, 애플리케이션 또는 위젯에 의해 모바일 장치(250)에서 생성되는 폴/콘텐츠 요청을 만족시키기 위해 로컬하게 캐싱된 엔트리를 사용할지 여부를 결정할 수 있는 캐시 또는 연결 선택 엔진(249)을 포함한다. 예를 들어, 로컬 프록시(275) 또는 캐시 정책 관리기(245)는, 애플리케이션 서버/콘텐츠 제공자를 접촉하기 위해 모바일 장치상의 애플리케이션(가령, 모바일 애플리케이션)에 의해 만들어지는 폴링 요청을 인터셉트할 수 있다. 선택 엔진(249)은 인터셉트된 요청에 대해 수신된 콘텐츠가 캐시 요소로서 로컬하게 저장됐는지 여부를 결정할 수 있음으로써, 애플리케이션(가령, 모바일 애플리케이션)에 의해 만들어진 요청을 만족시키기 위해 모바일 장치의 라디오가 활성화될 필요가 있는지 여부를 결정할 수 있고, 또한 캐싱된 응답을 이용해 아웃고잉 요청에 대해 응답하기 전에, 상기 캐싱된 응답이 상기 아웃고잉 요청에 대해 여전히 유효한지 여부를 판단할 수 있다. One embodiment of cache policy manager 245 is a cache or connection that may determine whether to use locally cached entries to satisfy poll / content requests generated by mobile device 250 by an application or widget. And a selection engine 249. For example, local proxy 275 or cache policy manager 245 may intercept a poll request made by an application (eg, mobile application) on a mobile device to contact an application server / content provider. The selection engine 249 can determine whether the received content for the intercepted request was stored locally as a cache element, thereby enabling the mobile device's radio to be activated to satisfy the request made by the application (eg, mobile application). It may be determined whether there is a need to be made, and also before using the cached response to respond to the outgoing request, it may be determined whether the cached response is still valid for the outgoing request.

하나의 실시예에서, 로컬 프록시(275)는, 관련 캐싱된 콘텐츠가 존재하며 여전히 유효하다고 판단한 것에 응답하여, 로컬 캐시로부터 캐싱된 요소를 불러와 응답을 폴링 요청을 한 애플리케이션(가령 모바일 애플리케이션)에 제공할 수 있음으로써, 모바일 장치의 라디오가 애플리케이션(가령, 모바일 애플리케이션)에 응답을 제공하기 위해 활성화되지 않게 된다. 일반적으로 로컬 프록시(275)는, 캐싱된 응답과 상이한 업데이트된 응답이 검출될 때까지 아웃고잉 요청이 수신될 때마다 캐싱된 응답을 계속 제공할 수 있다. In one embodiment, in response to determining that the associated cached content is present and still valid, the local proxy 275 retrieves the cached element from the local cache and sends a response to the application (eg mobile application) that has made a poll request. By providing, the radio of the mobile device is not activated to provide a response to the application (eg, mobile application). In general, the local proxy 275 may continue to provide a cached response each time an outgoing request is received until an updated response that is different than the cached response is detected.

캐싱된 응답이 더 이상 유효하지 않다고 판단될 때, 특정 요청에 대한 새로운 요청이 업데이트된 응답을 위해 무선 네트워크를 통해 전송된다. 새로운 그리고 업데이트된 응답에 대한 요청이, 애플리케이션 서버/콘텐츠 제공자(가령, 서버/호스트(110)) 또는 호스트 서버상의 프록시 서버(가령, 호스트(300)상의 프록시(325))로 전송될 수 있다. 하나의 실시예에서, 시간 간격 내에 새로운 응답이 수신되지 않을 경우, 캐싱된 응답은, 모바일 장치상의 캐시에서 제거되기 전에, 아웃고잉 요청에 대한 응답으로서 제공될 수 있다. When it is determined that the cached response is no longer valid, a new request for a particular request is sent over the wireless network for an updated response. Requests for new and updated responses may be sent to an application server / content provider (eg, server / host 110) or a proxy server on a host server (eg, proxy 325 on host 300). In one embodiment, if no new response is received within the time interval, the cached response may be provided as a response to the outgoing request, before being removed from the cache on the mobile device.

도 2C는 도 2A의 예에서 도시된 분산 프록시 시스템의 클라이언트 측 상에서의 애플리케이션 거동 검출기(236) 및 로컬 프록시(275) 내 캐싱 정책 관리기(245)의 구성요소의 또 하나의 예를 도시하는 블록도를 도시한다. 도시된 애플리케이션 거동 검출기(236) 및 캐싱 정책 관리기(245)는, 예를 들어, 로컬 프록시(275)가 캐시 디피트(cache defeat)를 검출하고, 캐시를 디피트하도록 의도된 식별자에 의해 주소지정된 콘텐츠의 캐싱을 수행하도록 할 수 있다.FIG. 2C is a block diagram illustrating another example of components of an application behavior detector 236 and a caching policy manager 245 in a local proxy 275 on the client side of the distributed proxy system shown in the example of FIG. 2A. Shows. The application behavior detector 236 and the caching policy manager 245 shown are, for example, the local proxy 275 detects cache defeat and is addressed by an identifier intended to deflect the cache. Caching of content can be performed.

하나의 실시예에서, 캐싱 정책 관리기(245)는 캐시 디피트 해결 엔진(221), 식별자 포멀라이저(identifier formalizer)(211), 캐시 적절성 판단 엔진(246), 폴 스케줄 생성기(247), 애플리케이션 프로토콜 모듈(248), 캐시 질의 모듈(229)을 갖는 캐시 또는 연결 선택 엔진(249), 및/또는 로컬 캐시 무효화기(244)를 포함한다. 캐시 디피트 해결 엔진(221)은 패턴 추출 모듈(222) 및/또는 캐시 디피트 파라미터 검출기(223)를 더 포함할 수 있다. 캐시 디피트 파라미터 검출기(223)는 랜덤 파라미터 검출기 및/또는 시간/날짜 파라미터 검출기(226)를 더 포함할 수 있다. 하나의 실시예는 판단 엔진(246)으로 연결된 애플리케이션 캐시 정책 레포지토리(243)를 더 포함한다. In one embodiment, the caching policy manager 245 includes a cache defeat resolution engine 221, an identifier formalizer 211, a cache adequacy determination engine 246, a poll schedule generator 247, an application protocol. Module 248, cache or connection selection engine 249 with cache query module 229, and / or local cache invalidator 244. The cache bite resolution engine 221 may further include a pattern extraction module 222 and / or a cache bite parameter detector 223. The cache dip parameter detector 223 may further include a random parameter detector and / or a time / date parameter detector 226. One embodiment further includes an application cache policy repository 243 coupled to decision engine 246.

하나의 실시예에서, 애플리케이션 거동 검출기(236)는 패턴 검출기(237), 폴 간격 검출기(238), 애플리케이션 프로파일 생성기(239), 및/또는 우선순위 엔진(241)을 포함한다. 패턴 검출기(237)는, 예를 들어, 랜덤 파라미터 검출기(233) 및/또는 시간/날짜 파라미터 검출기(234)를 갖는 캐시 디피트 파라미터 검출기(223)를 더 포함할 수 있다. 한 가지 실시예는, 애플리케이션 프로파일 생성기(239)로 연결되어 있는 애플리케이션 프로파일 레포지토리(242)를 더 포함한다. 애플리케이션 프로파일 생성기(239) 및 우선순위 엔진(241)은 도 2A의 예시의 애플리케이션 거동 검출기(236)의 설명과 관련하여 기재되었다. In one embodiment, the application behavior detector 236 includes a pattern detector 237, a pole spacing detector 238, an application profile generator 239, and / or a priority engine 241. The pattern detector 237 may further include a cache dip parameter detector 223 having, for example, a random parameter detector 233 and / or a time / date parameter detector 234. One embodiment further includes an application profile repository 242 coupled to the application profile generator 239. The application profile generator 239 and the priority engine 241 have been described in connection with the description of the example application behavior detector 236 of FIG. 2A.

캐시 디피트 해결 엔진(221)은 콘텐츠 또는 콘텐츠 소스(가령, 서버 또는 호스트)를 검출, 식별, 추적, 관리, 및/또는 모니터링하며, 상기 콘텐츠 또는 콘텐츠 소스는, 캐시를 디피트하거나 캐시를 디피트하도록 의도된 하나 이상의 메커니즘을 갖는 식별자를 이용하거나, 및/또는 식별자(가령, URL 및/또는 URI 등의 자원 식별자)에 의해 주소지정된다. 캐시 디피트 해결 엔진(221)은, 예를 들어, 식별자가 캐시를 디피트하거나 디피트할 가능성이 있는 애플리케이션 또는 클라이언트에 의해 발생되는 특정 데이터 요청으로부터, 다른 경우라면, 데이터 요청이 캐싱 가능한 호스트 또는 서버(가령, 애플리케이션 서버/콘텐츠 호스트(110 또는 310))로부터 콘텐츠 또는 응답을 주소지정할 곳을 검출할 수 있다. Cache defeat resolution engine 221 detects, identifies, tracks, manages, and / or monitors the content or content source (eg, server or host), which content or content source deselects the cache or decodes the cache. Using an identifier having one or more mechanisms intended to fit, and / or addressed by an identifier (eg, a resource identifier such as a URL and / or a URI). The cache defeat resolution engine 221 may be configured to, for example, from a particular data request issued by an application or a client whose identifier is likely to or will cache the cache, if the data request is a cacheable host or Where to address the content or response may be detected from a server (eg, application server / content host 110 or 310).

하나의 실시예에서, 캐시 디피트 해결 엔진(221)은 모바일 장치(250)에서 검출되는 데이터 요청의 식별자를 이용해 콘텐츠 소스(가령, 애플리케이션 서버/콘텐츠 호스트(110 또는 310))에 의해 사용되는 캐시 디피트 메커니즘을 검출하거나 식별한다. 캐시 디피트 해결 엔진(221)은 캐시 디피트 메커니즘이 사용됨을 가리킬 수 있는 식별자에서 파라미터를 검출하거나 식별할 수 있다. 예를 들어, 포맷, 구문(syntax), 또는 파라미터의 패턴이 사용되어, 캐시 디피트(가령, 패턴 추출 모듈(222)에 의해 결정되거나 추출되는 상태의 패턴, 포맷, 또는 구문)를 식별할 수 있다.In one embodiment, the cache defeat resolution engine 221 uses the identifier of the data request detected at the mobile device 250 to cache the content source (eg, application server / content host 110 or 310). Detect or identify the dip mechanism. The cache bite resolution engine 221 may detect or identify a parameter in an identifier that may indicate that the cache bite mechanism is used. For example, a format, syntax, or pattern of parameters may be used to identify cache dips (eg, patterns, formats, or syntax of states determined or extracted by pattern extraction module 222). have.

패턴 추출 모듈(222)은 식별자를 복수의 파라미터 또는 성분으로 파스(parse)하고, 각각의 파라미터에 대해 매칭 알고리즘(matching algorithm)을 수행하여, 그 중 어느 것이 하나 이상의 지정된 포맷(가령, 날짜 및/또는 시간 포맷)과 매칭하는지를 식별할 수 있다. 예를 들어, (캐시 디피트 파라미터 검출기(223)에 의해) 매칭의 결과, 또는 식별자로부터 파스된 파라미터들이 사용되어, 하나 이상의 변하는 파라미터를 포함할 수 있는 캐시 디피트 파라미터를 식별할 수 있다.The pattern extraction module 222 parses the identifier into a plurality of parameters or components and performs a matching algorithm for each parameter, either of which is one or more designated formats (eg, date and / or the like). Or time format). For example, parameters that have been parsed from the identifier, as a result of the match (by the cache dip parameter detector 223), can be used to identify cache dip parameters that may include one or more changing parameters.

하나의 실시예에서, 캐시 디피트 파라미터 검출기(223)는 (가령, 랜덤 파라미터 검출기(224)에 의해) 랜덤 파라미터를 검출하거나 및/또는 일반적으로 캐시 디피트를 위해 사용되는 날짜 및/또는 시간 파라미터를 검출할 수 있다. 캐시 디피트 파라미터 검출기(223)는 랜덤 파라미터(가령, 도 7에 도시된 파라미터(752)로 나타난 것)를 검출하거나, 및/또는 이들 파라미터에 대해 일반적으로 사용되는 포맷을 이용하고 패턴 매칭 알고리즘 및 테스트를 이용해, 시간/날짜를 검출할 수 있다. In one embodiment, cache diptight parameter detector 223 detects random parameters (eg, by random parameter detector 224) and / or the date and / or time parameters generally used for cachepitt. Can be detected. Cache dip parameter detector 223 detects random parameters (e.g., represented by parameter 752 shown in FIG. 7), and / or utilizes commonly used formats for these parameters, Tests can be used to detect time / date.

패턴, 포맷, 및/또는 구문을 검출하는 것에 추가로, 캐시 디피트 파라미터 검출기(223)는 특정 파라미터가 캐시를 디피트하는 중인지 여부와 분산 캐싱 시스템에 의해 주소지정된 콘텐츠가 캐싱될 수 있는지 여부를 더 결정하거나 확인한다. 캐시 디피트 파라미터 검출기(223)는, 특정 데이터 요청에 의해 사용되는 식별자에 대해 수신된 응답을 분석함으로써, 이를 검출할 수 있다. 일반적으로, 복수의 데이터 요청이 복수의 데이터 요청 각각에 대해 상이하게 변하는 파라미터를 갖는 식별자를 사용할 때조차, 복수의 데이터 요청에 대응하는 응답들이 동일할 때 식별자 내 변하는 파라미터가 캐시 디피트를 가리키도록 식별될 수 있다. 예를 들어, 요청/응답 쌍은, 자원 식별자가 각각의 요청에 따라 변하는 파라미터를 포함할지라도, 수신된 응답이 동일함을 나타낸다.In addition to detecting the pattern, format, and / or syntax, the cache definite parameter detector 223 can determine whether a particular parameter is debiting the cache and whether content addressed by the distributed caching system can be cached. Decide or confirm more. The cache bite parameter detector 223 may detect this by analyzing the received response for the identifier used by the particular data request. In general, even when a plurality of data requests use identifiers having differently varying parameters for each of the plurality of data requests, the varying parameter in the identifier points to cache depth when the responses corresponding to the plurality of data requests are the same. Can be identified. For example, a request / response pair indicates that the received response is the same, even though the resource identifier includes a parameter that varies with each request.

예를 들어, 변하는 파라미터가 캐시 디피트를 나타낸다고 식별하기 위해, 적어도 2개의 동일한 응답이 요구될 수 있다. 일부 경우, 적어도 3개의 동일한 응답이 필요할 수 있다. 요청들 간에 변하는 값을 갖는 특정 파라미터가 캐시 디피트임을 결정하기 위해 필요한 동일한 응답의 개수에 대한 요건이 애플리케이션 특정적, 상황 종속적, 및/또는 사용자 종속적/사용자 특정적, 또는 이들의 조합일 수 있다. 또한 이러한 요건은 정적이거나, 특정 성능 임계치 및/또는 사용자 경험에 대한 명시적/묵시적 피드백(가령, 사용자 또는 애플리케이션이 요청에 응답하여 관련/프레시 콘텐츠를 수신하는 중인지 여부)을 충족하기 위해, 분산 캐시 시스템에 의해, 동적으로 조절될 수 있다. 애플리케이션이 응답 캐싱 때문에 오작동하기 시작하는 경우, 및/또는 사용자가 불만족을 표시하거나(명시적 사용자 피드백) 시스템이 사용자 불만족을 검출하는 경우, 캐시 디피트를 확정하기 위해, 또는 시스템이 특정 파라미터를 캐시 디피트에 대해 의도된 것으로 취급하기 위해, 더 많은 동일한 응답이 필요할 수 있다. For example, at least two identical responses may be required to identify that the changing parameter represents a cache bite. In some cases, at least three identical responses may be needed. The requirement for the same number of responses needed to determine that a particular parameter with a value that varies between requests may be cache default may be application specific, context dependent, and / or user dependent / user specific, or a combination thereof. . These requirements may also be static or distributed caches to meet explicit / implicit feedback on specific performance thresholds and / or user experience (e.g. whether the user or application is receiving related / fresh content in response to a request). By the system, it can be adjusted dynamically. If the application starts to malfunction due to response caching, and / or if the user indicates dissatisfaction (explicit user feedback) or if the system detects user dissatisfaction, or to confirm the cache dip, or the system caches certain parameters. More identical responses may be needed to treat them as intended for the default.

캐시 적절성 판단 엔진(246)은, 모바일 장치(250)가 상호대화하는 콘텐츠 소스(가령, 도 1C의 예시에서 애플리케이션 서버/콘텐츠 제공자(110))로부터의 콘텐츠가 캐싱에 적합할 수 있는 콘텐츠를 가지는지 여부를 검출, 판정, 또는 결정할 수 있다. 일부 경우, 특정 애플리케이션 서버/콘텐츠 제공자(가령, 도 1C의 서버/제공자(110))가 기준들의 세트(예를 들어, 콘텐츠 소스로부터 요청되는 콘텐츠의 시간 중요도를 특정하는 기준)를 기초로 캐싱에 적합한 것으로 결정된다. 하나의 실시예에서, 로컬 프록시(가령, 도 1B-1C 및 도 2A의 로컬 프록시(175 또는 275))가, 애플리케이션에 의해 이뤄지는 후속하는 요청들을 만족하기 위해, 애플리케이션에 의해 요청받은 호스트 서버로부터의 콘텐츠를, 모바일 장치상의 로컬 캐시 내 캐싱된 요소로서 저장하기 위한 선택 기준을 적용한다. Cache adequacy determination engine 246 may have content from which content sources that mobile device 250 interacts with (eg, application server / content provider 110 in the example of FIG. 1C) may be suitable for caching. Can be detected, determined, or determined. In some cases, a particular application server / content provider (eg, server / provider 110 of FIG. 1C) may be used for caching based on a set of criteria (eg, a criterion that specifies the time importance of the content requested from the content source). It is determined to be suitable. In one embodiment, a local proxy (eg, local proxy 175 or 275 of FIGS. 1B-1C and 2A) from a host server requested by the application to satisfy subsequent requests made by the application. Apply selection criteria to store content as cached elements in a local cache on the mobile device.

또한, 선택 기준은, 예를 들어, 모바일 장치가 활성인지 비활성인지 여부를 가리키는 모바일 장치의 상태, 네트워크 조건, 및/또는 라디오 커버리지 통계치(radio coverage statistics)를 포함할 수 있다. 캐시 적절성 판단 엔진(246)은 캐싱이 적합할 수 있는 소스를 식별할 때, 기준들 중 임의의 하나 또는 기준들의 임의의 조합을, 임의의 순서로 이용할 수 있다. In addition, the selection criteria may include, for example, the state of the mobile device, network conditions, and / or radio coverage statistics indicating whether the mobile device is active or inactive. The cache adequacy determination engine 246 may use any one of the criteria or any combination of the criteria, in any order, when identifying a source to which caching may be suitable.

애플리케이션 서버/콘텐츠 제공자가 모바일 장치(250) 상의 로컬 캐싱에 적합할 가능성이 있는 식별되거나 검출된 콘텐츠를 가지면, 캐시 정책 관리기(245)는, 콘텐츠 소스로부터 수신된 콘텐츠를 모바일 장치(250) 상의 로컬 캐시(가령, 도 1B-1C와 도 2A의 예시의 경우, 로컬 캐시(185 또는 285)) 내 캐시 요소로서 저장함으로써, 식별된 소스로부터 수신된 관련 콘텐츠의 캐싱을 진행할 수 있다. 또한 콘텐츠 소스는, 모바일 장치(250)에 원격으로 위치하며 상기 모바일 장치(250)와 무선 통신하는 프록시 서버(가령, 도 1B-1C 및 도 3A의 프록시 서버(125 또는 325))에게 알려질 수 있어서, 상기 프록시 서버가 새로운 데이터 또는 변경된 데이터를 찾기 위해 콘텐츠 소스(가령, 애플리케이션 서버/콘텐츠 제공자(110))를 모니터할 수 있다. 이와 유사하게, 로컬 프록시(가령, 도 1B-1C 및 도 2A의 로컬 프록시(175 또는 275)가 프록시 서버에게, 특정 애플리케이션 서버/콘텐츠 제공자로부터 수신된 콘텐츠가 로컬 캐시 내 캐싱된 요소로서 저장되어 있다고 알려줄 수 있다. If the application server / content provider has identified or detected content that is likely to be suitable for local caching on mobile device 250, cache policy manager 245 may localize the content received from the content source on mobile device 250. By storing as a cache element in a cache (eg, local cache 185 or 285 in the example of FIGS. 1B-1C and 2A), caching of relevant content received from the identified source can proceed. The content source may also be known to a proxy server (eg, proxy server 125 or 325 of FIGS. 1B-1C and 3A) remotely located on mobile device 250 and in wireless communication with the mobile device 250. The proxy server may monitor the content source (eg, application server / content provider 110) to find new or changed data. Similarly, local proxies (eg, local proxies 175 or 275 in FIGS. 1B-1C and 2A) may tell the proxy server that content received from a particular application server / content provider is stored as a cached element in the local cache. I can tell you.

하나의 실시예에서, 캐시 요소가 로컬 캐시(285)에, 캐시를 디피트하는 것으로 의도된 하나 이상의 파라미터를 이용하는 식별자의 정규화된 버전(normalized version)과 연계되어, 저장된다. 식별자 정규화기 모듈(211)에 의해 식별자가 정규화될 수 있고, 예를 들어, 정규화 프로세스는, URI 스킴 및 호스트를 소문자로 변환하는 것, 퍼센트-인코딩식 이스케이프 시퀀스의 문자들을 대문자화하는 것, 디폴트 포트를 제거하는 것, 및 중복 슬래시(duplicate slash)를 제거하는 것 중 하나 이상을 포함할 수 있다. In one embodiment, a cache element is stored in local cache 285 in association with a normalized version of an identifier using one or more parameters intended to deflect the cache. The identifier may be normalized by the identifier normalizer module 211, for example, the normalization process may include: converting the URI scheme and host to lowercase, capitalizing the characters of the percent-encoded escape sequence, default One or more of removing the port, and removing the duplicate slash.

또 하나의 실시예에서, 정규화기(211) 또는 캐시 디피트 파라미터 핸들러(212)에 의해, 캐시 디피트에 대한 파라미터를 제거함으로써, 및/또는 상기 파라미터를, 식별자를 이용하는 요청에 응답하여 수신된 캐싱된 응답을 주소지정하기 위해 사용될 수 있거나, 상기 캐싱된 응답과 연계될 수 있는 정적 값(static value)으로 대체함으로써, 식별자가 정규화된다. 예를 들어, 식별자의 정규화된 버전 또는 상기 정규화된 식별자의 해시 값(hash value)을 이용하여 (도 2A에 도시된) 로컬 캐시(285)에 저장된 캐싱된 요소가 식별될 수 있다. 식별자의 해시 값 또는 정규화된 식별자의 해시 값은 해시 엔진(213)에 의해 생성될 수 있다.In another embodiment, received by the normalizer 211 or cache defeat parameter handler 212 by removing a parameter for cache defeat and / or in response to a request using an identifier. The identifier is normalized by substituting a static value that can be used to address a cached response or associated with the cached response. For example, cached elements stored in local cache 285 (shown in FIG. 2A) may be identified using a normalized version of the identifier or a hash value of the normalized identifier. The hash value of the identifier or the hash value of the normalized identifier may be generated by the hash engine 213.

콘텐츠가 로컬하게 캐싱된 경우, 캐시 정책 관리기(245)는, 콘텐츠 서버로 접촉하기 위한 추후 폴링 요청을 수신할 때, 모바일 장치의 라디오가 폴링 요청을 서비스하기 위해 활성화되지 않도록, 로컬 캐시에서 캐싱된 요소를 불러와서, 모바일 장치(250)에서 이뤄진 폴링 요청에 응답할 수 있다. 로컬 캐시 엔트리를 통해 애플리케이션(가령, 모바일 애플리케이션)의 요청을 이렇게 서비스하고 이행함으로써, 모바일 장치(250)에 이미 수신된 응답에서 변경되지 않을 수 있는 폴 응답을 요청/수신하기 위해 네트워크 대역폭 및 그 밖의 다른 자원이 사용될 필요가 없기 때문에, 더 효율적인 자원 및 모바일 네트워크 트래픽 활용과 관리가 가능해진다.If the content is cached locally, the cache policy manager 245 is cached in the local cache so that when a subsequent poll request to contact the content server is received, the radio of the mobile device is not activated to service the poll request. The element may be retrieved and responded to a polling request made at mobile device 250. By so servicing and fulfilling requests from applications (e.g., mobile applications) via local cache entries, network bandwidth and other to request / receive poll responses that may not change from responses already received at mobile device 250. Since no other resources need to be used, more efficient resource and mobile network traffic utilization and management is possible.

캐시 정책 관리기(245)의 한 가지 실시예는, 모바일 장치(250) 상의 하나 이상의 애플리케이션에 대해 폴링 스케줄을 생성할 수 있는 폴 스케줄 생성기(247)를 포함한다. 폴링 스케줄은, 하나 이상의 애플리케이션을 위해 콘텐츠 소스를 모니터링할 때 프록시 서버(가령, 도 1B-1C 및 도 3A의 예시에서 도시된 프록시 서버(125 또는 325))에 의해 사용될 수 있는 폴링 간격을 특정할 수 있다. 폴링 스케줄은, 예를 들어, 모바일 장치로부터 콘텐츠 소스로의 폴링 요청들 사이의 간격을 기초로 결정될 수 있다. 하나의 실시예에서, 애플리케이션 거동 검출기의 폴 간격 검출기(238)는 모바일 장치(250)로부터 콘텐츠 소스로의 폴링 요청들을 모니터할 수 있어서, 임의의 또는 모든 애플리케이션(가령, 모바일 애플리케이션)에서 이뤄진 폴링 요청들 사이의 간격을 결정할 수 있다. One embodiment of cache policy manager 245 includes a poll schedule generator 247 that can generate a polling schedule for one or more applications on mobile device 250. The polling schedule may specify a polling interval that may be used by a proxy server (eg, proxy server 125 or 325 shown in the examples of FIGS. 1B-1C and 3A) when monitoring a content source for one or more applications. Can be. The polling schedule may be determined based on, for example, the interval between polling requests from the mobile device to the content source. In one embodiment, the poll interval detector 238 of the application behavior detector can monitor polling requests from the mobile device 250 to the content source, so that polling requests from any or all applications (eg, mobile applications) are made. You can determine the spacing between them.

하나의 실시예에서, 캐시 정책 관리기(245)는 폴링 스케줄을 프록시 서버(가령, 도 1B-1C 및 도 3A의 예시에서 나타난 프록시 서버(125 또는 325))로 전송하며, 상기 폴링 스케줄은, 프록시 서버에 의해, 가령, 변경되거나 새로운 콘텐츠를 찾기 위해 콘텐츠 소스를 모니터링할 때 사용될 수 있다. 특정 요청에 대해, 새로운 데이터 또는 변경된 데이터가 애플리케이션 서버/콘텐츠 소스로부터 검출될 때, 캐싱 정책 관리기(245)의 로컬 캐시 무효화기(244)는 로컬 캐시(가령, 캐시(185 또는 285)) 내 캐시 요소를 무효화할 수 있다. 예를 들어, 새로운 데이터 또는 변경된 데이터는, 프록시 서버에 의해 검출될 수 있다. 특정 요청/폴에 대한 캐시 엔트리가 무효화 및/또는 무효화 후 제거(가령, 캐시에서 삭제)됐을 때, 뒤이은 폴링 요청을 만족시키기 위해, 모바일 장치(250) 상의 라디오의 사용이 (가령, 로컬 프록시 또는 캐시 정책 관리기(245)에 의해) 활성화될 수 있으며, 이는, 도 4B의 상호대화도를 참조하여 추가로 기재된다. In one embodiment, cache policy manager 245 sends a polling schedule to a proxy server (eg, proxy server 125 or 325 shown in the examples of FIGS. 1B-1C and 3A), the polling schedule being a proxy. It can be used by the server, for example, when monitoring content sources to find changed or new content. For a particular request, when new or changed data is detected from the application server / content source, the local cache invalidator 244 of the caching policy manager 245 is cached in a local cache (eg, cache 185 or 285). You can invalidate an element. For example, new or changed data can be detected by the proxy server. When a cache entry for a particular request / pol is invalidated and / or removed after invalidation (eg, deleted from the cache), the use of the radio on the mobile device 250 is (eg, local proxy) to satisfy subsequent poll requests. Or by cache policy manager 245), which is further described with reference to the interactivity diagram of FIG. 4B.

또 하나의 실시예에서, 프록시 서버(가령, 도 1B-1C 및 도 3A의 예시의 경우, 프록시 서버(125 또는 325))가, 데이터 요청에서 사용되는 수정된 버전의 자원 식별자를 이용하여, 새로운 데이터 또는 변경된 데이터를 찾기 위해 특정 콘텐츠 소스(도 1B-1C의 애플리케이션 서버/콘텐츠 호스트(110))를 모니터할 수 있다. 예를 들어, 캐시 디피트 메커니즘을 이용하기 위한 콘텐츠 소스 또는 식별자가 검출되는 경우, 수정된(가령, 정규화된) 식별자가 콘텐츠 소스를 폴링하도록 사용될 수 있다. 캐싱 정책 관리기(245)에 의해, 또는 더 구체적으로, 식별자 정규화기(211)의 캐시 디피트 파라미터 핸들러(212)에 의해, 수정 또는 정규화된 버전의 식별자가 프록시 서버로 전달될 수 있다. In another embodiment, a proxy server (eg, proxy server 125 or 325 in the case of the examples of FIGS. 1B-1C and 3A) uses a modified version of the resource identifier used in the data request to create a new resource identifier. Specific content sources (application server / content host 110 of FIGS. 1B-1C) may be monitored to find data or modified data. For example, if a content source or identifier is detected to use the cache defeat mechanism, a modified (eg, normalized) identifier can be used to poll the content source. The modified or normalized version of the identifier may be passed to the proxy server by the caching policy manager 245, or more specifically, by the cache default parameter handler 212 of the identifier normalizer 211.

모바일 장치/애플리케이션(가령, 모바일 애플리케이션)을 대리하여 콘텐츠 소스로 폴링하기 위해 프록시 서버에 의해 사용된 수정된 식별자는 정규화된 식별자와 동일한 것이거나, 동일한 것이 아닐 수 있다. 예를 들어, 정규화된 식별자는 제거된 변경 캐시 디피트 파라미터를 갖는 원본 식별자일 수 있으며, 반면에 수정된 식별자는 캐시를 디피트하기 위해 사용되는 파라미터를 대신하여 대체 파라미터를 이용한다(가령, 변하는 파라미터가 로컬 프록시 및/또는 프록시 서버에게 알려진 정적인 값 또는 그 밖의 다른 지정 값으로 대체됨). 수정된 파라미터는 로컬 프록시(275)에 의해 결정되고, 프록시 서버로 전달될 수 있다. 또한, 프로시 서버에 의해(가령, 도 3C의 예시에 나타난 식별자 수정기 모듈(353)에 의해) 수정된 파라미터가 생성될 수 있다. The modified identifier used by the proxy server to poll the content source on behalf of the mobile device / application (eg, mobile application) may or may not be the same as the normalized identifier. For example, the normalized identifier may be the original identifier with the change cache dip parameter removed, while the modified identifier uses substitute parameters in place of the parameters used to dip the cache (eg, changing parameters). Is replaced with a static value or other specified value known to the local proxy and / or proxy server). The modified parameter is determined by the local proxy 275 and can be passed to the proxy server. In addition, modified parameters may be generated by the procedure server (eg, by the identifier modifier module 353 shown in the example of FIG. 3C).

캐시 정책 관리기(245)의 하나의 실시예는, 애플리케이션 또는 위젯에 의해 모바일 장치(250)에서 생성되는 폴/콘텐츠 요청을 만족시키기 위해, 로컬 캐싱된 엔트리를 사용할지 여부를 결정할 수 있는 캐시 또는 연결 선택 엔진(249)을 포함한다. 예를 들어, 로컬 프록시(275) 또는 캐시 정책 관리기(245)가, 애플리케이션 서버/콘텐츠 제공자와 접속하기 위해, 모바일 장치상의 애플리케이션(가령, 모바일 애플리케이션)에 의해 이뤄진 폴링 요청을 인터셉트할 수 있다. 애플리케이션(가령, 모바일 애플리케이션)에 의해 이뤄진 요청을 만족시키도록 모바일 장치의 라디오가 활성화될 필요가 있는지 여부를 결정하기 위해, 선택 엔진(249)이 인터셉트된 요청에 대해 수신된 콘텐츠가 캐시 요소로서 로컬하게 저장됐는지 여부를 결정할 수 있다. 하나의 실시예에서, 로컬 프록시(275)는, 관련 캐싱된 콘텐츠가 존재하고 여전히 유효하다는 결정에 응답하여, 로컬 캐시로부터 캐싱된 요소를 불러와, 폴링 요청을 만든 애플리케이션(가령 모바일 애플리케이션)에 응답을 제공하여, 애플리케이션(가령, 모바일 애플리케이션)에 응답을 제공하기 위해 모바일 장치의 라디오가 활성화되지 않도록 할 수 있다. One embodiment of cache policy manager 245 is a cache or connection that may determine whether to use locally cached entries to satisfy poll / content requests generated at mobile device 250 by an application or widget. And a selection engine 249. For example, local proxy 275 or cache policy manager 245 may intercept a poll request made by an application on a mobile device (eg, mobile application) to connect with an application server / content provider. In order to determine whether the radio of the mobile device needs to be activated to satisfy a request made by an application (eg, a mobile application), the content received for the intercepted request by the selection engine 249 is local to the cache element. Can be determined whether or not it is stored. In one embodiment, local proxy 275 responds to determining that the associated cached content is present and still valid, and retrieves the cached element from the local cache and responds to the application that made the polling request (eg, a mobile application). Can be provided such that the radio of the mobile device is not activated to provide a response to the application (eg, mobile application).

하나의 실시예에서, 예를 들어, 캐시 질의 모듈(229)을 이용하여, 식별자의 정규화된 버전, 또는 식별자의 정규화된 버전의 해시 값을 이용해 (도 2A에 도시된) 로컬 캐시(285)에 저장된 캐싱된 요소가 식별될 수 있다. 동일한 유형의 캐시 디피트를 이용하는 그 밖의 다른 요청을 만족시키기 위해 장래에 관련 캐싱된 요소가 식별되고 불러와 질 수 있도록, 캐시 디피트 파라미터가 제거, 또는 그 밖의 다른 방식으로 대체된 정규화된 식별자와 함께, 캐싱된 요소가 저장될 수 있다. 예를 들어, 추후 요청에서 사용되는 식별자가 동일한 캐시 디피트 파라미터를 이용하는 중이라고 판단될 때, 데이터 요청을 만족시키기 위해, 식별자의 정규화된 버전이 생성되고, 모바일 장치 캐시에 저장된 캐싱된 응답을 식별하기 위해 사용될 수 있다. 식별자 정규화기(211)의 해시 엔진(213)에 의해, 식별자의 해시 값, 또는 정규화된 식별자의 해시 값이 생성될 수 있다. In one embodiment, for example, using the cache query module 229, the local cache 285 (shown in FIG. 2A) using the fully qualified version of the identifier, or the hash value of the normalized version of the identifier, may be used. Stored cached elements can be identified. With a normalized identifier that has been removed, or otherwise replaced, by the cache bite parameter so that the associated cached element can be identified and retrieved in the future to satisfy other requests using the same type of cache bite. Together, cached elements can be stored. For example, when it is determined that the identifier used in a later request is using the same cache default parameter, to satisfy the data request, a normalized version of the identifier is generated and identifying a cached response stored in the mobile device cache. Can be used for By the hash engine 213 of the identifier normalizer 211, a hash value of the identifier, or a hash value of the normalized identifier, may be generated.

도 2D는 애플리케이션 거동 및/또는 사용자 활동을 기초로 하여, 모바일 트래픽 카테고리화 및 정책 구현을 더 수행할 수 있는, 도 2A의 예에서 나타난 로컬 프록시(275)의 추가 구성요소의 예를 도시하는 블록도를 도시한다.FIG. 2D is a block illustrating an example of additional components of the local proxy 275 shown in the example of FIG. 2A, which may further perform mobile traffic categorization and policy implementation based on application behavior and / or user activity. Shows a figure.

로컬 프록시(275)의 이 실시예에서, 사용자 활동 모듈(215)은, 사용자 활동 추적기(215a), 사용자 활동 예측 엔진(215b), 및/또는 사용자 기대 관리기(user expectation manager)(215c)를 더 포함한다. 애플리케이션 거동 검출기(236)는 우선순위화 엔진(241a), 시간 중요도 검출 엔진(241b), 애플리케이션 상태 카테고리화기(application state categorizer)(241c), 및/또는 애플리케이션 트래픽 카테고리화기(241d)를 더 포함할 수 있다. 로컬 프록시(275)는 백라이트 검출기(219) 및/또는 네트워크 설정 선택 엔진(251)을 더 포함할 수 있다. 네트워크 설정 선택 엔진(251)은, 무선 세대 표준 선택기(wireless generation standard selector)(251a), 데이터 전송 속도 특정기(data rate specifier)(251b), 액세스 채널 선택 엔진(251c), 및/또는 액세스 포인트 선택기를 더 포함할 수 있다. In this embodiment of the local proxy 275, the user activity module 215 further adds a user activity tracker 215a, a user activity prediction engine 215b, and / or a user expectation manager 215c. Include. The application behavior detector 236 may further include a prioritization engine 241a, a time criticality detection engine 241b, an application state categorizer 241c, and / or an application traffic categorizer 241d. Can be. The local proxy 275 may further include a backlight detector 219 and / or a network configuration selection engine 251. The network configuration selection engine 251 may include a wireless generation standard selector 251a, a data rate specifier 251b, an access channel selection engine 251c, and / or an access point. It may further include a selector.

하나의 실시예에서, 애플리케이션 거동 검출기(236)는, 예를 들어, 애플리케이션 상태 카테고리화기(241c) 및/또는 트래픽 카테고리화기(241d)를 통해, 트래픽이 발원된, 또는 상기 트래픽이 전달되는 모바일 장치(250) 상의 애플리케이션의 활동 상태(activity state)를 검출, 결정, 식별, 또는 추론할 수 있다. 전경 애플리케이션 vs. 배경 애플리케이션의 트래픽이 서로 다르게 핸들링될 수 있기 때문에, (애플리케이션 상태 카테고리화기(241c)를 통해) 애플리케이션이 모바일 장치상에서 전경(foreground) 상태에 있는지 배경(background) 상태에 있는지에 따라, 활동 상태가 결정될 수 있다. In one embodiment, the application behavior detector 236 is a mobile device from which traffic originated, or through which the traffic is delivered, for example, via an application state categorizer 241c and / or a traffic categorizer 241d. The activity state of the application on 250 can be detected, determined, identified, or inferred. Foreground application vs. Since the traffic of the background application may be handled differently, the activity state may be determined depending on whether the application is in the foreground or background state on the mobile device (via the application state categorizer 241c). Can be.

하나의 실시예에서, 휴리스틱(heuristic)의 확신도(certainty)의 레벨을 이용해, 또는 모바일 장치(250)의 백라이트 상태를 기초로 하여, 또는 모바일 장치상의 그 밖의 다른 소프트웨어 에이전트 또는 하드웨어 센서(제한되지 않는 예를 들면, 저항성 센서, 용량성 센서, 주변광 센서, 모션 센서, 터치 센서 등)에 의해, 활동 상태가 판단, 검출, 식별, 또는 추론될 수 있다. 일반적으로, 백라이트가 켜져 있는 경우, 트래픽은 액티브 상태이거나 전경 상태인 애플리케이션으로부터 생성되는 것이라고 취급되거나 판단될 수 있거나, 트래픽은 상호대화형이다. 덧붙이자면, 백라이트가 켜져 있는 경우, 트래픽은 사용자 상호대화 또는 사용자 활동으로부터의 트래픽, 또는 일정 시간 프레임 내에서 사용자가 기대 중인 데이터를 포함하는 트래픽인 것으로 취급되거나, 판단될 수 있다. In one embodiment, using a level of heuristic certainty, or based on the backlight state of the mobile device 250, or other software agent or hardware sensor on the mobile device (not limited) Non-resistance, capacitive sensor, ambient light sensor, motion sensor, touch sensor, etc.) may determine, detect, identify, or infer an activity state. In general, when the backlight is on, traffic may be treated or determined to be generated from an application that is active or in the foreground, or the traffic is interactive. In addition, when the backlight is on, the traffic may be treated or determined to be traffic from user interaction or user activity, or traffic containing data the user is expecting within a certain time frame.

하나의 실시예에서, 트래픽이 상호대화형 트래픽(interactive traffic)인지 유지관리형 트래픽(maintenance traffic)인지를 기초로 하여, 활동 상태가 결정된다. 상호대화 트래픽은 사용자 활동/애플리케이션과의 상호대화로부터 직접 생성된 응답 및 요청으로부터의 트랜잭션을 포함할 수 있으며, 사용자가 수신하기 위해 대기 중이거나 기대 중인 콘텐츠 또는 데이터를 포함할 수 있다. 유지관리형 트래픽은 사용자에 의해 직접 검출되지 않는 애플리케이션의 기능을 지지하기 위해 사용될 수 있다. 또한 유지관리형 트래픽은, 사용자 동작(action)에 응답하여 이뤄질 수 있지만 사용자가 적극적으로 응답을 기다리거나 기대하지 않는 액션 또는 트랜잭션을 포함할 수 있다. In one embodiment, the activity state is determined based on whether the traffic is interactive traffic or maintenance traffic. Interaction traffic may include responses from transactions and requests generated directly from interactions with user activities / applications, and may include content or data that a user is waiting or expecting to receive. Maintenance traffic may be used to support the functionality of an application that is not directly detected by the user. Maintenance traffic may also include actions or transactions that may be made in response to a user action but that the user does not actively wait for or expect a response.

예를 들어, 모바일 장치(250)에서의 메일 또는 메시지 삭제 동작이, 이에 대응하는 메일 또는 메시지를 서버에서 삭제하라는 요청을 생성하지만, 일반적으로 사용자는 응답을 기다리지 않는다. 따라서 요청이 유지관리형 트래픽, 또는 (가령, 우선순위화 엔진(241a)에 의해) 더 낮은 우선순위를 갖는 트래픽으로 카테고리화될 수 있거나, 및/또는 (시간 중요도 검출 엔진(214b)에 의해) 시간-중요성(time-critical)이 아니라고 카테고리화될 수 있다.For example, a mail or message deletion operation at mobile device 250 generates a request to delete the corresponding mail or message from the server, but generally the user does not wait for a response. Thus, the request may be categorized as maintenance traffic, or traffic having a lower priority (eg, by prioritization engine 241a), and / or (by time importance detection engine 214b). It can be categorized as not time-critical.

이와 대조적으로, 모바일 장치(250)에서 사용자에 의해 개시되는 메일 '읽기' 또는 메시지 '읽기' 요청은 '상호대화형 트래픽'이라고 카테고리화될 수 있는데, 왜냐하면, 일반적으로 사용자가 메시지나 메일을 읽기를 요청할 때 콘텐츠 또는 데이터를 액세스하기를 기다리기 때문이다. 마찬가지로, 이러한 요청은 (가령, 우선순위화 엔진(241a)에 의해) 더 높은 우선순위를 갖는 것 및/또는 (가령, 시간 중요도 검출 엔진(241b)에 의해) 시간 중요성/시간 민감성을 갖는 것으로 카테고리화될 수 있다. In contrast, mail 'read' or message 'read' requests initiated by the user on mobile device 250 may be categorized as 'interactive traffic', because the user typically reads the message or mail. This is because it waits to access content or data when requesting. Similarly, such requests may be categorized as having a higher priority (eg, by prioritization engine 241a) and / or having time importance / time sensitivity (eg, by time importance detection engine 241b). Can be converted.

시간 중요도 검출 엔진(241b)은 모바일 장치(250)로부터 전송된, 또는 호스트 서버(가령, 호스트(300)) 또는 애플리케이션 서버(가령, 앱 서버(app server)/콘텐츠 소스(110))로부터 모바일 장치로 전송된 트래픽에 포함된 데이터의 시간 민감도를 판단, 식별, 추론할 수 있다. 예를 들어, 시간 민감형 데이터는, 상태 업데이트, 주식 정보 업데이트, IM 프레슨스 정보(IM presence information), 전자메일 메시지 또는 그 밖의 다른 메시지, 모바일 게임 애플리케이션으로부터 발생된 동작, 웹페이지 요청, 위치 업데이트 등을 포함할 수 있다. 콘텐츠 또는 요청의 속성에 따라, 시간 민감형 또는 시간 중요형이 아닌 데이터는, 메시지 삭제 요청, 읽음 표시, 또는 편집된 동작, 애플리케이션-특정 동작(가령, 친구 추가, 친구 삭제 요청), 특정 유형의 메시지 또는 속성을 빈번하게 변경하지 않는 그 밖의 다른 정보 등을 포함할 수 있다. 일부 경우, 데이터가 시간 중요형이 아닐 때, 트래픽이 통과하도록 하는 타이밍이, 추가 데이터가 모바일 장치(250)로부터 전송될 필요가 있을 때를 기초로 설정된다. 예를 들어, 트래픽 성형 엔진(255)은, (가령, 정렬 모듈(256) 및/또는 일괄처리 모듈(257)을 이용해) 모바일 장치 라디오의 한 번의 전원 켜기 이벤트로 다 함께 전송될 하나 이상의 후속하는 트랜잭션과 함께 트래픽을 정렬할 수 있다. 또한 정렬 모듈(256)은 동일한 호스트 서버로 전달되는 폴링 요청 발생을 시간 상 가깝도록 정렬할 수 있는데, 이들 요청이 동일한 데이터로 응답될 가능성이 높기 때문이다. The time importance detection engine 241b is transmitted from the mobile device 250 or from the host server (eg, host 300) or application server (eg, app server / content source 110). Determining, identifying, and inferring the time sensitivity of data included in the transmitted traffic. For example, time sensitive data may include status updates, stock information updates, IM presence information, email messages or other messages, actions from mobile game applications, web page requests, location updates. And the like. Depending on the nature of the content or request, data that is not time-sensitive or time-sensitive may include a message deletion request, read mark, or edited action, application-specific action (eg, friend add, friend delete request), And other information that does not change the message or attributes frequently. In some cases, when the data is not time critical, the timing for allowing traffic to pass through is set based on when additional data needs to be sent from the mobile device 250. For example, the traffic shaping engine 255 may include one or more subsequent to be sent together in one power-on event of the mobile device radio (eg, using the alignment module 256 and / or batch module 257). You can align traffic with a transaction. The sorting module 256 can also sort polling requests that are forwarded to the same host server in close proximity, since these requests are likely to be answered with the same data.

이를 대체하여, 또는 이와 조합되어, (가령, 사용자 활동 모듈(215)을 통해) 모바일 장치(250)에서의 사용자 활동을 평가, 판단, 산정, 추론, 식별하는 것으로부터 활동 상태가 결정될 수 있다. 예를 들어, 사용자 활동 추적기(215a)를 이용해 사용자 활동이 직접 검출되고 추적될 수 있다. 그 후, 이로부터 야기된 트래픽이, 추후 프로세싱을 위해 적절하게 카테고리화되어, 핸들링 정책을 결정할 수 있다. 덧붙이자면, 사용자 활동 예측 엔진(215b)에 의해, 사용자 활동이 예측 또는 예상될 수 있다. 사용자 활동을 예측하거나 사용자 활동을 예상함으로써, 예측 후 발생하는 트래픽이 사용자 활동으로부터 야기된 것으로 취급되고, 전송 정책을 결정하기 위해 적절하게 카테고리화될 수 있다. Alternatively, or in combination with this, the activity status may be determined from evaluating, determining, estimating, inferring, and identifying user activity at mobile device 250 (eg, via user activity module 215). For example, user activity tracker 215a may be used to directly detect and track user activity. The traffic resulting therefrom can then be appropriately categorized for later processing to determine the handling policy. In addition, user activity prediction engine 215b may predict or predict user activity. By predicting user activity or anticipating user activity, traffic occurring after the prediction can be treated as resulting from user activity and can be appropriately categorized to determine the delivery policy.

덧붙이자면, 사용자 활동 모듈(215)은 또한 (가령, 사용자 기대 관리기(215c)를 통해 및/또는 활동 추적기(215) 및/또는 예측 엔진(215b)과 결합하여) 사용자 기대를 관리함으로써, 일반적으로 사용자 기대가 충족되도록 트래픽이 적절하게 카테고리화됨을 보장할 수 있다. 예를 들어, 사용자에 의해 개시되는 동작이 (가령, 기대 관리기(215)에 의해) 분석되어, 사용자가 응답을 기다릴 것인지 여부를 판단 또는 추론할 수 있다. 사용자가 응답을 기다린다고 판단된 경우, 이러한 응답이나 동작을 수신할 때 사용자가 원치 않는 지연을 경험하지 않도록, 이러한 트래픽은 정책에 따라 핸들링되어야 한다.In addition, the user activity module 215 also generally manages user expectations (eg, via the user expectations manager 215c and / or in combination with the activity tracker 215 and / or the prediction engine 215b), thereby generally allowing the user activity module 215 to manage user expectations. It can ensure that traffic is properly categorized so that user expectations are met. For example, actions initiated by the user may be analyzed (eg, by the expectation manager 215) to determine or infer whether the user is waiting for a response. If it is determined that the user is waiting for a response, this traffic must be handled in accordance with the policy so that the user does not experience an unwanted delay when receiving such a response or action.

하나의 실시예에서, 무선 네트워크에서 모바일 장치와 호스트 서버 사이에 트래픽을 전송하는 데 사용되기 위해 진보된 세대 무선 표준 네트워크가, 트래픽이 발원되거나 전달되는 모바일 장치의 애플리케이션의 활동 상태를 기초로 선택된다. 사용자 상호대화, 사용자 활동의 결과로서 발생되는 트래픽, 또는 사용자가 기대하거나 대기 중인 데이터를 포함하는 트래픽을 핸들링하기 위해 진보된 기술 표준, 가령, 3G, 3.5G, 3G+, 4G, 또는 LTE 네트워크가 선택될 수 있다. 또한, 전경 활동에 응답하는 모바일 장치로 전달되는 트래픽에 포함된 데이터를 송신하기 위해, 진보된 세대 무선 표준 네트워크가 선택될 수 있다.In one embodiment, an advanced generation wireless standard network is selected based on the activity state of the application of the mobile device from which the traffic originates or is forwarded for use in transmitting traffic between the mobile device and the host server in the wireless network. . Selected by advanced technical standards, such as 3G, 3.5G, 3G +, 4G, or LTE networks, to handle traffic that includes user interaction, traffic generated as a result of user activity, or data that users expect or are waiting for Can be. In addition, an advanced generation wireless standard network may be selected to transmit the data contained in the traffic delivered to the mobile device responsive to the foreground activity.

트래픽을 카테고리화하고, 모바일 트래픽에 대한 전송 정책을 정의할 때, 모바일 장치와 프록시 서버(325) 및/또는 애플리케이션 서버(가령, 앱 서버(app server)/호스트(110)) 사이에 트래픽을 전송하는 데 네트워크 설정이 모바일 장치(250) 상에서 (가령, 네트워크 설정 선택 엔진(251)에 의해) 사용되기 위해 선택될 수 있다. 선택된 네트워크 설정은, 애플리케이션 활동 상태(가령, 배경 또는 전경 트래픽), 애플리케이션 트래픽 카테고리(가령, 상호대화형 또는 유지관리형 트래픽), 데이터/콘텐츠의 임의의 우선순위, 시간 민감도/중요도와 관련된 애플리케이션 거동 모듈(236)에 의해 수집된 정보를 기초로 결정될 수 있다. When categorizing traffic and defining a delivery policy for mobile traffic, the traffic is transferred between the mobile device and the proxy server 325 and / or the application server (e.g., app server / host 110). The network settings may be selected for use on the mobile device 250 (eg, by the network setting selection engine 251). The network settings selected include application activity status (e.g. background or foreground traffic), application traffic categories (e.g. interactive or maintenance traffic), any priority of data / content, application behavior related to time sensitivity / importance. It may be determined based on the information collected by module 236.

네트워크 설정 선택 엔진(2510)은 세대 표준(가령, 무선 세대 표준 선택기(251a)를 통해), 데이터 전송 속도(가령, 데이터 전송 속도 특정기(251b)를 통해), 액세스 채널(가령, 액세스 채널 선택 엔진(251c), 및/또는 액세스 포인트(가령, 액세스 포인트 선택기(251d)를 통해) 중 하나 이상을 임의의 조합으로 선택하고 특정할 수 있다. The network setting selection engine 2510 may include a generation standard (eg, via wireless generation standard selector 251a), a data transmission rate (eg, via data transmission rate specifier 251b), an access channel (eg, access channel selection). One or more of the engine 251c, and / or the access point (eg, via the access point selector 251d) may be selected and specified in any combination.

예를 들어, 활동 상태가 사용자와 상호대화 중이거나, 모바일 장치상에서 전경 상태일 때, 트래픽에 대해 더 진보된 세대(가령, 3G, LTE, 또는 4G, 또는 그 이상)가 선택되거나 특정될 수 있다. 이와 달리, 다음 중 하나 이상이 검출될 때, 트래픽에 대해 더 낡은 세대 표준(가령, 2G, 2.5G, 또는 3G, 또는 그 이하)이 특정될 수 있다: 애플리케이션이 사용자와 상호대화 중이 아닌 상황, 애플리케이션이 모바일 장치상에서 배경에서 실행 중인 상황, 또는 트래픽에 포함된 데이터가 시간 중요형이 아니거나, 그 밖의 다른 방식으로 더 낮은 우선순위를 갖는다고 판단된 상황.For example, when an activity state is interacting with a user or in the foreground on a mobile device, a more advanced generation (eg, 3G, LTE, or 4G, or more) may be selected or specified for the traffic. . Alternatively, older generation standards (eg, 2G, 2.5G, or 3G, or less) may be specified for traffic when one or more of the following are detected: the situation when the application is not interacting with the user, The situation where the application is running in the background on a mobile device, or when the data contained in the traffic is not time critical or otherwise determined to have a lower priority.

마찬가지로, 다음 중 하나 이상이 검출될 때, 트래픽에 대하여 더 느린 데이터 전송 속도를 갖는 네트워크 설정이 특정될 수 있다: 애플리케이션이 사용자와 상호대화하는 중이 아닌 상황, 애플리케이션이 모바일 장치상의 배경에서 실행 중인 상황, 또는 트래픽에 포함된 데이터가 시간 중요형이 아닌 상황. 액세스 채널(가령, 순방향 액세스 채널 또는 전용 채널)이 특정될 수 있다. Similarly, network settings with slower data rates for traffic may be specified when one or more of the following are detected: the situation where the application is not interacting with the user, the situation where the application is running in the background on the mobile device. , Or when the data contained in the traffic is not time critical. An access channel (eg, forward access channel or dedicated channel) can be specified.

도 3A는 자원 보존을 위해, 무선 네트워크에서 트래픽을 관리하는 호스트 서버(300)에 상주하는 분산 프록시 및 캐시 시스템에서의 서버 측 구성요소의 일례를 도시하는 블록도를 도시한다. 서버 측 프록시(또는 프록시 서버(325))는 추가로, 애플리케이션 거동, 콘텐츠 우선순위, 사용자 활동, 및/또는 사용자 기대를 기초로 하여, 모바일 트래픽을 카테고리화, 및/또는 전달 정책(delivery policy)을 이행할 수 있다. 3A shows a block diagram illustrating an example of server-side components in a distributed proxy and cache system residing on a host server 300 that manages traffic in a wireless network for resource conservation. The server side proxy (or proxy server 325) may further categorize and / or deliver policy of mobile traffic based on application behavior, content priority, user activity, and / or user expectations. Can be implemented.

호스트 서버(300)는, 예를 들어, 네트워크 인터페이스(308) 및/또는 하나 이상의 레포지토리(312, 314 및 316)를 일반적으로 포함한다. 서버(300)는 임의의 휴대용/모바일 또는 비-휴대용 장치, 서버, 컴퓨터의 클러스터, 및/또는 임의의 유선 또는 무선 네트워크(가령, WiFi, 셀룰러, 블루투스 등)를 포함하는 네트워크를 통해 데이터 요청을 만족시키기 위한 신호를 수신하거나 송신할 수 있는 그 밖의 다른 유형의 프로세싱 유닛(가령, 도 16의 예시의 경우, 임의의 개수의 기계)일 수 있다.Host server 300 generally includes a network interface 308 and / or one or more repositories 312, 314, and 316, for example. Server 300 may request data over a network including any portable / mobile or non-portable device, server, cluster of computers, and / or any wired or wireless network (e.g., WiFi, cellular, Bluetooth, etc.). It may be another type of processing unit (eg, any number of machines in the example of FIG. 16) capable of receiving or transmitting a signal to satisfy.

네트워크 인터페이스(308)는 네트워킹 모듈 또는 장치를 포함할 수 있으며, 상기 네트워킹 모듈 또는 장치에 의해, 서버(300)가 호스트 서버(300) 외부의 개체를 갖는 네트워크 내 데이터를, 상기 호스 및 외부 개체에 의해 지원되는 임의의 공지된, 및/또는 종래의 통신 프로토콜을 통해 조정(mediate)할 수 있다. 구체적으로, 네트워크 인터페이스(308)에 의해, 서버(300)는 모바일 전화 장치(350) 및/또는 하나 이상의 애플리케이션 서버/콘텐츠 제공자(310)를 포함하는 복수의 장치와 통신할 수 있다. The network interface 308 may include a networking module or device, whereby the server 300 may send data in the network having objects outside the host server 300 to the hoses and external entities. Mediated via any known and / or conventional communication protocol supported by the present invention. Specifically, the network interface 308 allows the server 300 to communicate with a plurality of devices, including the mobile telephone device 350 and / or one or more application server / content providers 310.

호스트 서버(300)는 장치와의 연결에 대한 정보(가령, 네트워크 특성, 조건, 연결 유형 등)를 연결 메타데이터 레포지토리(312)에 저장할 수 있다. 덧붙이자면, 제3자 애플리케이션 또는 콘텐츠 제공자에 대한 임의의 정보가 또한 레포지토리(312)에 저장될 수 있다. 호스트 서버(300)는 장치에 대한 정보(가령, 하드웨어 능력, 속성, 장치 설정, 장치 언어, 네트워크 능력, 제조업체, 장치 모델, OS, OS 버전 등)를 장치 정보 레포지토리(314)에 저장할 수 있다. 덧붙이자면, 호스트 서버(300)는 네트워크 제공자 및 다양한 네트워크 서비스 영역에 대한 정보를 네트워크 서비스 제공자 레포지토리(316)에 저장할 수 있다. The host server 300 may store information (eg, network characteristics, conditions, connection types, etc.) about the connection with the device in the connection metadata repository 312. In addition, any information about the third party application or content provider may also be stored in the repository 312. The host server 300 may store information about the device (eg, hardware capability, attributes, device settings, device language, network capability, manufacturer, device model, OS, OS version, etc.) in the device information repository 314. In addition, the host server 300 may store information about the network provider and various network service areas in the network service provider repository 316.

네트워크 인터페이스(308)에 의해 활성화되는 통신은 장치(350)와의 동시 연결(simultaneous connection)(가령, 셀룰러 연결) 및/또는 콘텐츠 서버/제공자(310)와의 연결(가령, 유/무선, HTTP, 인터넷 연결, LAN, WiFi 등)을 가능하게 하여, 네트워크 자원 이용을 최적화하기 위해 장치(350)와 콘텐츠 제공자(310) 간의 트래픽을 관리하거나, 및/또는 서비스받는 장치(350) 상의 전력(배터리) 소모량을 보존할 수 있다. 상기 호스트 서버(300)는 상이한 네트워크 서비스 제공자에 의해 서비스되는, 및/또는 동일/상이한 네트워크 서비스 영역에서 서비스되는 모바일 장치(350)와 통신할 수 있다. 호스트 서버(300)는 다양한 유형 또는 레벨의 모바일 능력(mobile capability)(가령, 1G, 2G, 2G 과도세대(2.5G, 2.75G), 3G(IMT-2000), 3G 과도세대(3.5G, 3.75G, 3.9G), 4G(IMT-advanced) 등)을 갖는 장치(350)를 운영하고, 상기 장치(350)와 호환된다. The communication activated by the network interface 308 may be a simultaneous connection (eg, a cellular connection) with the device 350 and / or a connection with the content server / provider 310 (eg, wired / wireless, HTTP, the Internet). Connection, LAN, WiFi, etc.) to manage traffic between device 350 and content provider 310 and / or consume power (battery) on serviced device 350 to optimize network resource usage Can be preserved. The host server 300 may communicate with a mobile device 350 serviced by different network service providers and / or serviced in the same / different network service area. The host server 300 may have various types or levels of mobile capabilities (eg, 1G, 2G, 2G transitional generations (2.5G, 2.75G), 3G (IMT-2000), 3G transitional generations (3.5G, 3.75). G, 3.9G), 4G (IMT-advanced, etc.) operating a device 350, and is compatible with the device 350.

일반적으로, 네트워크 인터페이스(308)는, 라우터, 액세스 포인트, 무선 라우터, 스위치, 멀티레이어 스위치, 프로토콜 변환기, 게이트웨이, 브리지, 브리지 라우터, 허브, 디지털 미디어 수신기, 및/또는 리피터를 통해 연결되거나 연결되지 않는지의 여부에 무관하게, 네트워크 어댑터 카드, 무선 네트워크 인터페이스 카드(가령, SMS 인터페이스, WiFi 인터페이스, 다양한 세대의 모바일 통신 표준(1G, 2G, 3G, 3.5G, 4G형 네트워크 가령, LTE, WiMAX, 등)용 인터페이스, 블루투스(Bluetooth), WiFi, 또는 그 밖의 다른 임의의 네트워크 중 하나 이상을 포함할 수 있다. In general, network interface 308 may or may not be connected through a router, access point, wireless router, switch, multilayer switch, protocol converter, gateway, bridge, bridge router, hub, digital media receiver, and / or repeater. Whether or not, network adapter cards, wireless network interface cards (e.g., SMS interface, WiFi interface, mobile communication standards of various generations (1G, 2G, 3G, 3.5G, 4G type networks such as LTE, WiMAX, etc.) Interface), Bluetooth, WiFi, or any other network.

호스트 서버(300)는 프록시 서버(325) 및 서버 캐시(335)를 포함할 수 있는 분산 프록시 및 캐시 시스템의 서버 측 구성요소를 더 포함할 수 있다. 하나의 실시예에서, 프록시 서버(325)는 HTTP 액세스 엔진(345), 캐시 정책 관리기(355), 프록시 제어기(365), 트래픽 성형 엔진(375), 새로운 데이터 검출기(347) 및/또는 연결 관리기(395)를 포함할 수 있다. The host server 300 may further include server-side components of a distributed proxy and cache system that may include a proxy server 325 and a server cache 335. In one embodiment, proxy server 325 may include HTTP access engine 345, cache policy manager 355, proxy controller 365, traffic shaping engine 375, new data detector 347, and / or connection manager. 395.

HTTP 액세스 엔진(345)은 하트비트 관리기(heartbeat manager)(398)를 더 포함할 수 있고, 프록시 제어기(365)는 데이터 무효화기 모듈(368)을 더 포함할 수 있으며, 트래픽 성형 엔진(375)은 제어 프로토콜(376) 및 일괄처리 모듈(377)을 더 포함할 수 있다. 이보다 많거나 더 적은 구성요소/모듈/엔진이 프록시 서버(325) 및 각각의 설명된 구성요소에 포함될 수 있다. The HTTP access engine 345 may further include a heartbeat manager 398, the proxy controller 365 may further include a data invalidator module 368, and the traffic shaping engine 375. May further include a control protocol 376 and a batch module 377. More or fewer components / modules / engines may be included in proxy server 325 and each described component.

본원에서 사용될 때, "모듈", "관리기", "핸들러", "검출기", "인터페이스", "제어기", "정규화기", "생성기", "무효화기", 또는 "엔진"은 범용, 전용, 또는 공용 프로세서를 포함하고, 일반적으로, 프로세서에 의해 실행되는 펌웨어 또는 소프트웨어 모듈을 포함한다. 구현예 특정적 고려사항, 또는 그 밖의 다른 고려사항에 따라서, 모듈, 관리기, 핸들러, 검출기, 인터페이스, 제어기, 정규화기, 생성기, 무효화기, 또는 엔진은 중앙 집중형이거나, 그들의 기능이 분산될 수 있다. 모듈, 관리기, 핸들러, 검출기, 인터페이스, 제어기, 정규화기, 생성기, 무효화기, 또는 엔진은 범용 또는 특수용 하드웨어, 펌웨어, 또는 프로세서에 의해 실행되기 위한 컴퓨터 판독형 (저장) 매체에 내장된 소트프웨어를 포함할 수 있다. 본원에서 사용될 때, 컴퓨터 판독형 매체, 또는 컴퓨터 판독형 저장 매체는 법령(가령, 미국에서는, 35 U.S.C. 101)으로 명시된 모든 매체를 포함하며, 컴퓨터 판독형(저장) 매체를 포함하는 청구항이 유효하기 위한 범위까지 모든 비법정 매체는 특정하게 배제하는 것으로 의도된다. 알려진 법정 컴퓨터 판독형 매체는 하드웨어(가령, 레지스터, 랜덤 액세스 메모리(RAM), 비휘발성(NV) 저장장치 등)를 포함하지만, 이러한 하드웨어로 반드시 한정되는 것은 아니다. As used herein, "module", "manager", "handler", "detector", "interface", "controller", "normalizer", "generator", "validator", or "engine" is general purpose, It includes a dedicated or shared processor, and generally includes a firmware or software module executed by the processor. Depending on implementation specific considerations or other considerations, modules, managers, handlers, detectors, interfaces, controllers, normalizers, generators, invalidators, or engines may be centralized or their functionality distributed. have. A module, manager, handler, detector, interface, controller, normalizer, generator, invalidator, or engine includes software embedded in computer-readable (storage) media for execution by general or special purpose hardware, firmware, or processor. can do. As used herein, computer readable media, or computer readable storage media, includes all media specified by legislation (eg, 35 USC 101 in the United States), and claims including computer readable (storage) media are effective. All non-legal media, to the extent intended, are specifically intended to be excluded. Known legal computer readable media include, but are not necessarily limited to, hardware (eg, registers, random access memory (RAM), nonvolatile (NV) storage, etc.).

애플리케이션 서버 또는 콘텐츠 제공자(310)에게 애플리케이션 또는 콘텐츠 요청을 하는 장치(가령, 모바일 장치(350)의 예에서, 상기 요청이 인터셉트되고, 장치(350) 및 애플리케이션 서버/콘텐츠 제공자(310)로 연결되어 있는 프록시 서버(325)로 라우팅될 수 있다. 구체적으로, 프록시 서버는 모바일 장치(350)의 로컬 프록시(가령, 도 1 및 2의 예시의 경우, 프록시(175 및 275))와 통신할 수 있고, 일부 경우 추가 프로세싱을 위해, 그리고 필요한 경우, 데이터 요청에 대해 응답하기 위해 애플리케이션 서버/콘텐츠 서버(310)로의 송신을 위해, 로컬 프록시는 데이터 요청을 프록시 서버(325)로 포워딩한다. A device making an application or content request to an application server or content provider 310 (eg, in the example of mobile device 350, the request is intercepted and connected to device 350 and application server / content provider 310) The proxy server 325. Specifically, the proxy server may communicate with a local proxy of the mobile device 350 (eg, proxies 175 and 275 in the example of FIGS. 1 and 2) and The local proxy forwards the data request to the proxy server 325, in some cases for further processing, and if necessary, for transmission to the application server / content server 310 to respond to the data request.

이러한 구성에서, 호스트(300), 또는 호스트 서버(300) 내 프록시 서버(325)는, 네트워크 및 장치 자원의 이용을 최적화하는 방식으로 장치와의 통신을 조절할 때 로컬 프록시에 의해 제공되는 지능적 정보(intelligent information)를 이용할 수 있다. 예를 들어, 프록시 서버(325)는 장치(350)에서의 사용자 활동의 특성을 식별하여, 통신 빈도(communication frequency)를 수정할 수 있다. 사용자 활동의 특성은, 예를 들어, 장치(350) 상의 로컬 프록시에 의해 수집된 정보를 통해, 프록시 제어기(365) 내 활동/거동 인지 모듈(activity/behavior awareness module)(366)에 의해 결정될 수 있다. In this configuration, the host 300, or proxy server 325 in the host server 300, may provide intelligent information provided by the local proxy when coordinating communication with the device in a manner that optimizes the use of network and device resources. intelligent information) can be used. For example, the proxy server 325 may identify characteristics of user activity at the device 350 to modify the communication frequency. Characteristics of user activity may be determined by activity / behavior awareness module 366 in proxy controller 365, for example, via information collected by a local proxy on device 350. have.

하나의 실시예에서, 통신 빈도는, 예를 들어, 프록시 서버(325)의 연결 관리기(395)에 의해 제어되어, 장치(350)로의 콘텐츠의 푸시 빈도 또는 업데이트를 조절할 수 있다. 예를 들어, 사용자 활동의 특성이 사용자가 비활성(inactive) 상태라고 가리키는 경우, 연결 관리기(395)에 의해 푸시 빈도가 감소할 수 있다. 하나의 실시예에서, 사용자 활동의 특성이, 비활성 상태의 주기 후, 사용자가 활성 상태라고 가리킬 때, 연결 관리기(395)는, 장치(350)로의 감소된 통신 빈도의 결과로서 버퍼링된 데이터를 전송하기 위해 장치(350)와의 통신 빈도를 조절할 수 있다.In one embodiment, the communication frequency may be controlled, for example, by the connection manager 395 of the proxy server 325 to adjust the frequency or update of the push of content to the device 350. For example, if the nature of the user activity indicates that the user is in an inactive state, the push frequency may be reduced by the connection manager 395. In one embodiment, when the nature of user activity indicates that the user is active after a period of inactivity, the connection manager 395 sends buffered data as a result of the reduced frequency of communication to the device 350. The frequency of communication with the device 350 may be adjusted.

덧붙이자면, 프록시 서버(325)는 다양한 요청, 트랜잭션, 세션, 애플리케이션, 및/또는 특정 이벤트의 우선순위 인지(priority awareness)를 포함한다. 이러한 인지는 장치(350) 상의 로컬 프록시에 의해 결정되고 프록시 서버(325)로 제공될 수 있다. 일반적으로, 프록시 서버(325)의 우선순위 인지 모듈(367)이 다양한 이벤트 또는 애플리케이션의 우선순위(가령, 시간-중요도, 시간-민감도, 등)를 평가할 수 있고, 추가로, 우선순위 인지 모듈(367)이 장치(350)의 로컬 프록시들에 의해 결정된 우선순위를 추적할 수 있다. In addition, proxy server 325 includes priority awareness of various requests, transactions, sessions, applications, and / or specific events. This acknowledgment may be determined by a local proxy on device 350 and provided to proxy server 325. In general, priority recognition module 367 of proxy server 325 may evaluate the priority of various events or applications (eg, time-importance, time-sensitive, etc.), and further, priority recognition module ( 367 may track the priority determined by the local proxies of the device 350.

하나의 실시예에서, 우선순위 인지를 통해, 연결 관리기(395)는 장치(350)와의 서버(300)의 통신 빈도를 더 수정할 수 있다(가령, 라디오 제어기(396)에 의해 제어될 때 라디오를 사용하는 것). 예를 들어, 서버(300)가 장치(350)에서 기준을 충족하는 중요도/우선순위 레벨의 데이터 또는 업데이트가 전송 가능해질 때를 통지할 수 있고, 따라서 이미 사용 중이 아닌 경우 라디오의 사용을 요청할 수 있다.In one embodiment, with priority recognition, the connection manager 395 may further modify the frequency of communication of the server 300 with the device 350 (eg, when controlled by the radio controller 396). To use). For example, the server 300 may notify the device 350 when a data or update of importance / priority level that meets the criteria is available for transmission, thus requesting the use of the radio if it is not already in use. have.

하나의 실시예에서, 프록시 서버(325)는 이벤트(가령, 트랜잭션, 콘텐츠, 서버/제공자(310)로부터 수신된 데이터)의 복수의 발생을 검출할 수 있으며, 이벤트들이 축적되어, 장치(350)로 일괄 전송되도록 할 수 있다. 일괄 전송은 누적될 수 있고, 모듈(367 및/또는 366)에 의해 추적되는 우선순위 인지 및/또는 사용자 활동/애플리케이션 거동 인지를 기초로 하여 이벤트의 전송이 지연될 수 있다. 예를 들어, (임계치 또는 기준을 충족하는) 더 높은 우선순위의 이벤트가 서버(300)에서 검출될 때, (더 낮은 우선순위를 갖는) 복수의 이벤트를 장치(350)로 일괄 전송하는 것은 일괄처리 모듈(377)에 의해 개시될 수 있다. 덧붙이자면, 서버가 장치(350)로부터 데이터를 수신할 때 서버(300)로부터의 일괄 전송이 트리거될 수 있으며, 이는, 장치 라디오가 이미 사용중이며, 따라서 장치 라디오가 켜진 상태임을 가리킨다. 하나의 실시예에서, 프록시 서버(325)는, 이벤트/트랜잭션 우선순위를 기초로 하여, 각각의 메시지/패킷을 일괄 전송되도록 정렬하여, 연결이 소실되거나 배터리가 닳은 경우 등에서, 더 높은 우선순위 콘텐츠가 먼저 전송될 수 있도록 할 수 있다. In one embodiment, proxy server 325 may detect a plurality of occurrences of an event (eg, a transaction, content, data received from server / provider 310), and the events are accumulated and device 350 may be accumulated. Can be sent in batches. Batch transmissions may be cumulative and transmission of events may be delayed based on prioritization and / or user activity / application behavior tracked by modules 367 and / or 366. For example, when a higher priority event (that meets a threshold or criterion) is detected at the server 300, batch sending a plurality of events (having a lower priority) to the device 350 may be batch. May be initiated by the processing module 377. In addition, a batch transfer from server 300 may be triggered when the server receives data from device 350, indicating that the device radio is already in use and thus the device radio is on. In one embodiment, the proxy server 325 sorts each message / packet to be sent in batches based on event / transaction priority, so that higher priority content, such as when a connection is lost or the battery is exhausted. May be transmitted first.

하나의 실시예에서, 서버(300)는 (가령, 캐싱 정책 관리기(355)에 의해 관리되는) 데이터를 캐싱함으로써, 네트워크(가령 셀룰러 네트워크)를 통한 장치(350)와의 통신 빈도가 수정(가령, 감소)될 수 있다. 예를 들어, 데이터가 서버 캐시(335)에 캐싱되어, 추후, 불러와(retrieval) 지거나 장치(350)로 일괄 전송될 수 있음으로써, 장치(350) 라디오를 켤 필요성이 낮아질 가능성이 있다. 서버 캐시(335)는, 도 3A의 예에서, 호스트 서버(300) 외부에 위치하는 것처럼 도시되지만, 호스트 서버(300) 내부에 부분적으로 또는 전적으로 위치할 수 있다. 일부 경우, 서버 캐시(335)는, 가령, 애플리케이션 서버/콘텐츠 제공자(310), 네트워크 서비스 제공자, 또는 또 다른 제3자에 의해 관리되는 바와 같이, 또 다른 개체(가령, 도 1C의 예시의 경우, 선택적 캐싱 프록시 서버(199))에 의해 관리되는 또 다른 캐시와 부분적으로 또는 전적으로 동일하거나 일체로 구성될 수 있다. In one embodiment, server 300 caches data (e.g., managed by caching policy manager 355) such that the frequency of communication with device 350 over a network (e.g., cellular network) is modified (e.g., Can be reduced). For example, data may be cached in the server cache 335 and later retrieved or sent to the device 350 in a batch, thereby reducing the need to turn on the device 350 radio. The server cache 335 is shown as located outside the host server 300 in the example of FIG. 3A, but may be partially or wholly located within the host server 300. In some cases, server cache 335 may be managed by another entity (eg, in the example of FIG. 1C), for example, as managed by application server / content provider 310, network service provider, or another third party. It may be configured in part or in whole or in part with another cache managed by optional caching proxy server 199.

하나의 실시예에서, 콘텐츠 캐싱은, 호스트 서버(300)의 도움으로, 장치(350)에서 로컬하게 수행된다. 예를 들어, 호스트 서버(300) 내 프록시 서버(325)가 요청과 함께 애플리케이션 서버/제공자(310)에게 질의할 수 있으며, 응답의 변경을 모니터링할 수 있다. (가령, 새로운 데이터 검출기(347)에 의해) 변경되거나 새로운 응답이 검출될 때, 프록시 서버(325)는 모바일 장치(350)에게 통지하여, 장치(350) 상의 로컬 프록시가, 자신의 로컬 캐시 내에 임의의 응답으로서 저장되어 있는 관련 캐시 엔트리를 무효화하기(가령, 날짜가 지났다(out-dated)고 표시하기)로 결정할 수 있다. 또는, 데이터 무효화기 모듈(368)이, 애플리케이션 서버/제공자(310)로부터 수신된 응답을 기초로 하여 특정 캐싱된 데이터를 무효화하라고 장치(350)의 로컬 프록시에게 자동으로 명령할 수 있다. 캐싱된 데이터는 무효(invalid)라고 표시되며, 콘텐츠 서버(310)로부터 새로운 콘텐츠가 수신될 때 대체되거나 삭제될 수 있다. In one embodiment, content caching is performed locally at the device 350 with the help of the host server 300. For example, the proxy server 325 in the host server 300 may query the application server / provider 310 with the request and monitor the change in the response. When a change or a new response is detected (eg, by a new data detector 347), the proxy server 325 notifies the mobile device 350 so that the local proxy on the device 350 is in its local cache. One may decide to invalidate the associated cache entry stored as any response (eg, mark it as out-dated). Alternatively, the data invalidator module 368 may automatically instruct the local proxy of the device 350 to invalidate specific cached data based on the response received from the application server / provider 310. Cached data is marked invalid and can be replaced or deleted when new content is received from the content server 310.

검출기(347)에 의해 하나 이상의 방식으로 데이터 변경이 검출된다. 예를 들어, 변경이 있은 후, 서버/제공자(310)가 호스트 서버(300)에게 통지할 수 있다. 또한 변경은, 소스 서버/제공자(310)의 직접적인 폴에 응답하여, 호스트 서버(300)에서 검출될 수 있다. 일부 경우, 이에 추가로, 프록시 서버(325)가, 새로운/업데이트된 데이터로 장치(350) 상의 로컬 캐시를 사전-로딩(pre-load)할 수 있다. 이는, 호스트 서버(300)가 모바일 장치상의 라디오가 이미 사용 중이라고 검출할 때, 또는 서버(300)가 장치(350)로 전송될 추가 콘텐츠/데이터를 가질 때, 수행될 수 있다. Data changes are detected by the detector 347 in one or more ways. For example, after a change, server / provider 310 may notify host server 300. Changes can also be detected at the host server 300 in response to a direct poll of the source server / provider 310. In some cases, in addition to this, proxy server 325 may pre-load a local cache on device 350 with new / updated data. This may be done when the host server 300 detects that the radio on the mobile device is already in use, or when the server 300 has additional content / data to be sent to the device 350.

상기의 메커니즘들 중 하나 이상이 동시에 구현되거나, 애플리케이션(가령, 서로 다른 서버/제공자(310)를 위한 서로 다른 정책)에 따라 조절/설정될 수 있다. 일부 경우, 특정 유형의 이벤트(가령, 우선순위 임계 레벨을 충족하는 이벤트)의 경우, 소스 제공자/서버(310)가 호스트(300)에게 통지할 수 있다. 덧붙여, 이벤트 우선순위에 무관하게, 제공자/서버(310)가 특정 시간 간격으로 호스트(300)에게 통지하도록 설정될 수 있다. One or more of the above mechanisms may be implemented simultaneously, or may be adjusted / set according to an application (eg, different policies for different servers / providers 310). In some cases, for certain types of events (eg, events that meet priority threshold levels), the source provider / server 310 may notify the host 300. In addition, regardless of event priority, provider / server 310 may be configured to notify host 300 at specific time intervals.

하나의 실시예에서, 호스트(300)의 프록시 서버(325)는, 모바일 장치로 결과를 반환하기 전에, 변경된 결과를 찾기 위해 콘텐츠 소스로부터의 데이터 요청에 대해 수신된 응답을 모니터/추적할 수 있으며, 이러한 모니터링은 콘텐츠 소스로의 데이터 요청이 모바일 장치로 반환될 동일한 결과를 산출할 때, 적합할 수 있으며, 이에 따라서, 특정 요청에 대해 어떠한 새로운 변경도 없는 경우, 네트워크/파워 소모량이 사용되는 것이 방지된다. 장치(350)의 로컬 프록시가 프록시 서버(325)에게 이러한 모니터링을 수행하도록 명령하거나, 특정 요청에 대해 특정 개수의 동일한 응답(가령, 일정 시간 주기 내에 복수의 동일한 응답)을 수신하면 프록시 서버(325)가 이러한 프로세스를 자동으로 개시할 수 있다. In one embodiment, the proxy server 325 of the host 300 may monitor / track the received response to the data request from the content source to find the changed result before returning the result to the mobile device. This monitoring may be appropriate when the data request to the content source yields the same result to be returned to the mobile device, so that if there is no new change for a particular request, the network / power consumption is used. Is prevented. The proxy server 325 when the local proxy of the device 350 instructs the proxy server 325 to perform such monitoring or receives a certain number of identical responses (eg, multiple identical responses within a certain period of time) for a particular request. ) Can automatically initiate this process.

하나의 실시예에서, 서버(300)는, 활동/거동 인지 모듈(366)을 통해, 모바일 장치(350)와 별개의 장치에서 사용자 활동을 식별하거나 검출할 수 있다. 예를 들어, 모듈(366)은 사용자의 메시지 수신함(message inbox)(가령, 전자메일 또는 다른 유형의 수신함)이 액세스되고 있음을 검출할 수 있다. 이는 사용자가 모바일 장치(350)가 아닌 장치를 이용해 자신의 애플리케이션과 상호대화 중이며, 빈번한 업데이트가 필요하지 않음을 나타낼 수 있다. In one embodiment, server 300 may identify or detect user activity on a device separate from mobile device 350 via activity / behavior recognition module 366. For example, module 366 may detect that a user's message inbox (eg, email or other type of inbox) is being accessed. This may indicate that the user is interacting with his or her application using a device other than the mobile device 350 and does not require frequent updates.

이러한 경우, 따라서 서버(300)는 새로운 또는 업데이트된 콘텐츠가 모바일 장치(350)로 전송되는 빈도를 감소시킬 수 있고, 사용자가 또 다른 장치를 이용해 액세스한다고 검출되는 한, 모든 통신을 삭제할 수 있다. 이러한 빈도 감소는 애플리케이션 특정적(가령, 사용자가 또 다른 장치와 상호대화하는 중인 애플리케이션에 특정됨)일 수 있거나, 모바일 장치(350)에 대한 전반적인 빈도 감소일 수 있다(가령, 사용자가 다른 장치를 통해, 하나의 서버 또는 하나의 애플리케이션과 상호대화한다고 검출되기 때문에, 사용자는 또 다른 서비스를 액세스할 때 이를 사용할 수 있다).In such a case, the server 300 can thus reduce the frequency with which new or updated content is sent to the mobile device 350, and can delete all communication as long as it is detected that the user is accessing using another device. This frequency reduction may be application specific (e.g., specific to the application the user is interacting with with another device) or may be an overall frequency reduction for the mobile device 350 (e.g., when the user Because it is detected to interact with one server or one application, the user can use it when accessing another service).

하나의 실시예에서, 장치(350)에서의 전력 또는 배터리 소모량을 보존하기 위해, 호스트 서버(300)는 장치(350)를 대신하여 콘텐츠 소스(310)로 폴링할 수 있다. 예를 들어, 모바일 장치(35) 상의 특정 애플리케이션은 예측가능한 반복 방식으로 자신의 각자의 서버(310)로 폴링할 수 있다. 프록시 제어기(365) 내 활동/거동 모듈(366)에 의해 이러한 반복 또는 또 다른 유형의 애플리케이션 거동이 추적될 수 있다. 따라서 호스트 서버(300)는 모바일 장치(350) 상의 애플리케이션에 대해 콘텐츠 소스(310)로 폴링할 수 있으며, 이러한 폴링은, 다른 경우라면, 다른 경우라면 장치(350)에 의해 무선(가령, 셀룰러 연결)을 통해 수행됐을 것이다. 호스트 서버는, HTTP 액세스 엔진(345)을 이용해 HTTP 연결을 구축함으로써, 또는 라디오 제어기(396)를 이용해 셀룰러 네트워크를 통해 소스(310)로 연결함으로써, 새로운 또는 변경된 데이터를 찾기 위해 소스(310)로 폴링할 수 있다. 새로운 또는 변경된 데이터가 검출될 때, 새로운 데이터 검출기(347)는 장치(350)에게, 이러한 데이터가 이용 가능하다고 통지, 및/또는 새로운/변경된 데이터를 장치(350)로 제공할 수 있다. In one embodiment, to conserve power or battery consumption at device 350, host server 300 may poll the content source 310 on behalf of device 350. For example, a particular application on mobile device 35 may poll its own server 310 in a predictable iterative manner. This repetition or another type of application behavior may be tracked by activity / behavior module 366 in proxy controller 365. The host server 300 may thus poll the content source 310 for an application on the mobile device 350, which in other cases may be wireless (eg, a cellular connection) by the device 350 in other cases. Would have been done through The host server connects to the source 310 to find new or changed data by establishing an HTTP connection using the HTTP access engine 345 or by connecting to the source 310 via a cellular network using the radio controller 396. You can poll. When new or changed data is detected, the new data detector 347 may notify the device 350 that such data is available, and / or provide the device 350 with new / changed data.

하나의 실시예에서, 연결 관리기(395)는 모바일 장치(350)가 이용 가능하지 않다고(가령, 라디오가 꺼져 있다고) 결정하고, SMS를 이용해(가령, 도 1C의 예시에 도시된 SMSC를 통해) 장치(350)에게 콘텐츠를 전송할 수 있다. SMS는 무효화 메시지, 또는 무효화 메시지의 일괄분(batch), 또는 심지어 콘텐츠(콘텐츠가 단 몇 개의 SMS 메시지(보통 1개 또는 2개의 SMS 메시지)에 맞기에 충분히 작은 경우)를 전송하도록 사용된다. 이로 인해, 오버헤드 정보(overhead information)를 전송하기 위해 라디오 채널을 액세스할 필요가 없어진다. 호스트 서버(300)는 임계치에 가까운 우선순위 레벨을 갖거나 그 밖의 다른 방식으로 기준을 충족하는 특정 트랜잭션 또는 응답을 위해 SMS를 이용할 수 있다. 서버(300)는, 상시 접속된(always-on) IP 연결을 유지하는 것의 대안예로서, 대역외 트리거(out-of-band trigger)로서 SMS를 이용하여, IP 연결을 유지하거나 각성시킬 수 있다. In one embodiment, connection manager 395 determines that mobile device 350 is not available (eg, the radio is turned off) and uses SMS (eg, via the SMSC shown in the example of FIG. 1C). The content may be transmitted to the device 350. SMS is used to send invalidation messages, or batches of invalidation messages, or even content (if the content is small enough to fit only a few SMS messages (usually one or two SMS messages)). This eliminates the need to access the radio channel to transmit overhead information. The host server 300 may use the SMS for specific transactions or responses that have a priority level close to a threshold or otherwise meet the criteria. The server 300 may maintain or awaken the IP connection using SMS as an out-of-band trigger as an alternative to maintaining an always-on IP connection. .

하나의 실시예에서, 프록시 서버(325) 내 연결 관리기(395)(가령, 하트비트 관리기(398))가, 연결된 장치(350)를 대신하여, 하트비트 메시지를 생성 및/또는 전송함으로써, 장치(350)에서 실행 중인 애플리케이션을 위한 제공자(310)와의 백엔드 연결(backend connection)을 유지할 수 있다.In one embodiment, the connection manager 395 (eg, heartbeat manager 398) in the proxy server 325 generates and / or sends a heartbeat message on behalf of the connected device 350, thereby providing the device. A backend connection with a provider 310 for an application running at 350 may be maintained.

예를 들어, 분산 프록시 시스템에서, 장치(350) 상의 로컬 캐시가, 애플리케이션을 위해 요구되는 TCP/IP 연결을 유지하기 위해 필요한 임의의 또는 모든 하트비트 메시지가 셀룰러 또는 그 밖의 다른 네트워크를 통해 전송되는 것을 방지하고, 대신, 호스트 서버(300) 상의 프록시 서버(325)에 의존하여, 백엔드(가령, 도 1A의 예시의 경우, 애플리케이션 서버/제공자(110))와의 연결을 유지하기 위한 하트비트 메시지를 생성 및/또는 전송할 수 있다. 프록시 서버는, 모바일 장치상의 로컬 프록시의 동작에 독립적으로, 킵-얼라이브(keep-alive)(하트비트) 메시지를 생성할 수 있다. For example, in a distributed proxy system, a local cache on device 350 may be sent over cellular or other networks where any or all heartbeat messages needed to maintain the TCP / IP connection required for the application. And instead rely on proxy server 325 on host server 300 to send a heartbeat message to maintain a connection with a backend (e.g., application server / provider 110 in the example of FIG. 1A). Create and / or transmit. The proxy server may generate a keep-alive (heartbeat) message, independent of the operation of the local proxy on the mobile device.

레포지토리(312, 314 및/또는 316)가 소프트웨어, 서술적 데이터(descriptive data), 이미지, 시스템 정보 드라이버, 및/또는 호스트 서버(300) 및/또는 그 밖의 다른 서버의 그 밖의 다른 구성요소에 의해 사용되는 그 밖의 다른 임의의 데이터 아이템을 추가로 저장할 수 있다. 레포지토리는 데이터베이스 관리 시스템(DBMS)에 의해 관리될 수 있으며, 가령, 상기 데이터베이스 관리 시스템은 Oracle, DB2, Microsoft Access, Microsoft SQL Server, PostgreSQL, MySQL, FileMaker 등일 수 있다(그러나 이에 국한되지 않음). Repositories 312, 314 and / or 316 may be created by software, descriptive data, images, system information drivers, and / or other components of host server 300 and / or other servers. Any other data item that is used may be further stored. Repositories can be managed by a database management system (DBMS), for example, the database management system can be (but not limited to) Oracle, DB2, Microsoft Access, Microsoft SQL Server, PostgreSQL, MySQL, FileMaker, and the like.

레포지토리는 객체 지향 기법 및/또는 텍스트 파일을 통해 구현될 수 있으며, 분산 데이터베이스 관리 시스템, 객체 지향 데이터베이스 관리 시스템(OODBMS)(가령, ConceptBase, FastDB 메인 메모리 데이터베이스 관리 시스템, JDOInstruments, ObjectDB, 등), 객체 관련 데이터베이스 관리 시스템(ORDBMS)(가령, Informix, OpenLink Virtuoso, VMDS, 등), 파일 시스템, 및/또는 그 밖의 다른 임의의 종래의, 즉 공지된 데이터베이스 관리 패키지에 의해 관리될 수 있다. Repositories can be implemented through object-oriented techniques and / or text files, distributed database management systems, object-oriented database management systems (OODBMS) (e.g., ConceptBase, FastDB main memory database management systems, JDOInstruments, ObjectDB, etc.), objects It can be managed by an associated database management system (ORDBMS) (eg Informix, OpenLink Virtuoso, VMDS, etc.), file system, and / or any other conventional, known database management package.

도 3B는 애플리케이션(가령, 모바일 애플리케이션) 거동 및/또는 네트워크 조건에 대해 캐싱하고 캐싱 전략을 조정할 수 있는 도 3A에서 도시되는 캐시 시스템에서의 캐싱 정책 관리기(355) 내 구성요소의 추가 예를 도시하는 블록도를 도시한다.FIG. 3B illustrates additional examples of components within caching policy manager 355 in the cache system shown in FIG. 3A that may cache for application (eg, mobile application) behavior and / or network conditions and adjust the caching strategy. A block diagram is shown.

하나의 실시예에서, 캐싱 정책 관리기(355)는 메타데이터 생성기(303), 캐시 룩-업 엔진(305), 애플리케이션 프로토콜 모듈(356), 폴 스케줄 관리기(358)를 갖는 콘텐츠 소스 모니터링 엔진(357), 응답 분석기(361), 및/또는 업데이트된 또는 새로운 콘텐츠 검출기(359)를 더 포함할 수 있다. 하나의 실시예에서, 폴 스케줄 관리기(358)는 호스트 타이밍 시뮬레이터(358a), 롱 폴 요청 검출기/관리기(358b), 스케줄 업데이트 엔진(358c), 및/또는 시간 조정 엔진(358d)를 더 포함한다. 메타데이터 생성기(303) 및/또는 캐시 룩-업 엔진(305)은 캐시(335)(또는 서버 캐시)로 연결되어, 캐시 엔트리 또는 캐시 엔트리의 질의를 수정하거나 추가할 수 있다. In one embodiment, caching policy manager 355 is content source monitoring engine 357 with metadata generator 303, cache look-up engine 305, application protocol module 356, poll schedule manager 358. ), Response analyzer 361, and / or updated or new content detector 359. In one embodiment, the poll schedule manager 358 further includes a host timing simulator 358a, a long pole request detector / manager 358b, a schedule update engine 358c, and / or a time adjustment engine 358d. . Metadata generator 303 and / or cache look-up engine 305 may connect to cache 335 (or server cache) to modify or add cache entries or queries of cache entries.

하나의 실시예에서, 프록시 서버(가령, 도 1B-1C 및 도 3A의 예시의 프록시 서버(125 또는 325))가 모니터링 엔진(357)을 통해 새로운 또는 변경된 데이터를 찾기 위해 콘텐츠 소스를 모니터링할 수 있다. 도시된 것처럼, 프록시 서버는 도 2A-B의 모바일 장치(250) 외부의 개체이다. 콘텐츠 소스(가령, 도 1B의 애플리케이션 서버/콘텐츠 제공자(110))는, (가령, 로컬 프록시에 의해) 프록시 서버에게, 모바일 장치(가령, 모바일 장치(150 또는 250)) 상에 로컬하게 캐싱되어 있는 콘텐츠를 갖는다고 알려진 것일 수 있다. 예를 들어, 모바일 장치에서의 콘텐츠 소스의 폴링 빈도를 기초로 하는 빈도로 모니터링 엔진(357)에 의해 콘텐츠 소스가 모니터링될 수 있다. 폴 스케줄은, 예를 들어, 로컬 프록시에 의해 생성되고, 프록시 서버로 전송될 수 있다. 폴 스케줄 관리기(358)에 의해, 폴 빈도가 추적, 및/또는 관리될 수 있다. In one embodiment, a proxy server (eg, example proxy server 125 or 325 of FIGS. 1B-1C and 3A) may monitor content sources to find new or changed data via monitoring engine 357. have. As shown, the proxy server is an entity outside the mobile device 250 of FIGS. 2A-B. The content source (eg, application server / content provider 110 of FIG. 1B) is cached locally on a mobile device (eg, mobile device 150 or 250) to a proxy server (eg, by a local proxy). It may be known to have content. For example, the content source may be monitored by the monitoring engine 357 at a frequency based on the polling frequency of the content source at the mobile device. The poll schedule can be generated, for example, by a local proxy and sent to a proxy server. By poll schedule manager 358, poll frequency may be tracked and / or managed.

예를 들어, 프록시 서버는. 모바일 장치를 대신하여, 호스트(가령, 콘텐츠 제공자/애플리케이션 서버)로 폴링할 수 있고, 호스트 타이밍 시뮬레이터(358a)를 통해 클라이언트의 폴링 거동(polling behavior)을 호스트로 시뮬레이트할 수 있다. (가령, 롱 폴 요청 검출기/관리기(358b)에 의해) 폴링 거동은 호스트와의 지속형 연결에서 겪는 롱 폴 요청-응답 시퀀스의 특성을 포함하도록 시뮬레이트될 수 있다. 폴링 간격/거동이 설정되면, 장치 측의 로컬 프록시(275) 및/또는 서버 측의 프록시 서버(325)가, 애플리케이션 및 애플리케이션 서버/콘텐츠 호스트 거동이 매칭되는지, 또는 이러한 예측 패턴에 의해 표현될 수 있는지 여부를 검증할 수 있다. 일반적으로, 로컬 프록시 및/또는 프록시 서버가 편이(deviation)를 검출할 수 있고, 적절할 때, 또 다른 폴링 간격을 재-평가 및 계산, 결정, 또는 추정할 수 있다. For example, a proxy server. On behalf of the mobile device, it can poll to a host (eg, content provider / application server) and simulate the polling behavior of the client to the host via the host timing simulator 358a. The polling behavior (eg, by the long pole request detector / manager 358b) may be simulated to include the characteristics of the long pole request-response sequence experienced in the persistent connection with the host. Once the polling interval / behavior is set, the local proxy 275 on the device side and / or the proxy server 325 on the server side can be represented by an application and application server / content host behavior match or by this prediction pattern. Can be verified. In general, the local proxy and / or proxy server may detect deviations and, when appropriate, re-evaluate and calculate, determine, or estimate another polling interval.

하나의 실시예에서, 분산 프록시의 서버 측 상의 캐싱 정책 관리기(355)는, 모바일 장치상의 프록시 서버(275)와 함께, 또는 상기 프록시 서버(275)와 독립적으로, 롱 폴 요청을 식별하거나 검출할 수 있다. 예를 들어, 캐싱 정책 관리기(355)는, 롱 폴 요청, 가능한 롱 폴 요청(가령, 클라이언트가 통신할 때 이용하는 호스트와의 지속형 연결에 대한 요청(가령, 장기 유지 HTTP 요청, 지속형 연결 가능 COMET 스타일 푸시, HTTP 스트리밍에 대한 요청 등))을 식별 또는 검출하라는 애플리케이션 요청에 대한 요청-응답 시퀀스에서, 응답 지연 간격 시간과 비교되어 사용될 임계값을 결정할 수 있다. In one embodiment, the caching policy manager 355 on the server side of the distributed proxy, along with the proxy server 275 on the mobile device, or independently of the proxy server 275, may identify or detect long poll requests. Can be. For example, the caching policy manager 355 may request a long poll request, a possible long poll request (e.g., a request for a persistent connection with a host that the client uses to communicate (e.g., a long-lived HTTP request, a persistent connection). In the request-response sequence for the application request to identify or detect COMET style push, request for HTTP streaming, etc.), it may be compared with the response delay interval time to determine the threshold to be used.

예를 들어, 복수의 서로 다른 셀룰러 또는 무선 네트워크에 의해 서비스받을 수 있는 모바일 장치들의 클라이언트/애플리케이션에 의해 생성된 요청에 대한 응답 지연 간격 시간을 이용해 프록시(325)에 의해 임계값이 결정될 수 있다. 호스트(300)에 상주하는 프록시(325)가 복수의 네트워크를 통해 복수의 모바일 장치와 통신할 수 있기 때문에, 캐싱 정책 관리기(355)는, 롱 폴을 카테고리화하고 검출하기 위한 임계값을 설정할 때 사용될 수 있는 글로벌 레벨(global level)에서 애플리케이션/클라이언트 정보를 액세스할 수 있다. For example, the threshold may be determined by the proxy 325 using a response delay interval time for a request generated by a client / application of mobile devices capable of being serviced by a plurality of different cellular or wireless networks. Because the proxy 325 residing on the host 300 can communicate with a plurality of mobile devices over a plurality of networks, the caching policy manager 355 sets thresholds for categorizing and detecting long poles. Application / client information can be accessed at a global level that can be used.

여러 다른 또는 하나의 동일한 네트워크에 걸쳐 있는 장치들의 애플리케이션들의 응답 지연 수간 시간을 추적함으로써, 캐싱 정책 관리기(355)는 하나 이상의 임계값을, 롱 폴 검출을 위해 응답 지연 간격 시간과 비교하여 사용되도록 설정할 수 있다. 프록시 서버(325)에 의해 설정된 임계값은 정적이거나 동적일 수 있으며, 조건 및/또는 수명시간(상대적 또는 절대적인 만료 시각/날짜)과 관련될 수 있다.By tracking the response delay time between applications of devices across several different or one same network, the caching policy manager 355 sets one or more thresholds to be used in comparison to the response delay interval time for long pole detection. Can be. The threshold set by the proxy server 325 may be static or dynamic and may be related to the condition and / or lifetime (relative or absolute expiration time / date).

덧붙이자면, 프록시(325)의 캐싱 정책 관리기(355)는, 전적으로 또는 부분적으로, 특정 무선 네트워크의 네트워크 지연, 특정 통신업체(서비스 제공자)에 의해 서비스되는 네트워크, 또는 복수의 무선 네트워크를 기초로 하여, 임계값을 더 결정할 수 있다. 또한 프록시(325)는 애플리케이션(가령, 모바일 애플리케이션) 또는 모바일 클라이언트 요청이 전달되는 하나 이상의 애플리케이션 서버/콘텐츠 제공자(가령, 110)의 지연을 기초로 하여, 롱 폴 요청의 식별을 위한 임계값을 결정할 수 있다. In addition, the caching policy manager 355 of the proxy 325 may be based, in whole or in part, on the network delay of a particular wireless network, a network serviced by a particular carrier (service provider), or a plurality of wireless networks. The threshold may be further determined. The proxy 325 may also determine a threshold for identification of the long pole request based on the delay of one or more application servers / content providers (eg, 110) through which the application (eg, mobile application) or mobile client request is forwarded. Can be.

프록시 서버는 모니터링된 콘텐츠 소스에서 새로운 또는 변경된 데이터를 검출하고, 모바일 장치에게 이러한 변경을 통지하는 메시지를 전송함으로써, 모바일 방치(또는 모바일 장치의 로컬 프록시)가 적절한 조치(가령, 로컬 캐시 내 캐시 요소를 무효화하기)를 취할 수 있다. 일부 경우, 프록시 서버(가령, 캐싱 정책 관리기(355))는 새롭거나 변경된 데이터를 검출하면, 상기 새롭거나 변경된 데이터를 자신의 캐시(가령, 도 1C 및 도 3A의 서버 캐시(135 또는 335))에 저장할 수 있다. 일부 경우, 모바일 장치에서의 콘텐츠 요청을 만족시키기 위해, 서버 캐시(335)에 저장된 새롭거나 업데이트된 데이터가 사용될 수 있으며, 예를 들어, 프록시 서버가 모바일 장치에게 새롭거나 변경된 콘텐츠를 통지하고, 로컬 캐싱된 콘텐츠가 무효화된 후 사용될 수 있다. The proxy server detects new or changed data in the monitored content source and sends a message informing the mobile device of this change, thereby allowing the mobile neglect (or local proxy of the mobile device) to take the appropriate action (e.g., cache element in the local cache). To invalidate). In some cases, when a proxy server (eg, caching policy manager 355) detects new or changed data, the proxy server stores the new or changed data in its cache (eg, server cache 135 or 335 in FIGS. 1C and 3A). Can be stored in In some cases, new or updated data stored in the server cache 335 may be used to satisfy a content request at the mobile device, for example, a proxy server notifies the mobile device of new or changed content, and local Cached content can be used after it is invalidated.

메타데이터 생성기(303)는, 도 2B의 예시에 도시된 메타데이터 생성기(203)와 유사하게, 모바일 장치(250)에서의 요청에 대해 캐싱된 응답에 대해 메타데이터를 생성할 수 있다. 메타데이터 생성기(303)가 서버 캐시(335)에 저장된 캐시 엔트리를 위한 메타데이터를 생성할 수 있다. 마찬가지로, 캐시 룩-업 엔진(305)은 도 2B의 예시의 캐시 룩-업 엔진(205)에 대해 기재된 것과 동일하거나 유사한 기능을 포함할 수 있다. The metadata generator 303 may generate metadata for the cached response to the request at the mobile device 250, similar to the metadata generator 203 shown in the example of FIG. 2B. Metadata generator 303 may generate metadata for cache entries stored in server cache 335. Likewise, cache look-up engine 305 may include the same or similar functionality as described for the example cache look-up engine 205 of FIG. 2B.

응답 분석기(361)는 모바일 장치(250)에서 생성된 요청에 대해 수신된 응답을 분석하는 것과 관련된 일부 또는 모든 기능을 도 2B에서 도시된 로컬 프록시의 응답 분석기(246d)와 동일하거나 유사한 방식으로 수행할 수 있다. 프록시 서버(325)가, 모바일 장치(250)로 전달되는 애플리케이션 서버/콘텐츠 소스(310)로부터의 응답을 수신할 수 있기 때문에, 프록시 서버(325)(가령, 응답 분석기(361))는, 캐싱 가능함을 판단하기 위해, 로컬 프록시의 응답 분석기에 대해 설명된 것과 유사한 응답 분석 단계를 수행할 수 있다. 모바일 장치(250) 상의 로컬 프록시(275)에서 수행될 수 있는 분석에 추가로, 또는 상기 분석을 대신하여 응답이 분석될 수 있다.The response analyzer 361 performs some or all of the functions associated with analyzing the response received for the request generated by the mobile device 250 in the same or similar manner as the response analyzer 246d of the local proxy shown in FIG. 2B. can do. Since the proxy server 325 can receive a response from the application server / content source 310 delivered to the mobile device 250, the proxy server 325 (eg, the response analyzer 361) is caching. To determine that possible, a response analysis step similar to that described for the local proxy's response analyzer may be performed. In addition to or in place of the analysis that may be performed at the local proxy 275 on the mobile device 250, the response may be analyzed.

덧붙이자면, 스케줄 업데이트 엔진(358c)은, 로컬 프록시(275) 내 스케줄 업데이트 엔진에 대해 기재된 것처럼, 모바일 장치(250)에서의 애플리케이션의 애플리케이션 요청 간격 변경을 기초로 하여 특정 애플리케이션 서버/콘텐츠 호스트의 폴링 간격을 업데이트할 수 있다. 시간 조정 엔진(358d)은 초기 시점을 설정하며, 상기 초기 시점에서 애플리케이션 서버/콘텐츠 호스트의 폴은, 로컬 프록시(275) 내 스케줄 업데이트 엔진에 대해 기재된 바 있는 프레시 콘텐츠(fresh content)를 서비스하기 전에, 오래된(out of date) 콘텐츠를 다시 한 번 서비스하는 것을 막는 것이다. 스케줄 업데이팅 및 시간 조절 알고리즘 모두, 모바일 장치(250) 상의 로컬 프록시(275)에서 유사한 프로세스와 함께, 또는 상기 프로세스를 대체하여 수행될 수 있다. In addition, the schedule update engine 358c polls a particular application server / content host based on a change in the application request interval of the application on the mobile device 250, as described for the schedule update engine in the local proxy 275. You can update the interval. The time coordination engine 358d establishes an initial time point, at which time the poll of the application server / content host before serving the fresh content as described for the schedule update engine in the local proxy 275. This prevents you from serving out of date content once again. Both schedule updating and time adjustment algorithms may be performed with, or in place of, a similar process at the local proxy 275 on the mobile device 250.

도 3C는, 캐시 디피트 메커니즘을 관리 및 검출하고 콘텐츠 소스를 모니터링할 수 있는 도 3A의 예시에서 도시된 분산 프록시 시스템의 서버 측 상의 프록시 서버(375) 내 캐싱 정책 관리기(355)의 구성요소의 또 다른 예를 도시하는 블록도를 도시한다. FIG. 3C illustrates the components of the caching policy manager 355 in the proxy server 375 on the server side of the distributed proxy system shown in the example of FIG. 3A capable of managing and detecting the cache bite mechanism and monitoring the content source. A block diagram showing another example is shown.

하나의 실시예에서, 캐싱 정책 관리기(355)는 캐시 디피트 소스 관리기(352), 폴 스케줄 관리기(358)를 갖는 콘텐츠 소스 모니터링 엔진(357), 및/또는 업데이트되거나 새로운 콘텐츠 검출기(359)를 더 포함할 수 있다. 캐시 디피트 소스 관리기(352)는 식별자 수정기 모듈(353) 및/또는 식별자 패턴 추적 모듈(354)을 더 포함할 수 있다. In one embodiment, caching policy manager 355 may cache cache source manager 352, content source monitoring engine 357 with poll schedule manager 358, and / or update or update a new content detector 359. It may further include. The cache bitt source manager 352 may further include an identifier modifier module 353 and / or an identifier pattern tracking module 354.

하나의 실시예에서, 프록시 서버(가령, 도 1B-1C 및 도 3A의 예시의 프록시 서버(125 또는 325)는 모니터링 엔진(357)을 통해 새롭거나 변경된 데이터를 찾기 위해 콘텐츠 소스를 모니터링할 수 있다. 콘텐츠 소스(가령, 도 1B-1C 또는 도 3A의 애플리케이션 서버/콘텐츠 제공자(110 또는 310))는, (가령, 로컬 프록시에 의해) 프록시 서버에게, 모바일 장치(가령, 모바일 장치(150 또는 250)) 상에 로컬 캐싱된 콘텐츠를 갖는다고 알려진 것일 수 있다. 콘텐츠 소스(310)는, 예를 들어, 모바일 장치에서 콘텐츠 소스의 폴링 빈도를 기초로 하는 빈도로 모니터링 엔진(357)에 의해 모니터링될 수 있다. 예를 들어, 폴링 스케줄은 로컬 프록시에 의해 생성되고 프록시 서버(325)로 전송될 수 있다. 폴 스케줄 관리기(358)에 의해 폴 주파수가 추적 및/또는 관리될 수 있다.In one embodiment, a proxy server (eg, example proxy server 125 or 325 of FIGS. 1B-1C and 3A) may monitor content sources to find new or changed data via monitoring engine 357. The content source (eg, the application server / content provider 110 or 310 of FIGS. 1B-1C or 3A) may be directed to a proxy device (eg, by a local proxy) to a mobile device (eg, mobile device 150 or 250). The content source 310 may be monitored by the monitoring engine 357 at a frequency based on, for example, the polling frequency of the content source at the mobile device. For example, the polling schedule can be generated by the local proxy and sent to the proxy server 325. The polling scheduler 358 can track and / or manage the polling frequency.

하나의 실시예에서, 프록시 서버(325)는 새롭거나 변경된 데이터(응답)를 검출하기 위해 콘텐츠 소스(310)로 폴링할 때, 정규화된 식별자 또는 수정된 식별자를 이용한다. 또한, 서버 캐시(335)에 응답을 저장할 때 정규화된 식별자 또는 수정된 식별자가 프록시 서버(325)에 의해 사용될 수 있다. 일반적으로, 캐싱 가능한 콘텐츠에 대해 캐시 디피트(cache defeat) 메커니즘이 사용될 때 정규화된 또는 수정된 식별자가 사용될 수 있다. 캐시 디피트 메커니즘은, 식별자 내 변하는 파라미터(changing parameter)의 형태(가령, URI 또는 URL), 변하는 시/날짜 파라미터, 랜덤하게 변하는 파라미터, 또는 그 밖의 다른 유형의 파라미터를 가질 수 있다.In one embodiment, proxy server 325 uses the normalized or modified identifier when polling to content source 310 to detect new or changed data (response). Also, the normalized or modified identifier may be used by the proxy server 325 when storing the response in the server cache 335. In general, a normalized or modified identifier may be used when a cache defeat mechanism is used for cacheable content. The cache default mechanism may have a type of changing parameter in the identifier (eg, a URI or URL), a changing time / date parameter, a randomly changing parameter, or some other type of parameter.

뒤 이은 요청 및 연계된 응답의 식별과의 연계를 위해, 정규화된 식별자 또는 수정된 식별자가 변하는 파라미터를 제거하거나, 그 밖의 다른 방식으로 대체하고, 콘텐츠 소스를 폴링하도록 사용될 수 있다. 하나의 실시예에서, 프록시 서버(325) 상의 캐싱 정책 관리기(355)의 캐시 디피트 소스 관리기(352)(분산 프록시 시스템의 서버 측 구성요소)(가령, 식별자 수정기 모듈(353))에 의해 수정된 식별자가 생성된다. 수정된 식별자는 캐시를 디피트하도록 사용되는 변하는 파라미터를 대신하여, 대체 파라미터(substitute parameter)(이는 일정 시간 주기 동안 정적(static)임)를 이용할 수 있다.For subsequent association with subsequent identification of the request and associated response, the normalized or modified identifier may be used to remove, or otherwise replace, a parameter that changes, and poll the content source. In one embodiment, the cache default source manager 352 of the caching policy manager 355 on the proxy server 325 (server side component of the distributed proxy system) (eg, identifier modifier module 353). The modified identifier is created. The modified identifier may use a substitute parameter, which is static for a period of time, in place of the changing parameter used to decode the cache.

선택사항으로서, 캐시 디피트 소스 관리기(352)는, 식별자의 다양한 수정본 또는 하나 이상의 콘텐츠 소스(가령, 애플리케이션 서버/콘텐츠 호스트(110 또는 310))에 대해 콘텐츠를 주소 지정하는 식별자들을 추적, 저장, 및 모니터링하여, 콘텐츠 소스로 폴링하기 위해 프록시 서버(325)에 의해 사용된 수정된 식별자 및/또는 정규화된 식별자가 예상 또는 의도한 대로 동작하는지(가령, 동일한 응답, 또는 다른 방식으로 본래의 수정되지 않은 식별자와 여전히 관련성이 있는 응답)를 지속적으로 검증하기 위해, 식별자 패턴 추적 모듈(354)을 포함한다. Optionally, Cache Depth Source Manager 352 may track, store, or store various modifications of the identifier or identifiers that address the content for one or more content sources (eg, application server / content host 110 or 310), And by monitoring, whether the modified identifier and / or the normalized identifier used by the proxy server 325 to poll to the content source behave as expected or intended (e.g., not intactly modified in the same response, or otherwise). Identifier pattern tracking module 354 to continually verify the response that is still associated with the unidentified identifier).

패턴 추적 모듈(354)이, 콘텐츠 소스에서 오류나 예측되지 않은 거동(가령, 기대되지 않은 응답이 전송됨)을 초래하는 식별자의 수정본 또는 정규화본을 검출하는 경우, 추적 모듈(354)은 수정본을 로그에 기록할 수 있고, 캐시 디피트 소스 관리기(352)에게 또 다른 수정본/정규화본을 생성할 것을 명령하거나, 로컬 프록시(가령, 로컬 프록시(275))에게 콘텐츠 소스로 폴링할 때 사용되기 위해 또 다른 수정본/정규화본을 생성하기 위해 통지할 수 있다. 이와 함께, 또는 이를 대신하여, 직접 응답이 모바일 장치로 제공되도록 하거나, 및/또는 제대로 동작하는 식별자의 수정본이 생성될 때까지, 모바일 장치(가령, 모바일 장치(250))상의 특정 모바일 애플리케이션/클라이언트로부터의 요청이 임시로 네트워크를 통해 콘텐츠 소스로 전송된다. If the pattern tracking module 354 detects a revision or normalization of an identifier that results in an error or unexpected behavior (eg, an unexpected response is sent) at the content source, the tracking module 354 logs the revision. Can be written to, and used to command the Cache Depth Source Manager 352 to generate another revision / normalized version, or to be used when polling a local proxy (e.g., local proxy 275) as a content source. You may be notified to generate other revisions / normalizations. In conjunction with or in place of this, a particular mobile application / client on the mobile device (eg, mobile device 250) until a direct response is provided to the mobile device and / or a modified version of the operative identifier is generated. The request from is temporarily sent over the network to the content source.

하나의 실시예에서, 모바일 장치(가령, 모바일 장치(250))의 로컬 캐시(가령, 캐시(285))에 이미 저장되어 있는 응답에 대해 새롭거나 변경된 데이터가 검출될 때 응답이 서버 캐시 내 서버 캐시 요소로서 저장된다. 따라서 모바일 장치 또는 로컬 프록시(275)가 프록시 서버(325)로 연결되어, 로컬 캐시(285)에 로컬하게 이미 캐싱됐던 요청에 대한 응답(현재 무효인(invalid), 오래된(out-dated), 또는 그 밖의 다른 방식으로 관련성이 없다고 판단된 것)에 대해 새롭거나 변경된 데이터를 불러올 수 있다. In one embodiment, when new or changed data is detected for a response already stored in the local cache (eg, cache 285) of the mobile device (eg, mobile device 250), the response is returned to the server in the server cache. It is stored as a cache element. Thus, the mobile device or local proxy 275 connects to the proxy server 325 to respond to a request that is already cached locally in the local cache 285 (currently invalid, out-dated, or In other ways, new or changed data can be retrieved for those that are determined to be irrelevant.

프록시 서버(325)는 모니터링된 애플리케이션 서버/콘텐츠 호스트(310)에서 새롭거나 변경된 데이터를 검출할 수 있고, 모바일 장치로, 이러한 변경에 대해 통지하는 메시지를 전송함으로써, 모바일 장치(또는 모바일 장치의 로컬 프록시)가 적절한 조치(가령, 로컬 캐시 내 캐시 요소를 무효화시키는 것)를 취할 수 있다. 일부 경우, 프록시 서버(가령, 캐싱 정책 관리기(355)는, 새롭거나 변경된 데이터를 검출하면, 상기 새롭거나 변경된 데이터를 자신의 캐시(가령, 도 1C 및 도 3A의 서버 캐시(135 또는 335))에 저장할 수 있다. 일부 경우, 서버 캐시에 저장된 업데이트된/새로운 데이터가 사용되어, 모바일 장치에서의 콘텐츠 요청을 만족시킬 수 있는데, 예를 들어, 프록시 서버가 모바일 장치에게 새롭거나 변경된 콘텐츠를 통지하고, 로컬 캐싱된 콘텐츠가 무효화된 후, 사용될 수 있다.The proxy server 325 may detect new or changed data at the monitored application server / content host 310 and send a message to the mobile device notifying the change of the mobile device (or local of the mobile device). The proxy may take appropriate action (eg, invalidate cache elements in the local cache). In some cases, a proxy server (eg, caching policy manager 355, upon detecting new or changed data, stores the new or changed data in its own cache (eg, server cache 135 or 335 of FIGS. 1C and 3A). In some cases, updated / new data stored in the server cache may be used to satisfy content requests on the mobile device, for example, a proxy server notifies the mobile device of new or changed content. After the local cached content is invalidated, it can be used.

도 3D는 애플리케이션 거동 및/또는 트래픽 우선순위를 기초로 하여 모바일 트래픽 카테고리화 및 정책 구현을 더 수행할 수 있는 도 3A의 예에서 나타난 프록시 서버(325) 내 추가 구성요소의 예를 도시하는 블록도를 도시한다. 3D is a block diagram illustrating an example of additional components in the proxy server 325 shown in the example of FIG. 3A that may further perform mobile traffic categorization and policy implementation based on application behavior and / or traffic priority. Shows.

프록시 서버(325)의 하나의 실시예에서, 트래픽 성형 엔진(375)이 트래픽 분석기(336)로 더 연결되어, 하나 이상의 모바일 장치(가령, 도 2A-2D의 모바일 장치(250)) 또는 애플리케이션 서버/콘텐츠 호스트(도 1B-1C의 110)로 전달되는 모바일 트래픽 및 트랜잭션에 대한 정책의 정의 및 이행에 대해, 모바일 트래픽을 카테고리화할 수 있다. 일반적으로, 도 1B-1C의 예에서 도시된 것처럼, 프록시 서버(325)는 모바일 장치의 원격에 위치하고, 호스트 서버의 원격에 위치한다. 프록시 서버(325) 또는 호스트 서버(300)는 복수의 모바일 장치에 대해 트래픽을 모니터링하고, 여러 다른 모바일 장치에 대해, 트래픽을 카테고리화하고 트래픽 정책을 고안할 수 있다. In one embodiment of proxy server 325, traffic shaping engine 375 is further connected to traffic analyzer 336 such that one or more mobile devices (eg, mobile device 250 of FIGS. 2A-2D) or application server Mobile traffic can be categorized for definition and implementation of policies for mobile traffic and transactions delivered to / content hosts (110 in FIGS. 1B-1C). In general, as shown in the example of FIGS. 1B-1C, proxy server 325 is located remotely of the mobile device and remotely of the host server. Proxy server 325 or host server 300 may monitor traffic for a plurality of mobile devices, categorize traffic and design traffic policies for different mobile devices.

덧붙이자면, 프록시 서버(325) 또는 호스트 서버(300)가 복수의 통신업체(carrier) 또는 네트워크 운영자에 의해 동작되고, 다양한 카케고리에 대해, 트래픽의 카테고리화 및 트래픽 정책의 구현과 관련된 통신업체 특정 정책을 구현할 수 있다. 예를 들어, 프록시 서버(325) 또는 호스트 서버(300)의 트래픽 분석기(336)가 우선순위화 엔진(341a), 시간 중요도 검출 엔진(341b), 애플리케이션 상태 카테고리화기(341c), 및/또는 애플리케이션 트래픽 카테고리화기(341d)를 포함할 수 있다. In addition, the proxy server 325 or the host server 300 is operated by a plurality of carriers or network operators, and for various categories, the carrier specificity related to the categorization of traffic and the implementation of the traffic policy. You can implement the policy. For example, traffic analyzer 336 of proxy server 325 or host server 300 may be configured by prioritization engine 341a, time criticality detection engine 341b, application state categorizer 341c, and / or application. Traffic categorizer 341d.

이들 엔진 또는 모듈 각각은, 서로 다른 무선 통신업체에 따라, 고려할 것으로 우선순위, 시간 중요도, 배경/전경, 또는 상호대화형/유지관리형의 서로 다른 기준을 추적할 수 있다. 서로 다른 기준이 서로 다른 모바일 장치 유형(가령, 장치 모델, 제조업체, 운영 체제 등)에 대해 존재할 수 있다. 일부 경우, 모바일 장치의 사용자가 트래픽 카테고리와 관련된 설정 또는 기준을 조절하고, 프록시 서버(325)가 이들 사용자에 의해 조절/설정되는 설정을 추적하고 구현할 수 있다. Each of these engines or modules can track different criteria of priority, time importance, background / foreground, or interactive / maintenance, depending on different wireless carriers. Different criteria may exist for different mobile device types (eg, device model, manufacturer, operating system, etc.). In some cases, a user of a mobile device may adjust settings or criteria related to traffic categories, and proxy server 325 may track and implement settings that are adjusted / set by these users.

하나의 실시예에서, 트래픽 분석기(336)는, 예를 들어 애플리케이션 상태 카테고리화기(341c) 및/또는 트래픽 카테고리화기(341d)를 통해 트래픽이 발원되거나 전달되는 하나 이상의 모바일 장치(가령, 모바일 장치(150 또는 250)) 상의 애플리케이션의 활동 상태를 검출, 결정, 식별, 또는 추론할 수 있다. 네트워크 사용을 최적화하기 위해, 전경 애플리케이션 트래픽 vs. 배경 애플리케이션 트래픽이 상이하게 핸들링될 수 있기 때문에, (가령, 애플리케이션 상태 카테고리화기(341c)를 통해) 모바일 장치들 중 하나 이상 상의 애플리케이션이 전경 상태인지 배경 상태인지를 기초로 하여, 활동 상태가 결정될 수 있다.In one embodiment, the traffic analyzer 336 is configured to include one or more mobile devices (eg, mobile devices (eg, mobile device (e.g. 150 or 250) may detect, determine, identify, or infer the activity state of an application on the application. Foreground application traffic vs. traffic Since background application traffic may be handled differently, the activity state may be determined based on whether an application on one or more of the mobile devices is in the foreground or background state (eg, via application state categorizer 341c). have.

이를 대신하여, 또는 이와 함께, 무선 연결된 모바일 장치에 의해(가령, 로컬 프록시 내 애플리케이션 거동 검출기를 통해) 애플리케이션의 활동 상태가 결정되고, 프록시 서버(325)로 전달될 수 있다. 예를 들어, (가령, 백라이트 검출기에 의한) 모바일 장치에서의 백라이트 상태를 기초로 하여, 또는 모바일 장치상의 또 다른 소프트웨어 에이전트 또는 하드웨어 센서(가령, 저항성 센서, 용량성 센서, 주변광 센서, 모션 센서, 터치 센서 등)를 기초로 하여, 휴리스틱(heuristic)의 확신도를 갖는, 활동 상태가 결정, 검출, 식별, 또는 추론될 수 있다. 일반적으로, 백라이트가 켜진 경우, 트래픽은 활성 상태이거나 전경에 있는 애플리케이션으로부터 생성된 것으로 취급되거나 결정되거나, 트래픽은 상호대화형일 수 있다. 덧붙여, 백라이트가 켜진 경우, 트래픽은 사용자 상호대화 또는 사용자 활동으로부터 온 트래픽이라고 취급되거나 결정될 수 있거나, 일정 시간 내에 사용자가 기대 중인 데이터를 포함하는 트래픽일 수 있다. Alternatively or in conjunction with this, the activity status of the application may be determined and communicated to the proxy server 325 by a wirelessly connected mobile device (eg, via an application behavior detector in a local proxy). For example, based on the backlight state in a mobile device (eg by a backlight detector) or another software agent or hardware sensor on the mobile device (eg, resistive sensor, capacitive sensor, ambient light sensor, motion sensor). Activity state can be determined, detected, identified, or inferred with a heuristic certainty. In general, when the backlight is turned on, traffic may be treated or determined to be active or generated from an application in the foreground, or the traffic may be interactive. In addition, when the backlight is turned on, the traffic may be treated or determined as traffic from user interaction or user activity, or may be traffic that includes data the user is expecting within a certain time.

(가령, 사용자 활동 모듈(215)을 통해) 모바일 장치(250)에서 사용자 활동을 산정, 결정, 평가, 추론, 식별하는 것으로부터, 활동 상태가 결정될 수 있고, 프록시 서버(325)로 전달될 수 있다. 하나의 실시예에서, 트래픽이 상호대화형 트래픽인지 유지관리형 트래픽인지 여부를 기초로 하여, 활동 상태가 결정된다. 상호대화형 트래픽은, 사용자 활동/애플리케이션과의 상호대화로부터 직접 생성된 응답 및 요청으로부터의 트랜잭션을 포함할 수 있고, 사용자가 수신하기를 기다리거나 기대 중인 콘텐츠 또는 데이터를 포함할 수 있다. 유지관리형 트래픽은 사용자에 의해 직접 검출되지 않는 애플리케이션의 기능을 지원하기 위해 사용될 수 있다. 또한 유지관리형 트래픽은, 사용자 동작에 응답하여 발생할 수 있지만 사용자가 응답을 적극적으로 기다리거나 대기하지 않는 동작 또는 트랜잭션을 포함할 수 있다. From calculating, determining, evaluating, inferring, and identifying user activity at mobile device 250 (eg, via user activity module 215), an activity state can be determined and communicated to proxy server 325. have. In one embodiment, the activity state is determined based on whether the traffic is interactive or maintenance traffic. Interactive traffic may include responses from transactions and requests generated directly from interactions with user activity / applications, and may include content or data that a user waits or expects to receive. Maintenance traffic can be used to support the functionality of an application that is not directly detected by the user. Maintenance traffic may also include actions or transactions that may occur in response to user actions but that the user does not actively wait for or wait for a response.

일반적으로, 시간 중요도 검출 엔진(341b)이 모바일 장치(250)로부터 전송되는 트래픽, 또는 호스트 서버(300) 또는 프록시 서버(325) 또는 애플리케이션 서버(가령, 앱 서버(app server)/콘텐츠 소스(110))로부터 모바일 장치로 전송되는 트래픽에 포함된 데이터의 시간 민감도를 결정, 식별, 추론할 수 있다. 예를 들어, 시간 민감형 데이터는, 상태 업데이트, 주식 정보 업데이트, IM 프레즌스 정보, 전자메일 메시지 또는 그 밖의 다른 메시지, 모바일 게임 애플리케이션으로부터 생성된 동작, 웹페이지 요청, 위치 업데이트 등을 포함할 수 있다. In general, traffic from which time criticality detection engine 341b is transmitted from mobile device 250, or host server 300 or proxy server 325 or application server (e.g., app server / content source 110). Determine, identify, and infer the time sensitivity of the data contained in the traffic transmitted from)) to the mobile device. For example, time sensitive data may include status updates, stock information updates, IM presence information, e-mail messages or other messages, actions generated from mobile game applications, web page requests, location updates, and the like. .

콘텐츠 또는 요청의 속성상, 시간 민감형이나 시간 중요형이 아닌 데이터는, 메시지 삭제 요청, 읽음 표시, 또는 편집된 동작, 애플리케이션-특정 동작(가령, 친구 추가 또는 친구 삭제 요청), 특정 유형의 메시지, 또는 속성이 빈번하게 변하지 않는 그 밖의 다른 정보 등을 포함할 수 있다. 일부 경우에서, 데이터가 시간 중요형이 아닐 때, 트래픽이 모바일 장치로 전송되게 할 타이밍은, 동일한 모바일 장치로 전송될 필요가 있는 추가 데이터가 존재하는 때를 기초로 한다. 예를 들어, 트래픽 성형 엔진(375)은 하나 이상의 후속하는 트랜잭션과 함께 트래픽을 정렬하여, (가령, 정렬 모듈(378) 및/또는 일괄처리 모듈(377)을 이용해) 모바일 장치 라디오의 한 번의 전원 켜기(power-on) 이벤트로 다 함께 전송되도록 할 수 있다. 또한 정렬 모듈(378)은 동일한 호스트 서버로 전달되는 폴링 요청들을 시간상 가깝게 정렬할 수 있는데, 왜냐하면 이들 요청은 동일한 데이터로 응답될 가능성이 높기 때문이다. Due to the nature of the content or request, data that is not time-sensitive or time-sensitive may include a message deletion request, a read mark, or an edited action, an application-specific action (eg, a friend add or friend delete request), a particular type of message. Or other information whose attributes do not change frequently. In some cases, when the data is not time critical, the timing for causing traffic to be sent to the mobile device is based on when there is additional data that needs to be sent to the same mobile device. For example, traffic shaping engine 375 may align traffic with one or more subsequent transactions, such as by using a sorting module 378 and / or batch module 377 to power up a mobile device radio once. It can be sent together in a power-on event. The sort module 378 can also sort polling requests forwarded to the same host server in close proximity, since these requests are likely to be answered with the same data.

일반적으로, 새롭거나 변경된 데이터가 호스트 서버로부터 모바일 장치로 전송되는지 여부가, 새롭거나 변경된 데이터가 관련된 모바일 장치상의 애플리케이션이 전경에서 실행 중인지 여부(가령, 애플리케이션 상태 카테고리화기(341c)에 의함), 또는 새롭거나 변경된 데이터의 우선순위 또는 시간 중요도를 기초로 결정될 수 있다. 애플리케이션이 모바일 장치에서 전경에 위치하는 경우, 또는 애플리케이션이 모바일 장치에서 전경에 있고 사용자와 상호대화하는 활성 상태인 경우, 및/또는 사용자가 새롭거나 변경된 데이터에 제공될 응답을 기다리는 중인지 여부에 따라, 프록시 서버(325)는 새롭거나 변경된 데이터를 모바일 장치로 전송할 수 있다. 프록시 서버(325)(또는 트래픽 성형 엔진(375))가, 높은 우선순위를 갖거나 시간 중요성을 갖는 새롭거나 변경된 데이터를 전송할 수 있다.In general, whether new or changed data is sent from the host server to the mobile device is determined whether an application on the mobile device with which the new or changed data is associated is running in the foreground (eg, by application state categorizer 341c), or It can be determined based on the priority or time importance of new or changed data. Depending on whether the application is in the foreground on the mobile device, or when the application is in the foreground and interacts with the user on the mobile device, and / or the user is waiting for a response to be provided for new or changed data, The proxy server 325 may send the new or changed data to the mobile device. Proxy server 325 (or traffic shaping engine 375) may send new or changed data with high priority or time importance.

마찬가지로, 애플리케이션이 모바일 장치에서 배경에 있는 경우, 프록시 서버(325)(또는 트래픽 성형 엔진(375))는 새롭거나 변경된 데이터의 전송을 억제할 수 있다. 프록시 서버(325)는 또한, 사용자가 새롭거나 변경된 데이터에 제공되는 응답을 기다리고 있지 않은 경우, 새롭거나 변경된 데이터의 전송을 억제할 수 있으며, 이러한 억제는 호스트 서버로 연결되며 모바일 장치로 무선으로 연결될 수 있는 프록시 서버에 의해 수행된다. Similarly, when the application is in the background at the mobile device, the proxy server 325 (or traffic shaping engine 375) can suppress the transmission of new or changed data. The proxy server 325 may also suppress transmission of new or changed data if the user is not waiting for a response provided to the new or changed data, which suppression is connected to the host server and wirelessly connected to the mobile device. Can be done by a proxy server.

일반적으로, 새롭거나 변경된 데이터를 포함하여, 데이터가 낮은 우선순위를 갖거나, 시간 중요성을 갖는 경우, 시간 주기가 지날 때까지, 또는 (가령, 정렬 모듈(378) 및/또는 일괄처리 모듈(377)을 통해) 전송될 추가 데이터가 있을 때까지, 프록시 서버는 데이터를 전송하는 것을 기다릴 수 있다.In general, if the data has low priority or time importance, including new or changed data, until a time period passes, or (e.g., sort module 378 and / or batch module 377). The proxy server may wait to send data until there is additional data to be sent).

도 4A는 분산 프록시 및 캐시 시스템의 클라이언트 측 구성요소의 또 다른 예시를 도시하는 블록도를 도시하며, 원자 프로세스 기반 트래픽 최적화기(401)를 더 포함한다. 도 4B는 도 4A의 예시의 원자 프로세스 기반 트래픽 최적화기(401)의 추가 구성요소를 도시하는 블록도이다. 4A shows a block diagram illustrating another example of client-side components of a distributed proxy and cache system, and further includes an atomic process based traffic optimizer 401. 4B is a block diagram illustrating additional components of the example atomic process based traffic optimizer 401 of FIG. 4A.

원자 프로세스 기반 트래픽 최적화기(401)는, 패턴 검출기(403), 타이밍/주기성 검출기(404), 및/또는 도착지 주소 파라미터 추출 엔진(405)을 갖는 트래픽 스누핑 모듈(traffic snooping module)(402), 원자 프로세스 생성기(412) 및/또는 애플리케이션 프로파일 생성기/수정기(439)를 갖는 추론 엔진(411)을 포함할 수 있다.The atomic process based traffic optimizer 401 may include a traffic snooping module 402 having a pattern detector 403, a timing / periodic detector 404, and / or a destination address parameter extraction engine 405, Inference engine 411 with atomic process generator 412 and / or application profile generator / modifier 439.

원자 프로세스 기반 트래픽 최적화기(501)는 장치, 가령 모바일 장치(250)로부터 개시된 모바일 애플리케이션 트래픽을 (가령, 트래픽 스누핑 모듈(402)에 의해) 인터셉트하고, 원자 프로세스(가령, 트래픽 스누핑을 통해 검출되는 임의의 패턴을 이용하는 원자 프로세스 생성기(412)에 의한 도 1A의 예시적 원자 프로세스(190))를 발생 또는 생성하는 데 사용될 수 있는 다양한 파라미터를 식별할 수 있다. 원자 프로세스(190)는 하나의 모바일 애플리케이션(가령, 도 1C의 개체(108)) 또는 복수의 애플리케이션으로부터 전송된, 검출된 패턴을 기초로 서로에 대해 어느 정도의 주기성을 갖는 요청들의 세트, 또는 상기 요청들의 세트에 대응하는 지시자를 포함할 수 있고, 복제/시뮬레이트될 수 있다. Atomic process based traffic optimizer 501 intercepts mobile application traffic (eg, by traffic snooping module 402) initiated from a device, such as mobile device 250, and is detected via an atomic process (eg, traffic snooping). Various parameters may be identified that may be used to generate or generate the example atomic process 190 of FIG. 1A by the atomic process generator 412 using any pattern. The atomic process 190 is a set of requests having some degree of periodicity with respect to each other based on the detected pattern, sent from one mobile application (eg, the object 108 of FIG. 1C) or a plurality of applications, or the It may include an indicator corresponding to a set of requests and may be replicated / simulated.

이들 상호관련된 요청들은 서로 다른 시점에, 그러나 가능한 예측 가능한 시점(가령, t1 = 1분, t2 = 2분, t3 = 6분, 등)에 발생할 수 있고, 모바일 애플리케이션(가령, 도 1A의 108)의 유지관리 프로세스 또는 애플리케이션 프로세스를 기초로 자동으로 발생할 수 있거나, 사용자 상호대화에 응답하여 발생할 수 있다. 일반적으로, 애플리케이션, 시스템, 장치, 또는 OS에 의해 개시되는 요청은 예측 가능할 수 있으며, 식별되고 서버로 분담되어 모바일 장치 및 셀룰러 네트워크의 로드를 경감시킬 수 있는 후보가 된다. These correlated requests may occur at different times, but at possible predictable times (eg, t1 = 1 minute, t2 = 2 minutes, t3 = 6 minutes, etc.) and the mobile application (eg, 108 of FIG. 1A). This may occur automatically based on the maintenance process or application process of the application, or in response to user interaction. In general, requests initiated by an application, system, device, or OS may be predictable and identified and distributed to servers to be candidates for mitigating the load on mobile devices and cellular networks.

예를 들어, 일부 경우, 서버/제공자에서 주소지정 가능한(addressable) 개체/요청 중 모두 또는 일부(가령, 도 1A의 예시의 경우, 개체(101, 103, 105) 중 일부 또는 모두)에 대해 만들어진 요청은, (가령, 타이밍/주기성 검출기(404)에 의해) 검출될 수 있는 반복 가능한 타이밍 또는 주기성 패턴을 가진다. 요청 패턴(requesting pattern)은 시퀀스(요청에 의해 각각의 개체가 주소지정되는 순서), 주기성(시간격, 또는 상대적 타이밍, 가령, 또 다른 트래픽 요청 전 또는 후의 시간격), 타이밍(가령, 요청 또는 요청들의 시퀀스가 발생하는 시각 또는 요일), 또는 이들의 조합으로 반복될 수 있다. 물론, 그 밖의 다른 패턴이 가능하다(그리고 검출될 수 있다).For example, in some cases, a server / provider may be created for all or some of the addressable objects / requests (e.g., some or all of the objects 101, 103, 105 in the example of FIG. 1A). The request has a repeatable timing or periodicity pattern that can be detected (eg, by the timing / periodic detector 404). A requesting pattern can be a sequence (the order in which each entity is addressed by a request), periodicity (time interval, or relative timing, such as time interval before or after another traffic request), timing (eg, request or Time or day of the week when the sequence of requests occurs, or a combination thereof. Of course, other patterns are possible (and can be detected).

또한, 애플리케이션, 장치, OS, 또는 시스템 레벨에서 발생하는 특정 트리거 또는 이벤트에 응답하여, (가령, 스누핑 모듈(402)의 패턴 검출기(403)에 의해) 특정 패턴이 발생하는 것으로 검출될 수 있다. 임의의 이러한 검출된 패턴이 추적되고 사용되어, 검출된 패턴에 포함된 복수의 요청을 포함하는 원자 프로세스를 생성할 수 있다. 모바일 장치(250)에서 호스트 서버(가령, 도 1 및 도 2의 예시의 경우, 호스트 서버(100 또는 200))로의 요청을 분담하고, 이에 따라 모바일 네트워크 트래픽을 경감시키며 빈 네트워크 자원을 내기 위해, 원자 프로세스(가령, 도 1A의 예시에서 도시된 원자 프로세스(190))가 사용될 수 있다.In addition, in response to a specific trigger or event occurring at an application, device, OS, or system level, it may be detected that a particular pattern occurs (eg, by the pattern detector 403 of the snooping module 402). Any such detected pattern can be tracked and used to create an atomic process that includes a plurality of requests included in the detected pattern. To share a request from the mobile device 250 to a host server (eg, host server 100 or 200 in the example of FIGS. 1 and 2), thereby mitigating mobile network traffic and freeing up network resources. An atomic process (eg, the atomic process 190 shown in the example of FIG. 1A) may be used.

도 1A의 예시에서 도시된 개체(101)로의 요청 후, 예측되는 시간격(time frame)을 두고 또 다른 개체로의 또 다른 요청이 뒤따름이 검출될 때, 또는 개체(101)로의 요청 후 각각 예측 가능한 시간격을 두고 (가령, 도 1A의 개체(103 및 105)로의) 2개의 추가 요청이 뒤따름이 검출될 때, 원자 프로세스가 생성될 수 있다. 로컬 프록시(가령, 최적화기(401))에 의해 트래픽 패턴이 검출될 수 있고, 원자 프로세스-기반 트래픽 최적화기(401)에 의해 최종 원자 프로세스가 생성될 수 있다. After a request to the entity 101 shown in the example of FIG. 1A, when it is detected that another request to another entity follows a predicted time frame, or after a request to the entity 101, respectively. An atomic process can be generated when two additional requests (eg, to entities 103 and 105 of FIG. 1A) are followed at a predictable time interval. Traffic patterns may be detected by a local proxy (eg, optimizer 401), and a final atomic process may be generated by atomic process-based traffic optimizer 401.

예를 들어, 트래픽 스누핑 모듈(402) 내 패턴 검출기(403)에 의해, 예측 가능한 시간격이 검출될 수 있다. 예를 들어, 한 가지 간단한 경우에서, 빈번하게 또는 항상 개체(101)로의 요청이 6:00am PST에서 발생함을 스누핑 모듈(402)이 검출할 수 있다. 따라서 6:00am PST에서의 개체(101)로의 요청을 포함하도록 (가령, 원자 프로세스 생성기(412)에 의해) 원자 프로세스가 생성될 수 있다. 그 후 이러한 요청은 서버로 분담되어, 모바일 장치로부터 개시되는 대신, 매일 6:00am에서 발생하는 요청을 서버가 수행하도록 할 수 있다. For example, a predictable time interval can be detected by the pattern detector 403 in the traffic snooping module 402. For example, in one simple case, the snooping module 402 may detect that a request to the entity 101 occurs frequently or always at 6:00 am PST. Thus, an atomic process may be created (eg, by atomic process generator 412) to include a request to entity 101 at 6:00 am PST. This request can then be shared with the server, allowing the server to perform a request that occurs at 6:00 am daily, instead of being initiated from the mobile device.

또 하나의 예시에서, 개체(103)로의 요청이 발생할 때마다, 약 10분 후, 개체(105)로의 요청이 발생함을 스누핑 모듈(402)이 검출할 수 있다. 따라서 원자 프로세스 생성기(712)가, 개체(103)로의 요청과 그 10분 후 이뤄지는 개체(105)로의 요청을 포함하는 원자 프로세스를 생성하고, 이 프로세스를 서버가 핸들링하도록 분담시킬 수 있다. 생성된 원자 프로세스를 이용해, 개체(103)로의 요청이 발생할 때마다, 시스템은, 지정된 원자 프로세스를 기초로 하여, 개체(105)로의 요청이 약 10분 후에 발생할 가능성이 높음을 추론할 수 있다. 서버는 이러한 지식을 이용하여, 정상적으로 모바일 장치로부터 개시될 필요가 있는 요청을 수행함으로써, 모바일 애플리케이션 활동을 복제하고, 모바일 장치를 대신하여, 상기 요청을 수행한다. In another example, each time a request to the entity 103 occurs, the snooping module 402 may detect that a request to the entity 105 occurs after about 10 minutes. Thus, the atomic process generator 712 can create an atomic process that includes a request to the entity 103 and a request to the entity 105 10 minutes later, and allocates this process for the server to handle. Using the generated atomic process, whenever a request to the entity 103 occurs, the system can infer that, based on the designated atomic process, the request to the entity 105 is likely to occur after about 10 minutes. The server uses this knowledge to duplicate the mobile application activity by making a request that normally needs to be initiated from the mobile device and perform the request on behalf of the mobile device.

원자 프로세스 기반의 트래픽 최적화기(401)의 하나의 실시예는, 애플리케이션들에 걸쳐, 및/또는 장치들에 걸쳐 정의되는 다양한 원자 프로세스를 이용하여, 검출된 요청을 기초로 다음번 요청을 예상할 수 있는 간섭 엔진(411)을 포함한다. 예를 들어, 추론 엔진(411)이 지정된 원자 프로세스의 일부분인 요청을 검출하는 경우, 간섭 엔진(411)은, 뒤따를 가능성이 높은 하나 이상의 요청을 예상할 수 있으며, 따라서 모바일 장치를 대신하여 이러한 요청을 서버가 수행하게 한다. One embodiment of an atomic process based traffic optimizer 401 can anticipate the next request based on the detected request using various atomic processes defined across applications and / or across devices. Interfering engine 411. For example, if the inference engine 411 detects a request that is part of a specified atomic process, the interference engine 411 may anticipate one or more requests that are likely to follow, and thus on behalf of the mobile device. Have the server execute the request.

일반적으로, 원자 프로세스 기반 트래픽 최적화기(401)는, 모바일 장치(가령, 도 1A의 모바일 장치(150)("로컬 프록시") 또는 도 4A의 개체(250)("로컬 프록시") 등), 반복되는 요청을 할 수 있는 요청 애플리케이션(108)이 위치하는 임의의 장치상에 있을 수 있다. 로컬 장치 또는 모바일 전화기상에서, 원자 프로세스 기반 트래픽 최적화기(401)는 로컬하게 요청들을 인터셉트하고, (가령, 도착지 주소 등을 기초로 하여) 상호관련될 수 있는 요청들을 식별할 수 있다. 또한 원자 프로세스 기반 트래픽 최적화기(401)는 원격 호스트(가령, 호스트(100 또는 200))와 통신하여, 임의의 도착지 주소를, 알려진 도착지의 리스트와 비교함으로써, 검출된 다른 요청과의 상호연관성을 평가할 수 있다. 원자 프로세스 기반 트래픽 최적화기(401)에 의해 로컬하게 앞서 기재된 것처럼, (가령, 원자 프로세스 생성기(412)에 의해) 원자 프로세스가 로컬하게 생성되고, 호스트(가령, 호스트(100 또는 200))로 전송되어 앱 서버/콘텐츠 제공자로 폴링하는 데 사용될 수 있다.In general, atomic process based traffic optimizer 401 may be a mobile device (eg, mobile device 150 (“local proxy”) in FIG. 1A or entity 250 (“local proxy”) in FIG. 4A), It can be on any device on which the requesting application 108 is located, which can make repeated requests. On a local device or mobile phone, atomic process based traffic optimizer 401 may intercept requests locally and identify requests that may be correlated (eg, based on destination address, etc.). The atomic process based traffic optimizer 401 also communicates with a remote host (eg, host 100 or 200) to compare any destination address with a list of known destinations, thereby correlating with other detected requests. Can be evaluated As previously described locally by the atomic process based traffic optimizer 401, the atomic process is generated locally (eg, by the atomic process generator 412) and sent to the host (eg, host 100 or 200). Can be used to poll to an app server / content provider.

이러한 경우, 추론 엔진(411)이 호스트 서버(도 5A의 호스트 서버(300))상에 전적으로 또는 부분적으로 위치함으로써, 특정 모바일 애플리케이션 및 모바일 장치(250)에 대한 원자 프로세스에 따라 검출된 요청을 기초로 특정 활동에서 다음번 요청을 추론할 수 있다. 일반적으로, 원자 프로세스는 특정 애플리케ㅣㅇ션 및 특정 모바일 장치에 대해 형성될 수 있다. 복수의 원자 프로세스는 특정 애플리케이션에 대해 생성될 수 있고, 특정 모바일 장치는 복수의 애플리케이션에 걸쳐 지정된 몇 가지 원자 프로세스를 가질 수 있다. 또한 원자 프로세스 생성기(412)는 애플리케이션 거동의 관측치(observation) 및/또는 서버로 분담된 요청에 응답하여 애플리케이션 서버로부터 수신된 응답을 기초로 하여, 생성된 원자 프로세스의 정의를 업데이트할 수 있다. In this case, the inference engine 411 is wholly or partially located on the host server (host server 300 of FIG. 5A), thereby basing the detected request according to the atomic process for the particular mobile application and mobile device 250. Can infer the next request from a particular activity. In general, atomic processes can be formed for specific applications and specific mobile devices. Multiple atomic processes can be created for a particular application, and a particular mobile device can have several atomic processes designated across multiple applications. The atomic process generator 412 may also update the definition of the generated atomic process based on observations of application behavior and / or responses received from the application server in response to requests shared with the server.

하나의 실시예에서, 예를 들어, 프로파일 생성기/수정기(439)에 의해, 하나 이상의 생성된 원자 프로세스에 따라, 애플리케이션 프로파일이 생성 또는 수정될 수 있다. 애플리케이션 프로파일이 사용자 또는 장치에게 특정적이도록 생성될 수 있다. 덧붙이자면, 사용자 또는 장치 특정적이 아닌 범용 애플리케이션 프로파일이 생성될 수 있다. 애플리케이션 프로파일은 복수의 사용자들 및/또는 복수의 장치들에 걸쳐 사용될 수 있는 애플리케이션에 대하여 지정된 하나 이상의 원자 프로세스를 포함할 수 있다. 또한 애플리케이션 프로파일은 장치 또는 사용자 특정적 구성요소를 포함할 수 있고, 이러한 구성요소는 사용자 또는 장치 또는 둘 모두에게 특정적인 원자 프로세스를 포함한다. 애플리케이션 프로파일 엔트리, 구체적으로, 실시간으로 또는 준실시간 동작 상태 또는 네트워크 상태 또는 애플리케이션 상태, 또는 서비스 제공자 상세사항, 사용자 요청, 장치 상태, 플랫폼 상세사항/수요, 자원 제약사항, 또는 이들의 임의의 조합을 기초로 하여 동적으로, 지정된 원자 프로세스가 업데이트, 개정, 삭제, 재생성, 적용불가라고 표시, 일시적으로 비활성화, 또는 그 밖의 다른 방식으로 편집/조절될 수 있다.In one embodiment, for example, by profile generator / modifier 439, an application profile may be created or modified according to one or more generated atomic processes. The application profile may be created to be specific to the user or device. In addition, a general purpose application profile may be created that is not user or device specific. The application profile may include one or more atomic processes designated for an application that may be used across multiple users and / or multiple devices. Application profiles may also include device or user specific components, which include atomic processes specific to the user or device or both. Application profile entries, specifically, in real time or near real-time operating state or network state or application state, or service provider details, user requests, device states, platform details / demands, resource constraints, or any combination thereof Dynamically on the basis, a designated atomic process can be updated, revised, deleted, recreated, marked as not applicable, temporarily deactivated, or otherwise edited / adjusted.

원자 프로세스 기반 트래픽 최적화기(401) 자체가 장치(250)와 호스트 서버(가령, 호스트(100, 200 또는 300)) 사이에 분산되어, 특정 구성요소 및/또는 이와 관련된 기능이 로컬하게 위치하며, 일부가 상호 배타적이거나 상호 배타적이 아닌 방식으로 원격으로 위치할 수 있다. 예를 들어, 트래픽 스누핑 기능이 로컬 장치(250) 또는 호스트 서버(300) 또는 둘 모두 상에 위치할 수 있다. 둘 모두는 특정 기준을 기초로 하여, 동시에 사용되거나, 선택적으로 사용될 수 있다.The atomic process based traffic optimizer 401 itself is distributed between the device 250 and the host server (e.g., host 100, 200 or 300) so that specific components and / or associated functions are located locally, Some may be remotely located in a manner that is mutually exclusive or not mutually exclusive. For example, traffic snooping functionality may be located on local device 250 or host server 300 or both. Both may be used simultaneously or selectively based on certain criteria.

일반적으로, 원자 프로세스 기반 트래픽 최적화기(401)가, 동일한, 또는 상이하지만 겹치는, 또는 상이하면서 겹치지 않는 기능부 및 특징부(가령, 트래픽 스누핑 모듈(402), 패턴 검출기(403), 타이밍/주기성 검출기(404), 도착지 주소 파라미터 추출 엔진(405), 추론 엔진(411), 원자 프로세스 생성기(412), 및/또는 애플리케이션 프로파일 생성기/수정기(439) 등의 구성요소에 대해 설명된 것들)를 갖는 로컬 장치와 호스트 서버 둘 모두 상에 위치할 수 있다. 도 5A는 분산 프록시 및 캐시 시스템에서 서버 측 구성요소의 하나의 예를 도시한 블록도이며, 원자 프로세스 기반 트래픽 최적화기(501)를 더 포함한다. 도 5B는 도 5A의 예시에서 도시된 원자 프로세스 기반 트래픽 최적화기(501)의 추가 구성요소를 도시하는 블록도를 도시한다. In general, atomic process based traffic optimizer 401 may have the same, or different but overlapping, or different and nonoverlapping functions and features (eg, traffic snooping module 402, pattern detector 403, timing / periodicity). Detector 404, destination address parameter extraction engine 405, inference engine 411, atomic process generator 412, and / or those described for components such as application profile generator / modifier 439). It can be located on both the local device and the host server. 5A is a block diagram illustrating one example of server-side components in a distributed proxy and cache system, and further includes an atomic process based traffic optimizer 501. FIG. 5B shows a block diagram illustrating additional components of the atomic process based traffic optimizer 501 shown in the example of FIG. 5A.

하나의 실시예에서, 원자 프로세스 기반 트래픽 최적화기(501)가 전체적으로 또는 부분적으로 원격 호스트(가령, 호스트(100 또는 200)) 상에 위치한다. 예를 들어, 원격 호스트가 앱 서버(app server)/콘텐츠 제공자로 만들어진 요청을 인터셉트할 수 있고 임의의 상호연관성을 검출할 수 있다. 생성된 원자 프로세스를 이용하여, 호스트 서버 자체가, 생성된 원자 프로세스를 통해 하나의 검출된 요청을 기초로 하여 이뤄질 요청에 대한 추론을 수행할 수 있다(가령, 활동을 완성하기 위한(가령, 페이스북(Facebook)에서 상태 업데이트를 만족시키기, 또는 즉석 메시지를 송신 및 수신하기, 또는 웹 브라우징 이벤트 등을 위한) 하나 이상의 단계를 추론할 수 있다). 호스트 서버상에 위치할 때, 원자 프로세스 기반 트래픽 최적화기(401)는, 애플리케이션별로, 및/또는 장치별로, 원자 프로세스를 추적 및 저장, 및/또는 추후 업데이트할 수 있다. In one embodiment, atomic process based traffic optimizer 501 is located, in whole or in part, on a remote host (eg, host 100 or 200). For example, a remote host can intercept a request made to an app server / content provider and detect any correlation. Using the generated atomic process, the host server itself may perform inference about the request to be made based on one detected request via the generated atomic process (eg, to complete the activity (eg, pace One or more steps (such as satisfying a status update in a book, sending and receiving instant messages, web browsing events, etc.)). When located on a host server, atomic process based traffic optimizer 401 can track and store, and / or later update, atomic processes, on a per application and / or per device basis.

도 6A은 모바일 장치와 프록시 서버 간의 분산 콘텐츠 캐싱과 콘텐츠 캐싱의 분산된 관리를 위한 예시적 프로세스를 도시하는 또 다른 흐름도를 도시한다. 6A shows another flow diagram illustrating an example process for distributed content caching between a mobile device and a proxy server and distributed management of content caching.

도 4의 예시의 분산 시스템 상호대화도에서 도시되는 것처럼, 본 발명의 기법은 클라이언트 측/모바일 장치 측(가령, 도 4의 예시의 경우, 모바일 장치(450))(가령, 도 4의 예시의 경우, 모바일 장치(450))과 서버 측(가령, 호스트 서버(485) 및/또는 선택적 캐싱 프록시(475)를 포함하는 서버 측(470)) 간에 분할된 작업들을 캐싱하는 다양한 양태를 갖는 분산 캐싱 모델이다. As shown in the example distributed system interaction diagram of FIG. 4, the technique of the present invention is based on the client side / mobile device side (eg, mobile device 450 in the example of FIG. 4) (eg, in the example of FIG. 4). Distributed caching with various aspects of caching tasks split between mobile device 450 and server side (e.g., server side 470 including host server 485 and / or optional caching proxy 475). It is a model.

일반적으로, 장치 측 책무는 특정 요청에 대한 응답이 캐싱될 수 있는지(및/또는 캐싱되어야 하는지) 여부를 결정하는 것을 포함할 수 있다. 프록시의 장치 측은 요청과 응답 둘 모두로부터/요청과 응답 동안에 수집되는 정보(가령, 타이밍 특성, 검출된 패턴, 휴리스틱을 이용해 검출된 패턴, 예측가능성 또는 반복성의 지시자)를 기초로, 이러한 결정을 할 수 있으며, 이를 캐싱할 수 있다(가령, 모바일 장치상의 로컬 캐시에 저장함). 또한 장치 측은 분산 캐시 시스템의 서버 측에게 이러한 로컬 캐시 이벤트를 통지할 수 있으며, 콘텐츠 소스의 모니터링(가령, 도 1B-1C의 애플리케이션 서버/콘텐츠 제공자(110))을 통지할 수 있다. In general, device side responsibility may include determining whether a response to a particular request can be cached (and / or should be cached). The device side of the proxy may make this determination based on information collected from both the request and the response / during the request and the response (e.g., timing characteristics, detected patterns, indicators detected using heuristics, indicators of predictability or repeatability). Can be cached (eg, stored in a local cache on the mobile device). The device side may also notify the server side of the distributed cache system of this local cache event and may notify the monitoring of the content source (eg, the application server / content provider 110 of FIGS. 1B-1C).

장치 측은 (가령, 폴링에 의해, 또는 콘텐츠 소스로 폴링 요청을 전송함으로써) 분산 프록시의 서버 측에게 캐시 응답을 주기적으로 검증(validate)하도록 명령할 수 있다. 장치 측은, 특정 캐시 요청에 대한 응답이 로컬 캐시로부터 반환되어야 하는지 여부(가령, 캐시 히트(cache hit)가 검출되는지 여부)를 추가로 결정할 수 있다. 요청 및/또는 콘텐츠 소스로부터 수신된 응답으로부터(또는 요청 및/또는 응답 중에) 수집된 정보를 이용해, 장치 측(가령, 장치상의 로컬 프록시)에 의해 결정이 이뤄질 수 있다.The device side may instruct the server side of the distributed proxy to validate the cache response periodically (eg, by polling, or by sending a polling request to the content source). The device side may further determine whether a response to a particular cache request should be returned from the local cache (eg, whether a cache hit is detected). Decisions can be made by the device side (eg, a local proxy on the device) using the information collected from (or during the request and / or response) received from the request and / or content source.

일반적으로, 서버 측 책무는 관련성에 대하여 캐싱된 응답을 검증하는 것(가령, 캐싱된 응답이 여전히 유효한지 또는 이와 연계된 요청과 관련성이 있는지 여부를 판단하는 것)을 포함할 수 있다. 서버 측은 모바일 장치에게, 장치 측에게 캐싱된 응답이 더 이상 유효하지 않거나, 더 이상 관련성이 없을 때 통지하기 위해 무효화 요청을 전송할 수 있다(가령, 서버가 특정 콘텐츠 소스를 무효화한다). 그 후 장치 측이 로컬 캐시로부터 응답을 제거할 수 있다. In general, server-side duties may include verifying a cached response for relevance (eg, determining whether the cached response is still valid or related to a request associated with it). The server side may send an invalidation request to notify the mobile device when the cached response to the device side is no longer valid or no longer relevant (eg, the server invalidates a particular content source). The device side can then remove the response from the local cache.

도 6A의 다이어그램은, 모바일 장치(가령, 분산 프록시의 클라이언트 측)에서 검출된 각각의 검출되거나 인터셉트된 요청(가령, HTTP 요청)에 대해 수행되는 캐싱 로직 프로세스를 도시한다. 단계(602)에서, 프록시(가령, 도 2A-B에서 도시된 로컬 프록시(275), 또는 도 4의 모바일 장치(450))의 클라이언트 측이 (애플리케이션(가령, 모바일 애플리케이션) 또는 모바일 클라이언트로부터) 요청을 수신한다. 단계(604)에서, URL이 정규화되고, 단계(606)에서 클라이언트 측은 요청이 캐싱 가능한지 여부를 결정하도록 체크한다. 단계(612)에서 요청이 캐싱 가능한 것이 아니라고 결정된 경우, 클라이언트 측 프록시에 의해 인터셉트되는 것 없이 요청-응답 시퀀스와 유사하게, 단계(608)에서 요청이 소스(애플리케이션 서버/콘텐츠 제공자)로 전송되고, 단계(610)에서 응답이 수신되며, 단계(622)에서 요청하는 애플리케이션으로 전달된다. The diagram of FIG. 6A illustrates a caching logic process performed for each detected or intercepted request (eg, HTTP request) detected at a mobile device (eg, client side of a distributed proxy). In step 602, the client side of the proxy (eg, the local proxy 275 shown in FIGS. 2A-B, or the mobile device 450 of FIG. 4) is either an application (eg, a mobile application) or a mobile client. Receive the request. In step 604, the URL is normalized and in step 606 the client side checks to determine whether the request is cacheable. If it is determined in step 612 that the request is not cacheable, then in step 608 the request is sent to the source (application server / content provider), similar to the request-response sequence without being intercepted by the client-side proxy, In step 610 the response is received and forwarded to the requesting application in step 622.

요청이 캐싱 가능하다고 결정된 경우, 단계(612)에서 클라이언트 측은 캐시를 조사(look up)하여, 현재 요청에 대해 캐시 엔트리가 존재하는지 여부를 판단할 수 있다. 현재 요청에 대해 캐시 엔트리가 존재한다고 판단한 경우, 단계(624)에서 클라이언트 측은 엔트리가 유효한지 여부를 판단할 수 있고, 엔트리가 유효하다고 판단한 경우, 단계(615)에서 클라이언트 측은 요청을 체크하여, 검사자(가령, 수정된 헤더 또는 개체 태그)를 포함하는지 여부를 판단할 수 있다. 예를 들어, 가능한 유형의 헤더(가령, eTAG, Modified_Since, must_revlaidate, pragma no_cache)를 기술하는 RFC 2616의 섹션 13.3에서 검증의 개념이 빠져 있으며, 그럴 경우, 단계(622)에서 요청하는 애플리케이션으로 전달될 검증하는 응답을 형성한다(632). 단계(615)에서 판단될 때 요청이 검사자를 포함하지 않는 경우, 단계(630)에서 응답이 로컬 캐시로부터 형성되고, 단계(622)에서 요청하는 애플리케이션으로 전달된다. 이러한 검증 단계는 일반적으로 다른 경우라면 캐싱될 수 없음(un-cacheable)이라고 간주될 콘텐츠에 대해 사용될 수 있다. If it is determined that the request is cacheable, then at step 612 the client side may look up the cache to determine whether a cache entry exists for the current request. If it is determined that a cache entry exists for the current request, the client side may determine whether the entry is valid at step 624, and if it is determined that the entry is valid, the client side checks the request at step 615 to determine the validator. (Eg, modified headers or entity tags). For example, the concept of validation is missing from section 13.3 of RFC 2616, which describes possible types of headers (e.g., eTAG, Modified_Since, must_revlaidate, pragma no_cache), which would then be passed to the requesting application in step 622. A response to verify is formed (632). If the request does not include an inspector as determined in step 615, then in step 630 a response is formed from the local cache and forwarded to the requesting application in step 622. This verification step can generally be used for content that would otherwise be considered un-cacheable.

대신, 단계(624)에서, 캐시 엔트리가 발견되지만, 더 이상이 유효하지 않다고 또는 무효하다고 판단되는 경우, 프록시의 클라이언트 측이 요청을 콘텐츠 소스(애플리케이션 서버/콘텐츠 호스트)로 전송하고(616), 소스로부터 직접 응답을 수신한다(618). 마찬가지로, 단계(612)에서 조사(look up) 동안 캐시 엔트리가 발견되지 않은 경우, 단계(616)에서 요청이 또한 전송된다. 응답이 수신되면, 단계(626)에서, 클라이언트 측이 응답을 체크하여, 캐싱 가능한지 여부를 판단할 수 있다. 캐싱 가능한 경우, 단계(620)에서 응답이 캐싱된다. 그 후, 단계(614)에서 클라이언트가 또 다른 폴을 전송하며, 단계(622)에서 응답을 요청하는 애플리케이션으로 전달한다. Instead, at step 624, if a cache entry is found but is no longer valid or determined to be invalid, the client side of the proxy sends a request to the content source (application server / content host) (616), Receive a response directly from the source (618). Similarly, if a cache entry was not found during a look up at step 612, then a request is also sent at step 616. If a response is received, at step 626, the client side may check the response to determine whether it is cacheable. If cacheable, the response is cached at step 620. The client then sends another poll at step 614 and forwards the application requesting a response at step 622.

도 6B는 콘텐츠 캐싱의 이용 및 분산 프록시 시스템(460)에 의해 수행되는 모니터링을 통해 네트워크 및 배터리 자원이 보존되는 방식으로, 분산 프록시 시스템(460)에 의해, 무선 네트워크에서 모바일 장치(450)로부터 애플리케이션 서버/콘텐츠 제공자(495)로의 데이터 요청이 조화될 수 있는 방법을 도시하는 도면이다. 6B illustrates an application from a mobile device 450 in a wireless network, by a distributed proxy system 460, in such a way that network and battery resources are conserved through the use of content caching and monitoring performed by the distributed proxy system 460. A diagram illustrating how data requests to the server / content provider 495 can be coordinated.

분산 프록시 시스템(460) 없이, 모바일 장치(450)상의 애플리케이션 또는 클라이언트 요청을 만족시킬 때, 모바일 장치(450) 또는 상기 장치(450) 상에서 실행되는 소프트웨어 위젯이 애플리케이션 서버(495)로의 직접적인 데이터 요청(452)(가령, HTTP, GET, POST, 또는 그 밖의 다른 요청)을 수행하고, 서버/제공자(495)로부터 직접 응답(404)을 수신한다. 데이터가 업데이트되면, 업데이트를 반영하기 위해 모바일 장치(450)상의 위젯(455)이 리프레시되며, 짧은 시간 주기 동안 대기하며, 서버/제공자(495)로의 또 다른 데이터 요청을 개시한다. Without the distributed proxy system 460, when satisfying an application or client request on the mobile device 450, the mobile device 450 or a software widget running on the device 450 requests a direct data request to the application server 495 ( 452 (eg, HTTP, GET, POST, or other request) and receive a response 404 directly from the server / provider 495. Once the data is updated, the widget 455 on the mobile device 450 is refreshed to reflect the update, waiting for a short period of time, and initiating another data request to the server / provider 495.

하나의 실시예에서, 장치(450)상의 요청하는 클라이언트 또는 소프트웨어 위젯(455)은, 서버/제공자(495)로 이뤄지는 데이터 요청을 핸들링할 때 분산 프록시 시스템(460)을 사용할 수 있다. 일반적으로, 분산 프록시 시스템(460)은 로컬 프록시(465)(시스템(460)의 클라이언트 측 구성요소로 간주되며 모바일 장치(450)상에 위치할 수 있음), 캐싱 프록시(475)(시스템(460)의 서버 측 구성요소(470)로 간주되며 호스트 서버(485)상에 위치하거나, 호스트 서버(485)의 외부에 전적으로 또는 부분적으로 위치할 수 있음), 및 호스트 서버(485)를 포함할 수 있다. 로컬 프록시(465)는, 임의의 네트워크 또는 네트워크들의 조합을 통해, 캐싱 프록시(475) 및 호스트 서버(485)로 연결될 수 있다. In one embodiment, the requesting client or software widget 455 on the device 450 may use the distributed proxy system 460 when handling data requests made to the server / provider 495. In general, distributed proxy system 460 is local proxy 465 (referred to as a client-side component of system 460 and can be located on mobile device 450), caching proxy 475 (system 460 May be located on the host server 485, or may be located entirely or partially outside the host server 485), and the host server 485. have. The local proxy 465 can be connected to the caching proxy 475 and the host server 485 via any network or combination of networks.

데이터/애플리케이션 요청에 대해 분산 프록시 시스템(460)이 사용될 때, 위젯(455)은 로컬 프록시(465)를 통해 데이터 요청(456)을 수행할 수 있다. 로컬 프록시(465)는 장치 애플리케이션에 의해 만들어진 요청을 인터셉트하고, 요청의 연결 유형(가령, HTTP get 요청, 또는 그 밖의 다른 유형의 요청)을 식별할 수 있다. 그 후, 로컬 프록시(465)는 요청에 대해 (가령, 로컬 저장된 응답이 이용가능한지 여부 및/또는 여전히 유효한지 여부를 판단하기 위해) 임의의 이전 정보에 대해 로컬 캐시에 질의할 수 있다. 로컬 저장된 응답이 이용가능하지 않은 경우, 또는 무효 응답이 저장된 경우, 로컬 프록시(465)는 요청에 대한 정보, 요청이 이뤄진 시점, 및 임의의 추가 데이터를 로컬 캐시에 업데이트하거나 저장할 수 있다. 상기 정보는, 아마도 다음번 요청을 만족시킬 때 사용되기 위해 업데이트될 수 있다. When distributed proxy system 460 is used for a data / application request, widget 455 may perform data request 456 via local proxy 465. The local proxy 465 can intercept a request made by the device application and identify the connection type of the request (eg, an HTTP get request, or some other type of request). The local proxy 465 may then query the local cache for any previous information about the request (eg, to determine whether a locally stored response is available and / or still valid). If a locally stored response is not available, or if an invalid response is stored, the local proxy 465 may update or store information about the request, when the request was made, and any additional data in the local cache. The information can be updated to be used, perhaps the next time it satisfies the request.

그 후 로컬 프록시(465)가 요청을 호스트 서버(485)로 전송하고, 호스트 서버(485)는 요청(456)을 수행할 수 있으며, 응답(458)으로 된 결과를 반환할 수 있다. 로컬 프록시(465)는 결과와, 이에 추가로, 상기 결과에 대한 정보를 저장할 수 있고, 결과를 요청하는 위젯(455)으로 반환할 수 있다. Local proxy 465 may then send the request to host server 485, which may perform request 456 and return the result in response 458. The local proxy 465 may store the result and, in addition, information about the result, and return to the widget 455 requesting the result.

하나의 실시예에서, (특정 시간 주기 내에) 동일한 요청이 복수 번 발생하고, 상기 요청이 동일한 결과를 자주 도출한 경우, 로컬 프록시(465)는 서버(485)로, 결과를 로컬 프록시(465) 또는 요청 위젯(455)으로 반환하기 전에, 결과 변경사항을 찾기 위해 요청이 모니터링되어야 함(가령, 단계(462 및 464))을 통지(460)할 수 있다. In one embodiment, if the same request occurs multiple times (within a certain time period) and the request often yields the same result, the local proxy 465 sends it to the server 485 and sends the result to the local proxy 465. Or, before returning to the request widget 455, the notification 460 may be notified that the request should be monitored (eg, steps 462 and 464) to find the resulting change.

하나의 실시예에서, 요청이 모니터링에 대해 표시되는 경우, 로컬 프록시(465)는 결과를 로컬 캐시에 저장할 수 있다. 이제, 로컬 응답이 이용 가능한 데이터 요청(466)이 위젯(455)에 의해 만들어지고 로컬 프록시(465)에서 인터셉트될 때, 무선 네트워크를 통한 연결 통신을 확립할 필요 없이, 로컬 프록시(465)가 로컬 캐시로부터 응답(468)을 반환할 수 있다. In one embodiment, if the request is marked for monitoring, the local proxy 465 may store the result in a local cache. Now, when a data request 466 with a local response available is made by the widget 455 and intercepted at the local proxy 465, the local proxy 465 is local, without having to establish connection communication over the wireless network. The response 468 can be returned from the cache.

덧붙이자면, 서버 프록시가 모니터링이라고 표시된 요청을 수행(470)하여, 특정 요청에 대한 응답(472)이 변경됐는지 여부를 결정할 수 있다. 일반적으로 호스트 서버(485)는, 위젯(455) 또는 로컬 프록시(465) 동작에 무관하게, 이러한 모니터링을 수행할 수 있다. 요청에 대해 기대되지 않은 응답(472)이 수신될 때마다, 서버(485)는 로컬 프록시(465)에게 응답이 변경됐다고 통지(가령, 단계(474)에서 통지를 무효화)하고, 클라이언트상의 로컬 저장된 응답이 삭제되거나, 새로운 응답으로 대체되어야 한다. In addition, the server proxy may perform a request 470 marked as monitoring to determine whether the response 472 for the particular request has changed. In general, the host server 485 may perform such monitoring regardless of the operation of the widget 455 or the local proxy 465. Each time an unexpected response 472 is received for a request, server 485 notifies local proxy 465 that the response has changed (eg, invalidates the notification in step 474) and stores locally on the client. The response must be deleted or replaced with a new response.

이 경우, 장치(450)에서의 위젯(455)에 의한 다음번 데이터 요청(476)이 호스트 서버(485)로부터 (가령, 캐싱 프록시(475)를 통해) 반환되는 데이터를 도출하고, 단계(478)에서, 캐싱 프록시(475)로부터의 요청이 만족된다. 따라서 분산 프록시 시스템(460)을 이용함으로써, 모바일 장치(450) 상의 위젯 또는 소프트웨어 애플리케이션(455)에 대한 콘텐츠/데이터가 실제로 변했을 때, 무선(셀룰러) 네트워크가 지능적으로 사용된다. 따라서 애플리케이션 데이터의 변경을 찾기 위해 체크될 필요가 있는 트래픽이 무선 (셀룰러) 네트워크를 통해 수행되지 않는다. 이로써, 생성된 네트워크 트래픽의 양이 감소되고, 모바일 장치(450)상에서 라디오 모듈이 켜지는 전체 시간과 횟수가 단축되며, 따라서 배터리 소모량이 감소되고, 추가로 빈 네트워크 대역폭이 이용 가능해진다.In this case, the next data request 476 by the widget 455 at the device 450 derives the data returned from the host server 485 (eg, via the caching proxy 475), and step 478. At, the request from the caching proxy 475 is satisfied. Thus, by using the distributed proxy system 460, a wireless (cellular) network is intelligently used when the content / data for the widget or software application 455 on the mobile device 450 has actually changed. Thus, traffic that needs to be checked to find changes in application data is not performed over the wireless (cellular) network. This reduces the amount of network traffic generated, shortens the overall time and number of times the radio module is turned on on the mobile device 450, thus reducing battery consumption and further freeing network bandwidth.

도 7은 네트워크 액세스 및 콘텐츠 전달 정책을 구현하는 데 사용될 수 있는 서로 다른 트래픽 또는 애플리케이션 카테고리 유형의 예를 나타내는 표(700)를 도시한다. 예를 들어, 사용자가 응답, 전경/배경 애플리케이션을 기다리는 중인지 여부에 무관하게, 그리고 백라이트가 켜져 있거나 꺼져 있는지 여부에 무관하게, 트래픽/애플리케이션 카테고리는 상호대화 또는 배경을 포함할 수 있다. FIG. 7 shows a table 700 illustrating examples of different traffic or application category types that may be used to implement network access and content delivery policies. For example, the traffic / application category may include interaction or background, regardless of whether the user is waiting for a response, a foreground / background application, and whether the backlight is on or off.

도 8은 네트워크 액세스 및 콘텐츠 전달 정책을 구현하는 데 사용될 수 있는 서로 다른 콘텐츠 카테고리 유형의 예를 나타내는 서로 다른 표(800)를 도시한다. 예를 들어, 콘텐츠 카테고리 유형은 높거나 낮은 우선순위를 갖는 콘텐츠 및 시간 중요성 또는 비(non)-시간 중요성의 콘텐츠를 포함할 수 있다. 8 illustrates different tables 800 that illustrate examples of different content category types that may be used to implement network access and content delivery policies. For example, the content category type may include content with high or low priority and content of time importance or non-time importance.

도 9는 무선 네트워크를 통해 모바일 장치로부터 애플리케이션 서버/콘텐츠 제공자(995)로의 데이터 요청을 갖는 애플리케이션(가령, 모바일 애플리케이션)(955) 폴이 로컬 프록시(965) 상에 캐싱될 수 있고, 분산 캐싱 시스템(로컬 프록시(965) 및 (서버 캐시(935) 또는 캐싱 프록시 서버(975)를 갖는) 호스트 서버(985)에 의해 관리될 수 있는 방법을 보여주는 상호대화도를 도시한다.9 shows that an application (eg, mobile application) 955 poll having a data request from a mobile device to an application server / content provider 995 over a wireless network can be cached on the local proxy 965 and distributed caching system. An interactive diagram showing how it can be managed by local proxy 965 and host server 985 (with server cache 935 or caching proxy server 975) is shown.

하나의 예에서, 모바일 애플리케이션/위젯(955)이 애플리케이션 서버/제공자(932)에게 폴링할 때, 폴이 로컬 프록시(965)에 의해 모바일 장치상에서 로컬하게 인터셉트될 수 있다(934). 로컬 프록시(965)는, 요청에서 폴링된 콘텐츠에 대해 캐싱된 콘텐츠가 이용 가능하다고 검출할 수 있으며, 따라서 무선 네트워크 대역폭 또는 또 다른 무선 네트워크 자원을 사용할 필요 없이, 인터셉트된 폴(936)을 만족시키기 위해, 로컬 캐시로부터 응답을 불러올 수 있다. 그 후, 모바일 애플리케이션/위젯(955)은 캐시 엔트리(938)로부터의 폴에 대한 응답을 수신할 수 있다.In one example, when the mobile application / widget 955 polls the application server / provider 932, the poll may be intercepted locally on the mobile device by the local proxy 965 (934). The local proxy 965 may detect that cached content is available for the content polled in the request, thus satisfying the intercepted poll 936 without using wireless network bandwidth or another wireless network resource. To do this, you can retrieve the response from the local cache. The mobile application / widget 955 can then receive a response to the poll from the cache entry 938.

또 다른 예에서, 모바일 애플리케이션 위젯(955)이 애플리케이션 서버/제공자(940)로 폴링한다. 폴이 로컬 프록시(965)에 의해 인터셉트되고(942), 캐시 콘텐츠가 로컬 캐시에서 이용 가능하지 않음을 검출하며, 폴링받는 소스를 캐싱하도록 설정하기로 결정한다(944). 요청을 만족시키기 위해, 폴이 콘텐츠 소스로 포워딩된다(946). 애플리케이션 서버/제공자(995)가 애플리케이션으로부터 폴 요청을 수신하고, 현재 요청을 만족시키기 위한 응답을 제공한다(948). 단계(950)에서, 애플리케이션(가령, 모바일 애플리케이션)/위젯(955)은 애플리케이션 서버/제공자로부터 응답을 수신하여 요청을 만족시킬 수 있다. In another example, the mobile application widget 955 polls the application server / provider 940. The poll is intercepted by the local proxy 965 (942), detects that cache content is not available in the local cache, and decides to set up to cache the polled source (944). To satisfy the request, the poll is forwarded to the content source (946). Application server / provider 995 receives a poll request from the application and provides a response to satisfy the current request (948). In step 950, the application (eg, mobile application) / widget 955 may receive a response from the application server / provider to satisfy the request.

이와 함께, 콘텐츠 캐싱을 설정하기 위해, 로컬 프록시(965)는 애플리케이션의 폴링 빈도를 추적하고, 호스트 서버로 전송될 폴링 스케줄을 설정할 수 있다(952). 로컬 프록시는 캐싱 설정을 호스트 서버로 전송한다(954). 호스트 서버(985)는, 예를 들어, 폴링될 애플리케이션 서버/제공자의 식별자와, 선택사항으로서, 폴링 스케줄을 포함하는 캐시 설정을 사용할 수 있다(956). 호스트 서버(985)는 애플리케이션 서버/제공자(995)로 폴링하여, 모바일 장치를 대신하여, 요청(958)에 대한 응답을 모니터링할 수 있다. 애플리케이션 서버는 호스트 서버로부터 폴을 수신하고, 응답한다(960). 호스트 서버(985)는 동일한 응답이 수신됐다고 판단하며, 특정 폴링 스케줄(962)에 따라, 애플리케이션 서버(995)로 폴링한다. 애플리케이션 서버/콘텐츠 제공자(995)는 폴을 수신하고 이에 따라 응답한다(964). 호스트 서버(985)는 변경되거나 새로운 응답을 검출하고, 로컬 프록시(965)로 통지한다. 호스트 서버(985)는 변경되거나 새로운 응답을 서버 캐시 또는 캐싱 프록시(968)에 추가로 저장할 수 있다. 로컬 프록시(965)는 호스트 서버(985)로부터, 새롭거나 변경된 데이터가 현재 이용 가능하다는 통지를 수신하고, 영향받은 캐시 엔트리를 무효화할 수 있다(970). 그 후, 애플리케이션(가령, 모바일 애플리케이션)/위젯(955)이 동일한 서버/콘텐츠 제공자에 대해 동일한 요청을 발생시키고(972), 로컬 프록시는 어떠한 유효한 캐시 엔트리도 이용 가능하지 않는다고 판단하며, 대신, 예를 들어 HTTP 연결을 통해 서버 캐시(974)로부터 응답을 불러온다. 호스트 서버(985)는 새로운 응답에 대한 요청을 수신하고, 로컬 프록시(965)로 응답을 다시 전송한다(976). 따라서 모바일 장치가 자신의 라디오를 이용하거나 모바일 네트워크 대역폭을 소비할 필요 없이, 서버 캐시 또는 캐싱 프록시(978)로부터의 요청이 만족됨으로써, 네트워크 자원을 보존할 수 있다. In addition, to set up content caching, the local proxy 965 can track the polling frequency of the application and set a polling schedule to be sent to the host server (952). The local proxy sends caching settings to the host server (954). The host server 985 may use cache settings, including, for example, an identifier of the application server / provider to be polled and, optionally, a polling schedule (956). The host server 985 may poll the application server / provider 995 to monitor the response to the request 958 on behalf of the mobile device. The application server receives the poll from the host server and responds (960). The host server 985 determines that the same response has been received and polls the application server 995 according to a particular polling schedule 962. The application server / content provider 995 receives the poll and responds accordingly (964). The host server 985 detects the changed or new response and notifies the local proxy 965. The host server 985 may further store modified or new responses in the server cache or caching proxy 968. Local proxy 965 may receive a notification from host server 985 that new or changed data is currently available, and invalidate the affected cache entry (970). The application (eg, mobile application) / widget 955 issues the same request for the same server / content provider 972 and the local proxy determines that no valid cache entry is available, instead, yes For example, a response is retrieved from the server cache 974 via an HTTP connection. The host server 985 receives the request for a new response and sends back the response to the local proxy 965 (976). Thus, the request from the server cache or caching proxy 978 can be satisfied, thereby conserving network resources without the mobile device having to use its radio or consume mobile network bandwidth.

또는, 단계(980)에서 애플리케이션(가령, 모바일 애플리케이션)이 동일한 요청을 생성할 때, 로컬 프록시(965)는, 어떠한 유효한 캐시 엔트리도 이용가능하지 않다고 판단하는 것에 응답하여, 단계(982)에서, 폴을 애플리케이션 서버/제공자에게 모바일 네트워크를 통해 포워딩한다. 단계(984)에서 애플리케이션 서버/제공자(995)는 모바일 네트워크를 통해 폴을 수신하고, 응답을 모바일 장치로 전송한다. 따라서 단계(986)에서 모바일 네트워크를 이용해 서버/제공자로부터 요청이 만족된다. Or, in step 982, when the application (eg, mobile application) generates the same request in step 980, the local proxy 965 determines that no valid cache entry is available. Forward the poll to the application server / provider over the mobile network. In step 984 the application server / provider 995 receives a poll over the mobile network and sends a response to the mobile device. Thus, in step 986 the request from the server / provider using the mobile network is satisfied.

도 10은 애플리케이션(1055)이, 무선 네트워크를 통해 콘텐츠 식별자 내 캐시 디피트 메커니즘(가령, 캐싱을 디피트하도록 의도된 식별자)을 이용하고 무선 네트워크를 통해 검출되고 로컬하게 캐싱되는 애플리케이션 서버/콘텐츠 제공자(1095)로부터의 콘텐츠에 대해 폴링하는 방법을 도시한다. 10 illustrates an application server / content provider in which an application 1055 utilizes a cache dip mechanism in a content identifier (eg, an identifier intended to dictate caching) over a wireless network and is detected and cached locally over the wireless network. A method of polling for content from 1095 is shown.

하나의 예에서, 단계(1032)에서 애플리케이션(가령, 모바일 애플리케이션)/위젯(1055)이 애플리케이션 서버/제공자로 폴링할 때, 단계(1034)에서 로컬 프록시(1065)에 의해 모바일 장치상에서 폴이 로컬하게 인터셉트될 수 있다. 단계(1034)에서, (임의의 확신도 및 휴리스틱을 이용해) 모바일 장치상의 로컬 프록시(1065)는 또한, 서버 제공자에 의해, 캐시 디피트 수단이 이용되거나, 이용될 수 있다고 판단할 수 있다. In one example, when an application (eg, mobile application) / widget 1055 polls an application server / provider at step 1032, the poll is local on the mobile device by local proxy 1065 at step 1034. Can be intercepted. In step 1034, the local proxy 1065 on the mobile device (with any confidence and heuristic) may also determine, by the server provider, that the cache defeat means may or may be used.

로컬 프록시(1065)는 요청에서 폴링된 콘텐츠에 대해 캐싱된 콘텐츠가 이용가능한다고 검출할 수 있고, 따라서 무선 네트워크 대역폭 또는 또 다른 무선 네트워크 자원을 사용할 필요 없이, 로컬 캐시로부터 응답을 불러와, 인터셉트된 폴(1036)을 만족시킬 수 있다. 단계(1038)에서 애플리케이션(가령, 모바일 애플리케이션)/위젯(1055)은 캐시 엔트리(가령, 모바일 장치상에 로컬하게 저장된 캐시 엔트리)로부터의 폴에 대한 응답을 수신할 수 있다. The local proxy 1065 may detect that cached content is available for content polled in the request, thus fetching a response from the local cache and intercepting, without the need to use wireless network bandwidth or another wireless network resource. The pole 1036 may be satisfied. In step 1038 the application (eg, mobile application) / widget 1055 may receive a response to a poll from a cache entry (eg, a cache entry stored locally on the mobile device).

또 다른 예에서, 단계(1040)에서 애플리케이션(가령, 모바일 애플리케이션) 위젯(1055)은 애플리케이션 서버/제공자(1095)로 폴링한다. 단계(1042)에서, 로컬 프록시(1065)에 의해 폴이 인터셉트되며, 상기 로컬 프록시(1065)는 서버/제공자(1095)에 의해 캐시 디피트 메커니즘이 이용된다고 판단한다. 또한 로컬 프록시(1065)는 이러한 요청에 대해 캐싱된 콘텐츠가 로컬 캐시에서 이용 가능하지 않음을 검출하고, 단계(1044)에서 폴링 받는 콘텐츠 소스를 캐싱을 위해 설정하기로 결정한다. 그 후, 단계(1046)에서, 로컬 프록시(1065)는 요청의 식별자의 패턴(가령, 포맷 또는 구문)을 추출하고, 애플리케이션의 폴링 빈도를 추적하여, 호스트 서버(1085)의 폴링 스케줄을 설정할 수 있다. In another example, at step 1040 the application (eg, mobile application) widget 1055 polls the application server / provider 1095. At step 1042, the poll is intercepted by local proxy 1065, which determines that a cache defeat mechanism is used by server / provider 1095. The local proxy 1065 also detects that cached content for this request is not available in the local cache, and determines in step 1044 to set up the polled content source for caching. Then, at step 1046, the local proxy 1065 may extract a pattern (eg, format or syntax) of the identifier of the request, track the polling frequency of the application, and set a polling schedule of the host server 1085. have.

단계(1048)에서, 요청을 만족시키기 위해, 폴 요청이 콘텐츠 제공자(1095)로 포워딩된다. 단계(1050)에서 애플리케이션 서버/제공자(1095)는 애플리케이션으로부터 폴 요청을 수신하고, 응답을 제공하여, 현재 요청을 만족시킬 수 있다. 단계(1052)에서, 애플리케이션(가령, 모바일 애플리케이션)/위젯(1055)은 애플리케이션 서버/제공자(1095)로부터의 응답을 수신함으로써, 요청을 만족시킬 수 있다. At step 1048, the poll request is forwarded to the content provider 1095 to satisfy the request. In step 1050 the application server / provider 1095 may receive a poll request from the application and provide a response to satisfy the current request. In step 1052, the application (eg, mobile application) / widget 1055 may satisfy the request by receiving a response from the application server / provider 1095.

이와 함께, 단계(1054)에서, 콘텐츠 캐싱을 설정하기 위해, 로컬 프록시(1065)가, 차후의 식별과 불러오기(retrieval)를 위해 수신된 응답과 연계하여 응답을 캐싱하고 정규화된 버전의 식별자(또는 정규화된 식별자의 해시 값(hash value))를 저장한다. 단계(1056)에서 로컬 프록시가 호스트 서버(1085)로 캐시 설정을 전송한다. 예를 들어, 캐시 설정은, 식별자 및/또는 정규화된 버전의 식별자를 포함한다. 일부 경우, 정규화된 식별자와 다른 수정된 식별자가 호스트 서버(1085)로 전송된다. Along with this, in step 1054, in order to set up content caching, the local proxy 1065 caches the response in association with the response received for later identification and retrieval, and identifies the fully qualified version of the identifier ( Or hash value of the normalized identifier. In step 1056 the local proxy sends the cache settings to the host server 1085. For example, the cache setting may include an identifier and / or a fully qualified version of the identifier. In some cases, a modified identifier that is different from the normalized identifier is sent to the host server 1085.

단계(1058)에서, 호스트 서버(1085)는, 예를 들어, 폴링 받을 애플리케이션 서버/제공자의 식별자와, 선택사항으로서, 폴링 스케줄을 포함하는 캐시 설정을 사용할 수 있다. 단계(1060)에서 호스트 서버(1085)는 모바일 장치를 대신하여 요청에 대한 응답을 모니터링하기 위해 애플리케이션 서버/제공자(1095)로 폴링할 수 있다. 단계(1062)에서 애플리케이션 서버(1095)는 호스트 서버(1085)로부터의 폴을 수신하고 응답한다. 단계(1064)에서 호스트 서버(1085)는 동일한 응답이 수신됐다고 판단하고, 예를 들어, 특정 폴링 스케줄에 따라, 그리고 정규화된 또는 수정된 식별자를 이용해 애플리케이션 서버(1095)로 폴링한다. 단계(1066)에서 애플리케이션 서버/콘텐츠 제공자(1095)는 폴을 수신하고, 이에 따라서 응답한다. In step 1058, the host server 1085 may use a cache setting that includes, for example, an identifier of the application server / provider to be polled and, optionally, a polling schedule. In step 1060, the host server 1085 may poll the application server / provider 1095 to monitor the response to the request on behalf of the mobile device. In step 1062, the application server 1095 receives and responds to a poll from the host server 1085. In step 1064 the host server 1085 determines that the same response has been received and polls the application server 1095 according to a particular polling schedule, for example, and using a normalized or modified identifier. In step 1066 the application server / content provider 1095 receives the poll and responds accordingly.

이때, 단계(1068)에서, 호스트 서버(1085)는 변경되거나 새로운 응답을 검출하고, 로컬 프록시(1065)를 통지한다. 단계(1070)에서 호스트 서버(1085)는 변경되거나 새로운 응답을 서버 캐시(1035) 또는 캐싱 프록시(1075)에 추가로 저장할 수 있다. 단계(1072)에서, 로컬 프록시(1065)는 호스트 서버(1085)로부터, 새롭거나 변경된 데이터가 현재 이용가능하다는 통지를 수신하고, 영향받은 캐시 엔트리를 무효화할 수 있다. 그 후, 단계(1074)에서, 애플리케이션(가령, 모바일 애플리케이션)/위젯이 동일한 서버/콘텐츠 제공자(1095)에 대해 동일한 요청을 생성하고, 로컬 프록시(1065)가 어떠한 유효한 캐시 엔트리도 이용가능하지 않다고 판단하며, 대신, 단계(1076)에서, 가령, HTTP 연결을 통해, 서버 캐시로부터 응답을 불러온다. 단계(1078)에서, 호스트 서버(1085)는 새로운 응답에 대해 요청을 수신하고, 응답을 로컬 프록시(1065)로 다시 전송한다. 따라서 단계(1080)에서 모바일 장치가 자신의 라디오를 사용하거나 모바일 네트워크 대역폭을 소모할 필요없이, 서버 캐시 또는 캐싱 프록시로부터 요청이 만족되고, 따라서 네트워크 자원이 보존된다. At this time, in step 1068, the host server 1085 detects the changed or new response and notifies the local proxy 1065. In step 1070 the host server 1085 may further store the changed or new response in the server cache 1035 or caching proxy 1075. At step 1072, local proxy 1065 may receive a notification from host server 1085 that new or changed data is currently available and invalidate the affected cache entry. Then, at step 1074, the application (eg, mobile application) / widget generates the same request for the same server / content provider 1095, and the local proxy 1065 says that no valid cache entry is available. And instead, in step 1076, retrieve the response from the server cache, eg, over an HTTP connection. In step 1078, the host server 1085 receives the request for a new response and sends the response back to the local proxy 1065. Thus, in step 1080, the request from the server cache or caching proxy is satisfied, without the mobile device having to use its radio or consume mobile network bandwidth, thus conserving network resources.

또는, 애플리케이션(가령, 모바일 애플리케이션)(1055)이 동일한 요청을 생성할 때, 로컬 프록시(1065)는, 단계(1082)에서, 어떠한 유효한 캐시 엔트리도 이용 가능하지 않는다고 판단한 것에 응답하여, 단계(1082)에서 모바일 네트워크를 통해 폴을 애플리케이션 서버 제공자(1095)에게 포워딩한다. 단계(1086)에서 애플리케이션 서버/제공자(1095)는 폴을 수신하며, 모바일 네트워크를 통해 응답을 모바일 장치로 전송한다. 따라서 단계(1088)에서, 모바일 네트워크(1086)를 이용해 서버/제공자로부터 요청이 만족된다.Or, when the application (eg, mobile application) 1055 generates the same request, the local proxy 1065 responds, at step 1082, in response to determining that no valid cache entry is available, step 1082. Forward the poll to the application server provider 1095 over the mobile network. In step 1086 the application server / provider 1095 receives the poll and sends a response to the mobile device over the mobile network. Thus, at step 1088, the request from the server / provider is satisfied using the mobile network 1086.

도 11은 모바일 장치를 대신하여 요청을 하기 위한 예시적 프로세스를 나타내는 흐름도이다.11 is a flow diagram illustrating an example process for making a request on behalf of a mobile device.

프로세스(1102)에서, 모바일 장치로부터의 요청들의 시퀀스가 검출된다. 요청은, 사용자 요청을 만족시킴의 결과로서, 사용자에 의해, 또는 애플리케이션에 의해 개시되거나, 배경 데이터 교환(애플리케이션 업데이트/유지관리 등)으로서 사용될 수 있다. 프로세스(1104)에서, 재현가능한 패턴이 모바일 장치로부터의 요청의 시퀀스로 식별된다. 도 12의 예시에서 흐름 'A'로 도시된 예시적 특성들의 일부를 이용해, 재현가능한 패턴이 식별될 수 있다. In process 1102, a sequence of requests from the mobile device is detected. The request may be initiated by the user or by the application as a result of satisfying the user request, or used as background data exchange (application update / maintenance, etc.). In process 1104, the reproducible pattern is identified as a sequence of requests from the mobile device. Using some of the example characteristics shown as flow 'A' in the example of FIG. 12, a reproducible pattern can be identified.

프로세스(1106)에서, 재현 가능한 패턴을 이용해 모바일 장치와 별개의 개체에 요청들의 시퀀스가 복제된다. 복제는 요청의 도착지(가령, 호스트 주소, 콘텐츠 소스 주소), 요청의 콘텐츠/속성, 요청의 타이밍/주기성 등을 기초로 할 수 있다. 프로세스(1108)에서, 모바일 장치에서의 자원을 보존하기 위해 모바일 장치를 대신하여 상기 개체에 의해 요청의 시퀀스가 전송된다. 하나의 실시예에서, 상기 개체는 모바일 장치와 무선 통신할 수 있는 (분산 프록시 시스템의 서버 측의) 프록시 서버이다. 개체가 요청들의 시퀀스를, 인터넷, 임의의 IP 또는 광대역 연결, 또는 그 밖의 다른 임의의 연결을 포함해 임의의 유형의 유선 또는 무선 연결을 통해, 하나 이상의 도착지로 전송할 수 있어서, 모바일 장치 요청이 예측되고 재생산될 수 있을 때 셀룰러 네트워크 자원이 보존될 수 있도록 한다. In process 1106, the sequence of requests is replicated to a separate entity from the mobile device using the reproducible pattern. Replication may be based on the destination of the request (eg, host address, content source address), content / properties of the request, timing / periodicity of the request, and the like. In process 1108, a sequence of requests is sent by the entity on behalf of the mobile device to conserve resources at the mobile device. In one embodiment, the entity is a proxy server (on the server side of a distributed proxy system) capable of wireless communication with a mobile device. The entity may send a sequence of requests to one or more destinations over any type of wired or wireless connection, including the Internet, any IP or broadband connection, or any other connection, such that the mobile device request is predicted. And allows cellular network resources to be conserved when they can be reproduced.

또한, 모바일 장치로부터 원격에 위치하거나 모바일 장치에 의해 식별되는 프록시 서버(가령, 분산 프록시 시스템의 클라이언트 측의 로컬 프록시)에 의해 재현 가능한 패턴이 검출 또는 식별될 수 있다. 모바일 장치에 의해 식별되는 경우, 재현 가능한 패턴이 복제 및/또는 시뮬레이션을 위해 프록시 서버로 전달될 수 있다. 덧붙이자면, 로컬 프록시 및/또는 프록시 서버에 의해, 이벤트의 시퀀스로부터 원자 프로세스가 생성된다. 일반적으로, 원자 프로세스는 임의의 패턴, 반복 가능성, 또는 주기성을 갖는다고 검출된 모바일 장치로부터의 이벤트/요청의 임의의 세트를 포함한다. 따라서 원자 프로세스의 하나의 요청이 검출된 경우, 시스템은 원자 프로세스의 나머지 요청들이 발생할 가능성이 높다고 예측할 수 있다. 이러한 예측은 원자 프로세스의 다음번 요청 또는 그 밖의 다른 요청을, 복제 및/또는 시뮬레이션되어 도착지로 전송되도록 원격 개체로 분담시킬 수 있다. In addition, reproducible patterns may be detected or identified by a proxy server (eg, a local proxy on the client side of a distributed proxy system) that is remote from or identified by the mobile device. When identified by the mobile device, a reproducible pattern can be passed to the proxy server for replication and / or simulation. In addition, an atomic process is generated from the sequence of events by the local proxy and / or proxy server. In general, an atomic process includes any set of events / requests from a mobile device that are detected to have any pattern, repeatability, or periodicity. Thus, if one request of the atomic process is detected, the system can predict that the remaining requests of the atomic process are likely to occur. This prediction may share the next request or other request of the atomic process with the remote entity to be replicated and / or simulated and sent to the destination.

하나의 실시예에서, 요청들의 시퀀스가 모바일 장치상의 하나의 애플리케이션의 서버의 서로 다른 주소 지정된 개체로 전달된다. 도착지 주소(가령, 도 1A에 도시된 것)로부터, 요청들이 애플리케이션 서버의 상이한 개체들로 전달되고 상이한 도착지 주소를 가질지라도, 시스템은 모바일 장치상의 동일한 애플리케이션으로부터의 요청의 시퀀스가 하나의 애플리케이션 서버/호스트로 전달됨을 확인할 수 있다. 예를 들어, 도착지 주소의 패턴 또는 공유 파라미터가 요청이 하나의 서버로 전달됨을 지시할 수 있다. 하나의 실시예에서, 이러한 요청은 원자 프로세스로서 생성되고, 또 다른 개체에 의해 복제 및 시뮬레이션을 위해 분담될 수 있어서, 모바일 장치 또는 모바일 애플리케이션 자체가 셀룰러 네트워크를 통해 예측 가능한 이벤트를 반복적으로 전송할 필요가 없도록 할 수 있다. In one embodiment, the sequence of requests is delivered to different addressed entities of the server of one application on the mobile device. From the destination address (eg, shown in FIG. 1A), although the requests are forwarded to different entities of the application server and have different destination addresses, the system has a single application server / sequence of requests from the same application on the mobile device. You can see that it is delivered to the host. For example, a pattern or shared parameter of the destination address may indicate that the request is forwarded to one server. In one embodiment, this request is generated as an atomic process and can be shared for replication and simulation by another entity, such that the mobile device or mobile application itself does not need to repeatedly send a predictable event over the cellular network. You can do that.

프로세스(1110)에서, 모바일 애플리케이션에서의 동작을 만족시키기 위해서, 또는 배경 유지관리(background maintenance)를 위해서, 요청들의 시퀀스에 대한 응답이 모바일 장치로 전달된다. 응답이 소스(가령, 애플리케이션 또는 콘텐츠 소스)에서부터 모바일 장치로 직접 전송되거나, 프록시 서버로 전송되고, 그 후 상기 프록시 서버가 응답을 모바일 장치로 전송한다. In process 1110, a response to the sequence of requests is passed to the mobile device to satisfy operation in the mobile application, or for background maintenance. The response is sent directly from the source (eg, application or content source) to the mobile device, or sent to the proxy server, which then sends the response to the mobile device.

일반적으로, 요청의 시퀀스는, 모바일 애플리케이션, 브라우저, 인터넷 브라우저, 또는 그 밖의 다른 위젯과 사용자의 상호대화의 결과로서 생성된 요청을 포함할 수 있다. 또한 요청들의 시퀀스는 배경에서 애플리케이션 또는 위젯에 의해 자동으로 생성되는(가령, 사용자에 의해 사용되지 않는) 요청을 포함할 수 있다. 일부 경우, 요청들의 시퀀스는 트리거링 이벤트(triggering event)에 비교해, 예측 가능한 시간격에서 발생할 수 있다. 상기 트리거링 이벤트는 시스템 이벤트, 애플리케이션 이벤트, 장치 이벤트, 및/또는 사용자 이벤트 또는 활동일 수 있다. 상기 트리거링 이벤트는 요청들의 시퀀스의 하나의 요청일 수 있다. 프로세스(1112)에서, 요청들의 시퀀스의 개시를 유발하는 트리거링 이벤트가 식별된다. In general, the sequence of requests may include a request generated as a result of the user's interaction with a mobile application, browser, internet browser, or other widget. The sequence of requests may also include a request that is automatically generated (eg, not used by the user) by the application or widget in the background. In some cases, the sequence of requests may occur at a predictable time interval compared to a triggering event. The triggering event may be a system event, an application event, a device event, and / or a user event or activity. The triggering event may be one request in a sequence of requests. In process 1112, a triggering event is identified that causes the initiation of the sequence of requests.

프로세스(1114)에서, 트리거링 이벤트의 발생이 검출된다. 프로세스(1116)에서, 이벤트의 시퀀스가 개체에서 시뮬레이트되고, 프로세스(1118)에서 모바일 장치에서 임의의 요청이 인터셉트되고 전송되지 않도록 한다. 덧붙여, 이벤트가 개체로부터 의도된 도착지로 전송될 수 있기 때문에, 프로세스(1122)에서 모바일 장치의 장치 라디오가 꺼짐(off) 상태인 경우 켜지지 않도록 한다. In process 1114, the occurrence of a triggering event is detected. In process 1116, a sequence of events is simulated in the entity, and in process 1118, no request is intercepted and sent at the mobile device. In addition, because the event may be sent from the entity to its intended destination, the process 1122 is not turned on if the device radio of the mobile device is in the off state.

도 12는 모바일 장치로부터의 요청에서 재현 가능한 패턴을 식별하거나 검출하기 위해 예시적 프로세스를 도시하는 흐름도이다. 12 is a flow chart illustrating an example process for identifying or detecting a reproducible pattern in a request from a mobile device.

프로세스(1202)에서, 요청들의 시퀀스에 의해 주소지정된 도착지 주소 내 파라미터가 추출된다. 프로세스(1208)에서 이전 아웃고잉 요청들의 도착지 주소가 서로 비교된다. 또는, 프로세스(1210)에서, 이전 아웃고잉 요청들의 도착지 주소는 알려진 주소들의 리스트와 비교된다. In process 1202, the parameters in the destination address addressed by the sequence of requests are extracted. In process 1208, the destination address of previous outgoing requests is compared with each other. Or, in process 1210, the destination address of previous outgoing requests is compared with a list of known addresses.

프로세스(1212)에서, 요청이 동일한 애플리케이션으로부터 발원되는지 여부, 및/또는 상기 요청이 동일한 서버로 전달되는지 여부가 판단된다. 예를 들어, 상이하지만 일부 동일/유사한 파라미터를 공유하는 도착지 주소는, 요청이 동일한 애플리케이션으로부터 발원된 것이거나, 동일한 호스트(동일한 호스트의 상이한 주소지정 가능한 개체일 수 있을지라도)로 전달되는 것임을 지시할 수 있다. 그럴 경우, 프로세스(1214)에서, 재현 가능한 패턴이 식별된다. 덧붙이자면, 또 다른 기준이 사용되어, 예를 들어, 패턴 추출 또는 패턴 매칭 기법을 통하여 식별된 패턴을 통해, 요청들의 하나의 세트가 동일한 애플리케이션/위젯으로부터 발원된 것이거나, 동일한 호스트/서버로 전달되는 것이라고 판단할 수 있다. 또한 도착지 주소가 독립적으로, 알려진 도착지에 대한 알려진 주소들의 리스트나 표(요청이 동일한 애플리케이션으로부터 발원된 것 및/또는 동일한 서버로 전달되는 것이라고 판단하기 위한 수단)와 비교될 수 있다. In process 1212, it is determined whether the request originates from the same application and / or whether the request is forwarded to the same server. For example, a destination address that shares different but some identical / similar parameters may indicate that the request originated from the same application, or is forwarded to the same host (even though it may be a different addressable entity of the same host). Can be. If so, in process 1214, a reproducible pattern is identified. In addition, another criterion may be used, for example, through a pattern identified through a pattern extraction or pattern matching technique, one set of requests originated from the same application / widget, or forwarded to the same host / server. It can be judged. The destination address may also be independently compared to a list or table of known addresses for known destinations (means for determining that the request originated from the same application and / or forwarded to the same server).

마찬가지로, 예를 들어, 프로세스(1206)에서처럼, 프로세스(1204)에서, 타이밍 패턴이 요청들의 시퀀스에서 결정되는 경우, 또는 요청들의 시퀀스에서 주기성 패턴이 결정되는 경우, 재현 가능한 패턴이 식별될 수 있다. 요청들의 시퀀스의 타이밍 패턴이 절대 시점(가령, 요일 'x' 또는 한 달 중 특정일 'x' 등에서의 시점 't1', 't2', 't3' 등)에 의해 특징지어질 수 있다. 또한 타이밍 패턴은 상대 시점으로 특징지어지거나, 하나 이상의 이벤트/활동에 상대적으로 특징지어질 수 있다. 예를 들어, 요청, 또는 요청들의 시퀀스가, 특정 사용자, 시스템, 애플리케이션, 또는 장치 이벤트 후에, 발생한다고 검출될 수 있다. 또한 요청이, 또 다른 요청 후, 약간의 허용가능한 임계치 내에서 반복될 수 있는 간격을 두고 발생한다고 검출될 수 있다.Likewise, in process 1204, for example, as in process 1206, if a timing pattern is determined in the sequence of requests, or if a periodic pattern is determined in the sequence of requests, a reproducible pattern can be identified. The timing pattern of the sequence of requests can be characterized by an absolute point in time (eg, a point of time 't1', 't2', 't3', etc. at day 'x' or 'x' on a particular day of the month, etc.). The timing pattern may also be characterized as a relative viewpoint or relative to one or more events / activities. For example, a request, or sequence of requests, may be detected to occur after a particular user, system, application, or device event. It can also be detected that a request occurs after another request, with an interval that can be repeated within some acceptable threshold.

특정 요청 시퀀스의 요청들 간의 시간 간격에 의해, 및/또는 서로 다른 요청 시퀀스들 간 시간 간격에 의해, 주기성 패턴이 특징지어질 수 있다. 주기성을 가질 수 있는 서로 다른 요청 시퀀스가 모바일 장치상의 서로 다른 모바일 애플리케이션/클라이언트 또는 위젯에 의해 전송될 수 있다. 주기성은 하나의 애플리케이션이 또 다른 애플리케이션을 자동으로 또는 사용자에 의해 수동으로 런치(launch)한다는 지시자일 수 있으며, 따라서 하나의 요청 시퀀스는 또 다른 요청 시퀀스가 뒤따를 것임을 종종 나타낸다. 이러한 주기성은, 복제될 수 있는 재현 가능한 패턴일 수 있고, 따라서 요청은 원격 프록시로 부분적으로 또는 전적으로 분담될 수 있다. 예를 들어, 사용자가 페이스북 애플리케이션을 통해 페이스북(Facebook)에 최신정보(update)와 사진을 게시하고, 그 후, 동일한 사진이나 최신정보를 트위터(Twitter)에 게시하는 일련의 이벤트가 개시될 때 주기성이 검출될 수 있다. 이 패턴은, 모바일 장치의 원격에 위치하는 개체에서 일련의 이벤트가 시뮬레이트되게 하는 검출된 주기성일 수 있다. The periodicity pattern can be characterized by the time interval between requests of a particular request sequence and / or by the time interval between different request sequences. Different request sequences, which may have periodicity, may be sent by different mobile applications / clients or widgets on the mobile device. The periodicity can be an indicator that one application launches another application automatically or manually by the user, so that one request sequence often indicates that another request sequence will follow. This periodicity can be a reproducible pattern that can be replicated so that the request can be partially or wholly shared with the remote proxy. For example, a user may post an update and picture on Facebook via a Facebook application, and then a series of events may be initiated that post the same picture or update to Twitter. When periodicity can be detected. This pattern may be a detected periodicity that causes a series of events to be simulated in an object located remotely of the mobile device.

도 13은 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 예시적 프로세스를 도시하는 흐름도이다. 13 is a flowchart illustrating an example process for simulating a traffic request from a mobile device.

프로세스(1302)에서, 요청이, 적어도 부분적으로 반복될 수 있는 트래픽 패턴으로서 검출된 요청들의 시퀀스 중 하나라는 것이 검출된다. 하나의 예에서, 요청 시퀀스는, 하나의 애플리케이션을 위해 호스트 서버에서 서로 다른 도착지 주소에 의해 식별되는 서로 다른 주소지정 가능한 개체로 전달된다. 또 다른 예를 들면, 요청 시퀀스는 복수의 애플리케이션으로 전달되지만, 다른 방식으로 반복 가능한 패턴을 갖는 요청을 포함할 수 있으며, 모바일 장치의 외부에서 재현될 수 있다. In process 1302, it is detected that the request is one of a sequence of detected requests as a traffic pattern that can be at least partially repeated. In one example, the request sequence is delivered to different addressable entities identified by different destination addresses at the host server for one application. In another example, the request sequence may be delivered to a plurality of applications, but may include requests with repeatable patterns in other ways, and may be reproduced outside of the mobile device.

프로세스(1304)에서, 모바일 장치에 의해 요청이 도착지로 전송되는 것에 앞서서, 요청이 모바일 장치에 의해 이뤄진다고 예측된다. 요청은, 모바일 장치에서의 사용자 이벤트, 애플리케이션 이벤트, 장치 이벤트 또는 시스템 이벤트를 기초로 하여 만들어질 수 있다. 또한 모바일 장치에서 활동이 발생하는 중이고, 요청이, 일반적으로 상기 활동을 완료하기 위해 이뤄진 알려진 요청들의 시퀀스 중 일부일 때, 예측이 이뤄질 수 있다. In process 1304, it is anticipated that the request will be made by the mobile device prior to the request being sent by the mobile device to the destination. The request may be made based on a user event, application event, device event or system event at the mobile device. Predictions can also be made when an activity is occurring at the mobile device and the request is part of a sequence of known requests, typically made to complete the activity.

프로세스(1306)에서, 요청은, 모바일 장치상의 애플리케이션에 의한 아웃고잉 요청의 트래픽 패턴을 기초로 시뮬레이트된다. 프로세스(1308)에서, 모바일 장치와 별도인, 또는 상기 모바일 장치 외부에 위치하는 개체에서, 모바일 장치를 대신하여, 도착지로의 요청이 이뤄진다. 프로세스(1310)에서, 모바일 장치를 대신하여 개체에 의해 전송되는 요청에 대한 응답이 도착지로부터 모바일 장치로 전송된다. In process 1306, the request is simulated based on the traffic pattern of the outgoing request by the application on the mobile device. In process 1308, a request is made to the destination on behalf of the mobile device, in an entity separate from or located outside the mobile device. In process 1310, a response to the request sent by the entity on behalf of the mobile device is sent from the destination to the mobile device.

프로세스(1312)에서, 트래픽 패턴을 이용해, 애플리케이션에 대한 애플리케이션 프로파일이 생성되거나 업데이트된다. 모바일 장치(가령, 로컬 프록시)에 의해, 및/또는 요청을 시뮬레이트한 원격 개체 또는 그 밖의 다른 임의의 개체에 의해, 애플리케이션 프로파일이 생성되거나 업데이트될 수 있다.In process 1312, an application profile for an application is created or updated using the traffic pattern. Application profiles may be created or updated by a mobile device (eg, local proxy) and / or by a remote entity or any other entity that simulates a request.

하나의 실시예에서, 트래픽 패턴을 갖는 애플리케이션 프로파일이 원격 개체에 유지 또는 저장되고, 복수의 모바일 장치를 서비스하기 위해 사용될 수 있다. 예를 들어, 프로세스(1314)에서, 애플리케이션 프로파일이, 동일한 애플리케이션을 갖는 타 모바일 장치에 대한 트래픽 요청을 시뮬레이트하기 위해 사용될 수 있다. 애플리케이션 프로파일이 복수의 애플리케이션에 대해 저장, 생성, 및 유지될 수 있고, 모바일 장치, 서비스 영역, 및/또는 네트워크 제공자들에 걸쳐 사용될 수 있다. In one embodiment, an application profile with traffic patterns may be maintained or stored at a remote entity and used to service a plurality of mobile devices. For example, in process 1314, an application profile can be used to simulate traffic requests for other mobile devices with the same application. Application profiles may be stored, created, and maintained for a plurality of applications and used across mobile devices, service areas, and / or network providers.

도 14는 모바일 장치 상의 복수의 모바일 애플리케이션에 의해 만들어진 요청을 분담하기 위한 예시적 프로세스를 도시하는 흐름도이다. 14 is a flowchart illustrating an example process for sharing a request made by a plurality of mobile applications on a mobile device.

프로세스(1402)에서, 모바일 장치상의 복수의 애플리케이션 각각에 대해 각각의 세트가 검출될 때, 아웃고잉 요청의 트래픽 패턴의 세트가 검출된다. 트래픽 패턴은 이전 아웃고잉 요청의 타이밍 및/또는 이전 아웃고잉 요청의 도착지 주소에 의해, 특징화될 수 있다. 프로세스(1404)에서, 모바일 장치상의 복수의 애플리케이션에 의해 만들어지는 요청이 예측된다. 프로세스(1406)에서, 모바일 장치와 별도인 개체에서, 상기 모바일 장치를 대신하여, 복수의 애플리케이션과 연계된 도착지로의 요청이 이뤄진다. In process 1402, when each set is detected for each of a plurality of applications on the mobile device, a set of traffic patterns of the outgoing request is detected. The traffic pattern may be characterized by the timing of the previous outgoing request and / or the destination address of the previous outgoing request. In process 1404, a request made by a plurality of applications on the mobile device is predicted. In process 1406, on a separate entity from the mobile device, a request is made on behalf of the mobile device to a destination associated with the plurality of applications.

모바일 상의 복수의 애플리케이션에 대해 식별된 이러한 트래픽 패턴이 개체(가령, 원격 프록시 서버)에, 예를 들어, 애플리케이션 프로파일에 포함된 정보의 일부로서 저장될 수 있다. 그 후, 프록시 서버가 이러한 정보를 이용하여, 동일한 애플리케이션을 갖는 타 모바일 장치로부터의 요청의 분담을 관리할 수 있다. Such traffic patterns identified for a plurality of applications on the mobile may be stored in an entity (eg, a remote proxy server), for example as part of the information included in the application profile. The proxy server can then use this information to manage the sharing of requests from other mobile devices with the same application.

도 15는 모바일 장치에서 만들어진 요청을 원격 개체로 분담시키기 위한 예시적 프로세스를 도시하는 흐름도이다. 15 is a flowchart illustrating an example process for sharing a request made at a mobile device to a remote entity.

프로세스(1502)에서, 모바일 장치로부터 발원된 요청들의 세트가 예측 가능한 시간격으로 발생한다고 검출된다. 요청들의 세트의 예측 가능한 시간격이 모바일 장치상의 로컬 프록시에 의해 검출될 수 있다. 하나의 실시예에서, 예측 가능한 시간격은 허용 가능한 오차 임계치 내에서(제한받지 않은 예를 들면, <0.5%, <1%, <5%, <10%, <20% 등) 예측 가능하다. 예측 가능한 시간격이 트리거링 이벤트에 상대적인 것으로 특정되거나, 절대 시점(가령, 특정 시각, 특정 요일, 특정 날짜)으로 특정될 수 있다. In process 1502, it is detected that the set of requests originating from the mobile device occurs at a predictable time interval. The predictable time interval of the set of requests can be detected by the local proxy on the mobile device. In one embodiment, the predictable time interval is predictable within an acceptable error threshold (e.g., not limited to <0.5%, <1%, <5%, <10%, <20%, etc.). The predictable time interval may be specified as being relative to the triggering event or may be specified as an absolute point in time (eg, a specific time of day, a specific day of the week, a specific date).

프로세스(1504)에서, 요청들의 세트 내 식별 가능한 패턴으로부터, 모바일 애플리케이션으로부터 요청들의 세트가 생성됨이 검출된다. 프로세스(1506)에서, 상기의 정보가 원격 개체로 전달되고, 상기 원격 개체가 요청들의 세트를 시뮬레이트할 수 있다. 원격 개체는 모바일 장치상의 로컬 프록시와 무선 통신할 수 있는 프록시 서버를 포함할 수 있다. In process 1504, it is detected from the identifiable pattern in the set of requests that a set of requests is generated from the mobile application. In process 1506, the information is passed to a remote entity, which can simulate a set of requests. The remote entity may include a proxy server capable of wireless communication with a local proxy on the mobile device.

프로세스(1508)에서, 요청들의 세트의 다음번 발생이, 모바일 장치로부터 분담되어, 원격 개체에 의해 전송될 수 있다. 예를 들어, 프로세스(1510)에서, 요청들의 세트의 다음번 발생이 인터셉트되고 모바일 장치로부터 전송되지 않게 된다. 원격 개체는, 모바일 장치상의 모바일 애플리케이션을 대신하여, 요청들의 세트의 다음번 발생을 시뮬레이트하고, 전송/송신할 수 있다. 프로세스(1512)에서, 원격 개체에 의해 만들어진 요청들의 세트의 다음번 발생에 대한 응답이 모바일 장치에서 수신된다. 덧붙이자면, 모바일 애플리케이션은, 모바일 애플리케이션을 대신하여 원격 개체에 의해 전송되는 다음번 발생하는 요청들의 세트에 대한 응답을 수신한다. At process 1508, the next occurrence of the set of requests can be shared from the mobile device and sent by the remote entity. For example, at process 1510, the next occurrence of the set of requests is intercepted and not sent from the mobile device. The remote entity can simulate and send / send the next occurrence of the set of requests on behalf of the mobile application on the mobile device. In process 1512, a response is received at the mobile device for the next occurrence of the set of requests made by the remote entity. In addition, the mobile application receives a response to the next set of requests that are sent by the remote entity on behalf of the mobile application.

트리거링 이벤트는 모바일 애플리케이션에 대한 동작(action) 및/또는 모바일 애플리케이션에 대한 사용자 동작 또는 사용자 활동을 포함할 수 있다. 상기 동작은 또한, 모바일 애플리케이션의 배경 유지관리 활동(background maintenance activity)일 수 있다. 예를 들어, 프로세스(1514)에서, 모바일 애플리케이션에 대한 사용자 동작 또는 사용자 활동이 검출되고, 프로세스(1516)에서 사용자 동작 또는 활동이 트리거링 이벤트로서 식별된다. 따라서, 트리거링 이벤트의 다음번 발생이 검출되면, 프로세스(1518)에서처럼, 원격 개체가 모바일 애플리케이션을 대신하여 요청의 세트를 시뮬레이트한다. 그 후, 프로세스는 흐름(1508)으로 계속되며, 여기서, 원격 개체가 모바일 장치를 대신하여 요청을 전송하는 것을 넘겨받는다.The triggering event may include an action for the mobile application and / or a user action or user activity for the mobile application. The operation may also be background maintenance activity of the mobile application. For example, at process 1514, a user action or user activity for the mobile application is detected, and at process 1516 the user action or activity is identified as a triggering event. Thus, when the next occurrence of the triggering event is detected, as in process 1518, the remote entity simulates a set of requests on behalf of the mobile application. The process then continues to flow 1508, where the remote entity is taken over sending the request on behalf of the mobile device.

도 16은 컴퓨터 시스템의 예시적 형태로 된 기계를 나타내는 개략도이며, 상기 기계에서, 본원에서 개시되는 방법들 중 임의의 하나 이상을 기계가 수행하도록 하는 명령(instruction)들의 하나의 세트가 실행될 수 있다. 16 is a schematic diagram illustrating a machine in an exemplary form of a computer system, in which one set of instructions may be executed to cause a machine to perform any one or more of the methods disclosed herein. .

대안적 실시예에서, 기계는 자립형(standalone) 장치로서 동작하거나, 다른 기계로 연결(가령, 네트워크-연결)될 수 있다. 네트워크-연결된 형태에서, 기계는 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 기계로서 동작하거나, 피어-투-피어(또는 분산) 네트워크 환경에서 피어 기계(peer machine)로서 동작할 수 있다. In alternative embodiments, the machine may operate as a standalone device or may be connected (eg, network-connected) to another machine. In network-connected form, the machine may operate as a server or client machine in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.

기계는, 서버 컴퓨터, 클라이언트 컴퓨터, 개인 컴퓨터(PC), 사용자 장치, 태블릿 PC, 랩톱 컴퓨터, 셋 톱 박스(STB), PDA(personal digital assistant), 셀룰러 전화기, iPhone, iPad, Blackberry, 프로세서, 전화기, 웹 어플라이언스, 네트워크 라우터, 스위치 또는 브리지, 콘솔, 핸드-헬드 콘솔, (핸드-헬드) 게임 장치, 음악 재생기, 임의의 휴대용, 모바일, 핸드-헬드 장치, 또는 수행할 동작을 특정하는 한 세트의 명령어를 (순차적으로 또는 그 밖의 다른 방식으로) 실행할 수 있는 임의의 기계일 수 있다. Machines include server computers, client computers, personal computers (PCs), user devices, tablet PCs, laptop computers, set-top boxes (STBs), personal digital assistants (PDAs), cellular phones, iPhones, iPads, Blackberries, processors, and telephones. , Web appliance, network router, switch or bridge, console, hand-held console, (hand-held) game device, music player, any portable, mobile, hand-held device, or a set of actions that specify an action to perform It can be any machine capable of executing instructions (sequentially or otherwise).

하나의 예시적 실시예에서, 기계 판독형 매체 또는 기계 판독형 저장 매체가 하나의 단일 매체인 것으로 나타나지만, 용어 "기계-판독형 매체" 및 "기계-판독형 저장 매체"는 하나 이상의 세트의 명령을 저장하는 단일 매체 또는 복수의 매체(가령, 중앙집중형 또는 분산형 데이터베이스 및/또는 이와 연계된 캐시 및 서버)를 포함하도록 이해되어야 한다. 용어 "기계-판독형 매체"와 "기계-판독형 저장 매체"는 또한, 기계가 현재 개시된 기법 및 혁신 기술의 방법들 중 임의의 하나 이상을 수행하도록 하며 기계에 의해 실행되기 위한 한 세트의 명령을 저장, 인코딩, 또는 지닐 수 있는 임의의 매체를 포함하도록 이해되어야 할 것이다. In one exemplary embodiment, a machine-readable medium or machine-readable storage medium appears to be one single medium, although the terms "machine-readable medium" and "machine-readable storage medium" refer to one or more sets of instructions. It should be understood to include a single medium or a plurality of media (e.g., a centralized or distributed database and / or caches and servers associated with it). The terms "machine-readable medium" and "machine-readable storage medium" also refer to a set of instructions for causing a machine to perform any one or more of the presently disclosed techniques and innovations and to be executed by a machine. It is to be understood to include any medium that can store, encode, or bear.

일반적으로, 본원에 개시된 실시예를 구현하도록 실행되는 루틴이, 운영 체제, 또는 특정 애플리케이션, 구성요소, 프로그램, 객체, 모듈, 또는 "컴퓨터 프로그램"이라 지칭되는 명령들의 시퀀스의 일부분으로서 구현될 수 있다. 컴퓨터 프로그램은, 컴퓨터의 다양한 메모리 및 저장 장치에서 다양한 시점에서, 컴퓨터의 하나 이상의 프로세싱 유닛에 의해 판독되고 실행될 때 컴퓨터가 본원의 다양한 양태들과 관련된 요소를 실행하기 위한 동작을 수행하도록 하는 하나 이상의 명령 세트를 포함하는 것이 일반적이다. In general, routines executed to implement embodiments disclosed herein may be implemented as part of an operating system or a particular application, component, program, object, module, or sequence of instructions referred to as a “computer program”. . A computer program is one or more instructions that, at various points in time in various memories and storage devices of the computer, cause the computer to perform operations for executing elements related to the various aspects herein when read and executed by one or more processing units of the computer. It is common to include a set.

덧붙여, 실시예들이, 완전히 동작하는 컴퓨터 및 컴퓨터 시스템의 맥락에서 기재되었지만, 해당업계 종사자라면 다양한 실시예는 다양한 형태의 프로그램 프로덕트로서 분산될 수 있고, 본원은 실제로 분산을 위해 사용되는 특정 유형의 기계 또는 컴퓨터-판독형 매체에 무관하게 동일하게 적용됨을 알 것이다. In addition, while the embodiments have been described in the context of fully operational computers and computer systems, those skilled in the art will appreciate that various embodiments may be distributed as various forms of program products, and the present application may, in fact, be embodied by the particular type of machine used for the distribution. Or the same applies regardless of the computer-readable medium.

기계-판독형 저장 매체, 기계-판독형 매체, 또는 컴퓨터-판독형 (저장) 매체의 추가 예로는, 기록 가능한 유형의 매체, 가령, 휘발성 및 비-휘발성 메모리 장치, 플로피 및 그 밖의 다른 탈착식 디스크, 하드 디스크 드라이브, 광학 디스크(가령, CD ROMS(Compact Disk Read-Only Memory), DVD(Digital Versatile Disk) 등) 등, 전송 유형 매체(가령, 디지털 및 아날로그 통신 링크) 등이 있다(그러나 이에 국한되지 않음).Further examples of machine-readable storage media, machine-readable media, or computer-readable (storage) media include, but are not limited to, recordable types of media, such as volatile and non-volatile memory devices, floppies and other removable disks. , Hard disk drives, optical disks (such as CD Compact Disk Read-Only Memory), digital versatile disks (DVD), and the like, but not limited to transmission type media (such as digital and analog communication links). Not).

문맥상 명백하게 그렇지 않다고 언급하지 않는 한, 상세한 설명과 청구범위에서, "~를 포함하다", "~를 포함하는" 및 이와 유사한 용어는, 폐쇄형이 아닌 개방형으로 사용되는데, 즉, "~를 포함하지만, ~에 국한되는 것은 아니다"의 의미로 사용된다. 본원에서 사용될 때 "연결된", "결합된", 또는 이들의 임의의 변형형태는 둘 이상의 요소 간의 직접 또는 간접적 임의의 연결 또는 결합을 의미하며, 요소들 간의 연결의 결합은 물리적, 논리적, 또는 이 둘의 조합일 수 있다. 덧붙이자면, "여기서", "상기의", "하기의" 등의 단어가 본 명세서에서 사용될 때, 이 출원을 전체적으로 지칭하는 것이며 이 출원의 임의의 특정 부분을 지칭하는 것이 아니다. 문맥이 허용하는 한, 단수형 또는 복수형을 이용한 상기의 상세한 설명의 기재는 각각, 복수형 또는 단수형도 포함할 수 있다. 둘 이상의 아이템의 리스트를 참조할 때 단어 "또는"은, 리스트의 아이템들 중 임의의 것, 또는 리스트의 모든 아이템들, 또는 리스트의 아이템들 중 임의의 조합을 커버한다. Unless the context clearly indicates otherwise, in the description and claims, the terms "comprises", "comprising", and similar terms are used in an open, non-closed manner, that is, in " Include, but are not limited to. As used herein, “connected”, “coupled,” or any variation thereof means any connection or combination, directly or indirectly, between two or more elements, wherein the coupling of the connections between the elements is physical, logical, or It can be a combination of the two. In addition, the words “here,” “above,” “below,” and the like when used herein refer to this application as a whole and not to any particular part of this application. As long as the context permits, the description of the above detailed description using the singular or plural may also include the plural or singular, respectively. The word "or" when referring to a list of two or more items covers any of the items in the list, or all the items in the list, or any combination of the items in the list.

본원의 실시예에 대한 상기의 상세한 설명은 상기의 개시된 형태로의 한정을 의미하는 것이 아니다. 본원의 특정 실시예, 및 그 예시가 앞서, 설명을 목적으로 기재되었지만, 해당 분야의 통상의 기술자가 인식할 다양한 동등한 수정예가 본원의 범위 내에서 가능하다. 예를 들어, 프로세스 또는 블록이 지정된 순서로 제공되지만, 대안적 실시예가 단계들을 갖는 루틴을 수행하거나, 블록을 갖는 시스템을 상이한 순서로 이용할 수 있고, 일부 프로세스 또는 블록은 삭제, 이동, 추가, 분할, 결합, 및/또는 수정되어, 대안예 또는 서브-조합을 제공할 수 있다. 이들 프로세스 또는 블록 각각은 다양한 서로 다른 방식으로 구현될 수 있다. 또한, 프로세스 또는 블록이 순차적으로 수행되는 것처럼 보이지만, 이들 프로세스 또는 블록은 병렬로 수행되거나, 서로 다른 시점에서 수행될 수 있다. 덧붙이자면, 본원에서 언급된 임의의 특정 숫자는 예에 불과하며, 대안적 구현예가 다른 값 또는 범위를 이용할 수 있다. The foregoing detailed description of the embodiments herein is not meant to be limiting to the disclosed form. While specific embodiments of the present application, and examples thereof, have been described above for purposes of illustration, various equivalent modifications that would be recognized by those skilled in the art are possible within the scope of the present application. For example, while processes or blocks are provided in a specified order, alternative embodiments may perform routines with steps, or use systems with blocks in a different order, and some processes or blocks may be deleted, moved, added, or split. May be combined, and / or modified to provide alternatives or sub-combinations. Each of these processes or blocks can be implemented in a variety of different ways. Also, while processes or blocks appear to be performed sequentially, these processes or blocks may be performed in parallel or at different points in time. In addition, any particular number referred to herein is merely an example, and alternative embodiments may use other values or ranges.

본원에서 제공되는 설명은, 앞서 기재된 시스템외에 다른 시스템에도 적용될 수 있다. 상기에서 기재된 다양한 실시예의 요소 및 동작은 조합되어, 추가 실시예를 제공할 수 있다. The description provided herein may be applied to other systems in addition to the systems described above. The elements and acts of the various embodiments described above can be combined to provide further embodiments.

첨부된 출원서에 나열될 수 있는 앞서 언급된 임의의 특허 및 출원과 그 밖의 다른 인용문헌은 본원에서 참조로서 포함된다. 필요에 따라, 앞서 기재된 다양한 참조문헌의 시스템, 기능, 및 개념을 이용하기 위해, 본원의 양태는 수정되어, 본 발명의 또 다른 실시예를 제공할 수 있다.Any of the aforementioned patents and applications and other citations which may be listed in the appended application are incorporated herein by reference. If desired, aspects of the present disclosure may be modified to provide further embodiments of the present invention in order to utilize the systems, functions, and concepts of the various references set forth above.

상기의 상세한 설명을 고려하여 이러한 변경과 그 밖의 다른 변경이 본 발명에 적용될 수 있다. 상기에서 본 발명의 특정 실시예를 기재하고, 고려될 수 있는 가장 최적 모드를 기재하지만, 앞서 상세히 나타나더라도, 본 발명의 사상은 다양한 방식으로 실시될 수 있다. 시스템의 구현 세부사항은 본 발명의 범위 내에서 상당히 달라질 수 있다. 앞서 언급된 바와 같이, 본 발명의 특징 또는 양태를 기재할 때 사용되는 특정 용어는, 용어가 상기 용어와 관련되는 본 발명의 임의의 특정 특성, 특징, 또는 양태로 제한되는 것으로 재정의되는 것을 의미하지 않아야 한다. 일반적으로, 앞서 언급된 상세한 설명 섹션이 이러한 용어를 명시적으로 정의하지 않는 한, 다음의 청구범위에서 사용되는 용어는 본 발명을 상세한 설명에서 개시된 특정 실시예로 한정하도록 구성되지 않는다. 따라서 본 발명의 실제 범위는 본원에 기재된 실시예만 아니라, 특허청구범위에 따라 실시 또는 구현되는 모든 동치예까지 포함한다. These and other changes can be applied to the present invention in consideration of the above detailed description. While specific embodiments of the present invention have been described above and the most optimal mode contemplated, it will be appreciated that the spirit of the invention may be practiced in various ways. Implementation details of the system can vary significantly within the scope of the invention. As mentioned above, certain terms used in describing the features or aspects of the present invention are not meant to be redefining that the terms are limited to any particular feature, feature, or aspect of the present invention with which the terms are associated. Should not. Generally, the terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the description, unless the above detailed description section explicitly defines such terms. Thus, the true scope of the present invention includes not only the embodiments described herein but also all equivalents embodied or implemented in accordance with the claims.

본 발명의 특정 양태가 특정 청구항의 형태로 이하에서 제공되지만, 발명자는 본 발명의 다양한 양태를 임의의 개수의 청구항 형태로 고려한다. 예를 들어, 본 발명의 단 하나의 양태는 35 U.S.C. §112, ¶6에 따르는 기능식 청구항(means-plus function claim)으로서 구현되고, 그 밖의 다른 양태는 이와 유사하게 기능식 청구항 또는 그 밖의 다른 형태, 가령, 컴퓨터-판독형 매체로서 구현될 수 있다. (35 U.S.C. §112, ¶6에 따라 취급되는 임의의 청구항은, "~하기 위한 수단"이라는 단어로 시작할 것이다.) 따라서 출원인은 출원 후에 본 발명의 또 다른 양태를 위한 이러한 추가 청구항 형태를 추구하기 위해 추가 청구항을 추가할 권리를 가진다.
While certain aspects of the invention are provided below in the form of specific claims, the inventors contemplate the various aspects of the invention in any number of claims. For example, only one aspect of the invention is embodied as a means-plus function claim in accordance with 35 USC § 112, ¶ 6, and other aspects are similarly similar to functional claims or other It may be embodied in a form such as a computer-readable medium. (Any claim dealt with under 35 USC § 112, ¶ 6, will begin with the word “means for”.) Thus, the applicant should seek this further claim form for another aspect of the invention after filing. Reserves the right to add additional claims.

Claims (30)

  1. 모바일 장치를 대신하여 요청을 하는 방법에 있어서, 상기 방법은
    모바일 장치로부터의 요청들의 시퀀스가 재현 가능한 패턴을 가짐을 검출하는 단계,
    재현 가능한 패턴을 이용해, 요청들의 시퀀스를, 모바일 장치와 별개인 개체(entity)에 복제하는 단계,
    모바일 장치에 있는 자원을 보존하기 위해, 상기 개체(entity)가, 모바일 장치를 대신하여, 요청들의 시퀀스를 전송하는 단계
    를 포함하며, 요청들의 시퀀스에 대한 응답은 모바일 장치로 제공되는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법.
    A method for making a request on behalf of a mobile device, the method comprising
    Detecting that the sequence of requests from the mobile device has a reproducible pattern,
    Using a reproducible pattern, replicating the sequence of requests to an entity separate from the mobile device,
    Sending, by the entity, a sequence of requests on behalf of the mobile device to conserve resources at the mobile device;
    Wherein the response to the sequence of requests is provided to the mobile device.
  2. 제 1 항에 있어서, 상기 방법은
    요청들의 시퀀스의 개시를 유발하는 트리거링 이벤트(triggering event)를 식별하는 단계
    를 더 포함하며, 요청들의 시퀀스는 상기 트리거링 이벤트에 상대적인 예측 가능한 시간격으로 발생하는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법.
    The method of claim 1 wherein the method is
    Identifying a triggering event that triggers the initiation of the sequence of requests
    Further comprising a sequence of requests occurring at a predictable time interval relative to the triggering event.
  3. 제 2 항에 있어서, 상기 방법은
    모바일 장치에서의 트리거링 이벤트의 발생을 검출하는 단계, 및
    모바일 장치에서 요청을 인터셉트(intercept)하고 상기 요청이 모바일 장치로부터 전송되지 않게 하는 단계
    를 더 포함하는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법.
    The method of claim 2, wherein the method
    Detecting the occurrence of a triggering event at the mobile device, and
    Intercepting the request at the mobile device and preventing the request from being sent from the mobile device
    And making a request on behalf of the mobile device.
  4. 제 2 항에 있어서, 상기 방법은
    상기 개체에서 이벤트들의 시퀀스를 시뮬레이트하는 단계, 및
    상기 개체가 모바일 장치를 대신하여 요청들의 시퀀스를 전송하는 단계
    를 더 포함하는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법.
    The method of claim 2, wherein the method
    Simulating a sequence of events in the entity, and
    The entity sending a sequence of requests on behalf of a mobile device
    And making a request on behalf of the mobile device.
  5. 제 3 항에 있어서, 상기 요청이 모바일 장치로부터 전송되지 않게 하는 단계는 모바일 장치의 장치 라디오가 꺼짐(off) 상태에서 켜지지 않게 하는 단계를 포함하는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법. 4. The method of claim 3, wherein the step of preventing the request from being sent from the mobile device comprises preventing the device radio of the mobile device from turning on in an off state. .
  6. 제 1 항에 있어서, 개체는 모바일 장치와 무선 통신할 수 있는 프록시 서버(proxy server)이며,
    상기 프록시 서버는 요청들의 시퀀스를 비-셀룰러 연결(non-cellular connection)을 통해 하나 이상의 도착지로 전송하는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법.
    The method of claim 1, wherein the entity is a proxy server capable of wireless communication with a mobile device,
    And wherein the proxy server sends the sequence of requests to one or more destinations over a non-cellular connection.
  7. 제 6 항에 있어서, 상기 재현 가능한 패턴이 프록시 서버에 의해 검출되는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법. 7. The method of claim 6, wherein the reproducible pattern is detected by a proxy server.
  8. 제 6 항에 있어서,
    상기 재현 가능한 패턴이 모바일 장치상의 로컬 프록시에 의해 검출되고, 복제되도록 프록시 서버로 전달되고,
    원자 프로세스(atomic process)가 이벤트들의 시퀀스로부터 생성되는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법.
    The method according to claim 6,
    The reproducible pattern is detected by a local proxy on the mobile device and passed to the proxy server to be replicated,
    A method for making a request on behalf of a mobile device, wherein an atomic process is created from the sequence of events.
  9. 제 1 항에 있어서, 상기 요청들의 시퀀스에 의해 주소지정된 도착지 주소 내 파라미터로부터 재현 가능한 패턴이 검출되는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법. 2. The method of claim 1 wherein a reproducible pattern is detected from a parameter in a destination address addressed by the sequence of requests.
  10. 제 1 항에 있어서, 요청들의 시퀀스 내 재현 가능한 패턴은 재현 가능한 타이밍 패턴을 포함하는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법. 10. The method of claim 1, wherein the reproducible pattern in the sequence of requests includes a reproducible timing pattern.
  11. 제 1 항에 있어서, 요청들의 시퀀스 내 재현 가능한 패턴은 재현 가능한 주기성 패턴을 포함하는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법. 10. The method of claim 1, wherein the reproducible pattern in the sequence of requests includes a reproducible periodicity pattern.
  12. 제 1 항에 있어서, 요청들의 시퀀스가 모바일 장치상의 하나의 애플리케이션의 서버의 상이하게 주소지정 가능한 개체들에게 전달되는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법. 2. The method of claim 1, wherein the sequence of requests is communicated to different addressable entities of a server of one application on the mobile device.
  13. 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법에 있어서, 상기 방법은,
    모바일 장치에 의해 요청이 도착지로 전송되기에 앞서서, 요청이 모바일 장치에 의해 이뤄질 것임을 예측하는 단계로서, 상기 요청은, 모바일 장치상의 애플리케이션에 대한 적어도 부분적으로 반복되는 트래픽 패턴으로서 검출된 요청들의 시퀀스 중 하나인, 상기 예측하는 단계와,
    모바일 장치와 별개인 개체에서, 상기 모바일 장치를 대신하여 도착지로의 요청을 하는 단계
    를 포함하는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.
    A method for simulating a traffic request from a mobile device, the method comprising:
    Predicting that a request will be made by the mobile device prior to the request being sent by the mobile device to the destination, wherein the request is one of a sequence of detected requests as at least partially repeated traffic pattern for the application on the mobile device. Predicting one;
    In a separate entity from the mobile device, making a request to the destination on behalf of the mobile device
    And simulating a traffic request from a mobile device.
  14. 삭제delete
  15. 제 13 항에 있어서, 요청들의 시퀀스가 애플리케이션에 대한 호스트 서버에서 상이한 도착지 주소들에 의해 식별되는 상이하게 주소지정 가능한 개체들로 전달되는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법. 15. The method of claim 13, wherein the sequence of requests is passed to different addressable entities identified by different destination addresses at the host server for the application.
  16. 제 13 항에 있어서,
    개체는 요청을 더 시뮬레이트하며, 시뮬레이션은, 모바일 장치상의 애플리케이션에 의한 아웃고잉 요청(outgoing request)의 트래픽 패턴을 기초로 하며,
    도착지는 애플리케이션에 대한 호스트 서버인 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.
    The method of claim 13,
    The entity further simulates the request, and the simulation is based on the traffic pattern of the outgoing request by the application on the mobile device,
    The destination is a method for simulating traffic requests from a mobile device, characterized in that the destination server is a host server for the application.
  17. 제 13 항에 있어서, 상기 방법은
    트래픽 패턴을 이용해 애플리케이션에 대한 애플리케이션 프로파일을 생성하거나 업데이트하는 단계
    를 더 포함하는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.
    14. The method of claim 13,
    Create or update an application profile for your application using traffic patterns
    Further comprising a traffic request from a mobile device.
  18. 제 17 항에 있어서, 상기 방법은
    애플리케이션 프로파일을 이용하여, 동일한 애플리케이션을 갖는 타 모바일 장치에 대해 트래픽 요청을 시뮬레이트하는 단계
    를 더 포함하는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.
    18. The method of claim 17,
    Simulating a traffic request for another mobile device with the same application using the application profile
    Further comprising a traffic request from a mobile device.
  19. 제 13 항에 있어서, 상기 방법은
    아웃고잉 요청의 트래픽 패턴의 세트를 검출하는 단계
    를 더 포함하며, 각각의 세트는 모바일 장치상의 복수의 애플리케이션 중 하나에 대해 검출되는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.
    14. The method of claim 13,
    Detecting a set of traffic patterns of the outgoing request
    Further comprising each set is detected for one of a plurality of applications on the mobile device.
  20. 제 19 항에 있어서, 상기 방법은,
    모바일 장치상의 복수의 애플리케이션에 의해 이뤄질 요청들을 예측하는 단계, 및
    모바일 장치를 대신하여, 모바일 장치와 별개인 개체에서, 상기 복수의 애플리케이션과 연계된 도착지로의 요청이 이뤄지는 단계
    를 더 포함하는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.
    The method of claim 19, wherein the method is
    Predicting requests to be made by a plurality of applications on the mobile device, and
    On behalf of the mobile device, making a request to a destination associated with the plurality of applications at an entity separate from the mobile device
    Further comprising a traffic request from a mobile device.
  21. 제 13 항에 있어서, 요청의 예측은, 모바일 장치로부터의 이전 아웃고잉 요청에 대한 트래픽 패턴의 검출에 의해 이뤄지는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법. The method of claim 13, wherein the prediction of the request is made by detecting a traffic pattern for a previous outgoing request from the mobile device.
  22. 제 21 항에 있어서, 트래픽 패턴은, 이전 아웃고잉 요청들의 타이밍, 또는 이전 아웃고잉 요청들의 도착지 주소에 의해, 특징지어지는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.22. The method of claim 21, wherein the traffic pattern is characterized by the timing of previous outgoing requests, or the destination address of previous outgoing requests.
  23. 제 21 항에 있어서, 이전 아웃고잉 요청들의 도착지 주소를 서로 비교하여, 트래픽 패턴을 식별하는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법. 22. The method of claim 21, wherein the destination address of previous outgoing requests are compared with each other to identify a traffic pattern.
  24. 제 21 항에 있어서, 트래픽 패턴은, 이전 아웃고잉 요청들이 하나의 서버로 전달됨을 나타내는 도착지 주소 내 파라미터로부터 식별되는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.22. The method of claim 21, wherein the traffic pattern is identified from a parameter in the destination address indicating that previous outgoing requests are forwarded to one server.
  25. 제 21 항에 있어서, 트래픽 패턴은, 이전 아웃고잉 요청들이 모바일 장치상의 동일한 애플리케이션으로부터 발원됨을 나타내는 도착지 주소 내 파라미터로부터 식별되는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법. 22. The method of claim 21, wherein the traffic pattern is identified from a parameter in the destination address indicating that previous outgoing requests originate from the same application on the mobile device.
  26. 제 21 항에 있어서, 상기 방법은
    트래픽 패턴을 식별할 때, 애플리케이션에 대한 이전 아웃고잉 요청의 도착지 주소를, 알려진 주소들의 리스트와 비교하는 단계
    를 더 포함하는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.
    The method of claim 21, wherein the method is
    When identifying the traffic pattern, comparing the destination address of the previous outgoing request for the application with a list of known addresses.
    Further comprising a traffic request from a mobile device.
  27. 제 13 항에 있어서, 예측하는 단계는 요청의 타이밍, 또는 요청의 도착지 주소를 예측하는 단계를 포함하는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법. 14. The method of claim 13, wherein the predicting comprises predicting the timing of the request, or the destination address of the request.
  28. 제 13 항에 있어서, 상기 방법은,
    장치 배터리 보존 및 네트워크 자원 보존을 위해 모바일 장치에 의해 상기 요청이 전송되지 않게 하는 단계
    를 더 포함하고, 개체에 의해 모바일 장치를 대신하여 전송되는 요청에 대한 응답이 도착지로부터 모바일 장치로 전송되는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.
    The method of claim 13, wherein the method is
    Preventing the request from being sent by the mobile device for device battery conservation and network resource conservation
    And further comprising a response from the destination to the mobile device in response to the request being sent on behalf of the mobile device by the entity.
  29. 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 시스템에 있어서, 상기 시스템은
    모바일 장치에 의해 요청을 도착지로 전송하기 앞서서, 모바일 장치에 의해 요청이 이뤄질 것을 예측하는 프록시 서버
    를 포함하고, 상기 프록시 서버는 모바일 장치로부터의 이전 아웃고잉 요청(outgoing request)에 대한 트래픽 패턴의 검출을 통해 요청을 예측하며,
    상기 프록시 서버는 모바일 장치를 대신하여 요청을 시뮬레이트하고, 상기 요청에 의해 주소지정된 도착지로 요청을 전송하는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 시스템.
    A system for simulating traffic requests from a mobile device, the system comprising
    Proxy server that predicts that the request will be made by the mobile device prior to sending the request to the destination by the mobile device.
    Wherein the proxy server predicts the request through detection of a traffic pattern for a previous outgoing request from a mobile device,
    The proxy server simulates the request on behalf of the mobile device and sends the request to the destination addressed by the request.
  30. 제 29 항에 있어서,
    상기 요청은 모바일 장치상의 애플리케이션에 의해 발원되며,
    요청은 애플리케이션에 대해 검출된 적어도 부분적으로 반복되는 요청들의 시퀀스 중 하나인 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 시스템.


    30. The method of claim 29,
    The request is originated by an application on the mobile device,
    And wherein the request is one of a sequence of at least partially repeated requests detected for the application.


KR1020120137313A 2011-04-27 2012-11-29 System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief KR101227821B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13/457,368 2012-04-26
US13/457,368 US8832228B2 (en) 2011-04-27 2012-04-26 System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief

Publications (1)

Publication Number Publication Date
KR101227821B1 true KR101227821B1 (en) 2013-01-29

Family

ID=47845654

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120137313A KR101227821B1 (en) 2011-04-27 2012-11-29 System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief

Country Status (1)

Country Link
KR (1) KR101227821B1 (en)

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8621075B2 (en) 2011-04-27 2013-12-31 Seven Metworks, Inc. Detecting and preserving state for satisfying application requests in a distributed proxy and cache system
US8700728B2 (en) 2010-11-01 2014-04-15 Seven Networks, Inc. Cache defeat detection and caching of content addressed by identifiers intended to defeat cache
US8750123B1 (en) 2013-03-11 2014-06-10 Seven Networks, Inc. Mobile device equipped with mobile network congestion recognition to make intelligent decisions regarding connecting to an operator network
US8761756B2 (en) 2005-06-21 2014-06-24 Seven Networks International Oy Maintaining an IP connection in a mobile network
US8774844B2 (en) 2007-06-01 2014-07-08 Seven Networks, Inc. Integrated messaging
US8775631B2 (en) 2012-07-13 2014-07-08 Seven Networks, Inc. Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
US8799410B2 (en) 2008-01-28 2014-08-05 Seven Networks, Inc. System and method of a relay server for managing communications and notification between a mobile device and a web access server
US8812695B2 (en) 2012-04-09 2014-08-19 Seven Networks, Inc. Method and system for management of a virtual network connection without heartbeat messages
US8811952B2 (en) 2002-01-08 2014-08-19 Seven Networks, Inc. Mobile device power management in data synchronization over a mobile network with or without a trigger notification
US8832228B2 (en) 2011-04-27 2014-09-09 Seven Networks, Inc. System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief
US8839412B1 (en) 2005-04-21 2014-09-16 Seven Networks, Inc. Flexible real-time inbox access
US8838783B2 (en) 2010-07-26 2014-09-16 Seven Networks, Inc. Distributed caching for resource and mobile network traffic management
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
US8862657B2 (en) 2008-01-25 2014-10-14 Seven Networks, Inc. Policy based content service
US8868753B2 (en) 2011-12-06 2014-10-21 Seven Networks, Inc. System of redundantly clustered machines to provide failover mechanisms for mobile traffic management and network resource conservation
US8874761B2 (en) 2013-01-25 2014-10-28 Seven Networks, Inc. Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
US8903954B2 (en) 2010-11-22 2014-12-02 Seven Networks, Inc. Optimization of resource polling intervals to satisfy mobile device requests
US8909202B2 (en) 2012-01-05 2014-12-09 Seven Networks, Inc. Detection and management of user interactions with foreground applications on a mobile device in distributed caching
US8909759B2 (en) 2008-10-10 2014-12-09 Seven Networks, Inc. Bandwidth measurement
US8934414B2 (en) 2011-12-06 2015-01-13 Seven Networks, Inc. Cellular or WiFi mobile traffic optimization based on public or private network destination
US9002828B2 (en) 2007-12-13 2015-04-07 Seven Networks, Inc. Predictive content delivery
US9009250B2 (en) 2011-12-07 2015-04-14 Seven Networks, Inc. Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation
US9021021B2 (en) 2011-12-14 2015-04-28 Seven Networks, Inc. Mobile network reporting and usage analytics system and method aggregated using a distributed traffic optimization system
US9043433B2 (en) 2010-07-26 2015-05-26 Seven Networks, Inc. Mobile network traffic coordination across multiple applications
US9065765B2 (en) 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
US9084105B2 (en) 2011-04-19 2015-07-14 Seven Networks, Inc. Device resources sharing for network resource conservation
US9161258B2 (en) 2012-10-24 2015-10-13 Seven Networks, Llc Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion
US9173128B2 (en) 2011-12-07 2015-10-27 Seven Networks, Llc Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
US9241314B2 (en) 2013-01-23 2016-01-19 Seven Networks, Llc Mobile device with application or context aware fast dormancy
US9307493B2 (en) 2012-12-20 2016-04-05 Seven Networks, Llc Systems and methods for application management of mobile device radio state promotion and demotion
US9325662B2 (en) 2011-01-07 2016-04-26 Seven Networks, Llc System and method for reduction of mobile network traffic used for domain name system (DNS) queries
US10263899B2 (en) 2012-04-10 2019-04-16 Seven Networks, Llc Enhanced customer service for mobile carriers using real-time and historical mobile application and traffic or optimization data associated with mobile devices in a mobile network
KR102185124B1 (en) * 2017-09-07 2020-12-01 주식회사 케이티 Apparatus for transforming MMS media using caching decision and method thereof

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070006317A1 (en) 2005-07-04 2007-01-04 Sony Ericsson Mobile Communications Japan, Inc. Mobile terminal, contents delivery system, and contents reproduction program
US20100214984A1 (en) 2009-02-24 2010-08-26 Pantech Co., Ltd. Method for random access process in mobile communication system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070006317A1 (en) 2005-07-04 2007-01-04 Sony Ericsson Mobile Communications Japan, Inc. Mobile terminal, contents delivery system, and contents reproduction program
US20100214984A1 (en) 2009-02-24 2010-08-26 Pantech Co., Ltd. Method for random access process in mobile communication system

Cited By (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8811952B2 (en) 2002-01-08 2014-08-19 Seven Networks, Inc. Mobile device power management in data synchronization over a mobile network with or without a trigger notification
US8839412B1 (en) 2005-04-21 2014-09-16 Seven Networks, Inc. Flexible real-time inbox access
US8761756B2 (en) 2005-06-21 2014-06-24 Seven Networks International Oy Maintaining an IP connection in a mobile network
US8805425B2 (en) 2007-06-01 2014-08-12 Seven Networks, Inc. Integrated messaging
US8774844B2 (en) 2007-06-01 2014-07-08 Seven Networks, Inc. Integrated messaging
US9002828B2 (en) 2007-12-13 2015-04-07 Seven Networks, Inc. Predictive content delivery
US8862657B2 (en) 2008-01-25 2014-10-14 Seven Networks, Inc. Policy based content service
US8838744B2 (en) 2008-01-28 2014-09-16 Seven Networks, Inc. Web-based access to data objects
US8799410B2 (en) 2008-01-28 2014-08-05 Seven Networks, Inc. System and method of a relay server for managing communications and notification between a mobile device and a web access server
US8909759B2 (en) 2008-10-10 2014-12-09 Seven Networks, Inc. Bandwidth measurement
US9043433B2 (en) 2010-07-26 2015-05-26 Seven Networks, Inc. Mobile network traffic coordination across multiple applications
US8838783B2 (en) 2010-07-26 2014-09-16 Seven Networks, Inc. Distributed caching for resource and mobile network traffic management
US9049179B2 (en) 2010-07-26 2015-06-02 Seven Networks, Inc. Mobile network traffic coordination across multiple applications
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
US8782222B2 (en) 2010-11-01 2014-07-15 Seven Networks Timing of keep-alive messages used in a system for mobile network resource conservation and optimization
US8700728B2 (en) 2010-11-01 2014-04-15 Seven Networks, Inc. Cache defeat detection and caching of content addressed by identifiers intended to defeat cache
US8903954B2 (en) 2010-11-22 2014-12-02 Seven Networks, Inc. Optimization of resource polling intervals to satisfy mobile device requests
US9325662B2 (en) 2011-01-07 2016-04-26 Seven Networks, Llc System and method for reduction of mobile network traffic used for domain name system (DNS) queries
US9084105B2 (en) 2011-04-19 2015-07-14 Seven Networks, Inc. Device resources sharing for network resource conservation
US8832228B2 (en) 2011-04-27 2014-09-09 Seven Networks, Inc. System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief
US8621075B2 (en) 2011-04-27 2013-12-31 Seven Metworks, Inc. Detecting and preserving state for satisfying application requests in a distributed proxy and cache system
US8868753B2 (en) 2011-12-06 2014-10-21 Seven Networks, Inc. System of redundantly clustered machines to provide failover mechanisms for mobile traffic management and network resource conservation
US8934414B2 (en) 2011-12-06 2015-01-13 Seven Networks, Inc. Cellular or WiFi mobile traffic optimization based on public or private network destination
US8977755B2 (en) 2011-12-06 2015-03-10 Seven Networks, Inc. Mobile device and method to utilize the failover mechanism for fault tolerance provided for mobile traffic management and network/device resource conservation
US9208123B2 (en) 2011-12-07 2015-12-08 Seven Networks, Llc Mobile device having content caching mechanisms integrated with a network operator for traffic alleviation in a wireless network and methods therefor
US9009250B2 (en) 2011-12-07 2015-04-14 Seven Networks, Inc. Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation
US9277443B2 (en) 2011-12-07 2016-03-01 Seven Networks, Llc Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
US9173128B2 (en) 2011-12-07 2015-10-27 Seven Networks, Llc Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
US9021021B2 (en) 2011-12-14 2015-04-28 Seven Networks, Inc. Mobile network reporting and usage analytics system and method aggregated using a distributed traffic optimization system
US8909202B2 (en) 2012-01-05 2014-12-09 Seven Networks, Inc. Detection and management of user interactions with foreground applications on a mobile device in distributed caching
US9131397B2 (en) 2012-01-05 2015-09-08 Seven Networks, Inc. Managing cache to prevent overloading of a wireless network due to user activity
US8812695B2 (en) 2012-04-09 2014-08-19 Seven Networks, Inc. Method and system for management of a virtual network connection without heartbeat messages
US10263899B2 (en) 2012-04-10 2019-04-16 Seven Networks, Llc Enhanced customer service for mobile carriers using real-time and historical mobile application and traffic or optimization data associated with mobile devices in a mobile network
US8775631B2 (en) 2012-07-13 2014-07-08 Seven Networks, Inc. Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
US9161258B2 (en) 2012-10-24 2015-10-13 Seven Networks, Llc Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion
US9307493B2 (en) 2012-12-20 2016-04-05 Seven Networks, Llc Systems and methods for application management of mobile device radio state promotion and demotion
US9271238B2 (en) 2013-01-23 2016-02-23 Seven Networks, Llc Application or context aware fast dormancy
US9241314B2 (en) 2013-01-23 2016-01-19 Seven Networks, Llc Mobile device with application or context aware fast dormancy
US8874761B2 (en) 2013-01-25 2014-10-28 Seven Networks, Inc. Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
US8750123B1 (en) 2013-03-11 2014-06-10 Seven Networks, Inc. Mobile device equipped with mobile network congestion recognition to make intelligent decisions regarding connecting to an operator network
US9065765B2 (en) 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
KR102185124B1 (en) * 2017-09-07 2020-12-01 주식회사 케이티 Apparatus for transforming MMS media using caching decision and method thereof

Similar Documents

Publication Publication Date Title
US9729675B2 (en) Enhancement of upload and/or download performance based on client and/or server feedback information
US10063653B2 (en) Distributed server architecture for supporting a predictive content pre-fetching service for mobile device users
US20190312943A1 (en) Systems and methods for avoiding server push of objects already cached at a client
US10771583B2 (en) Managing mobile device user subscription and service preferences to predictively pre-fetch content
US10574778B2 (en) Content replacement and refresh policy implementation for a content distribution network
EP2828751B1 (en) Cloud application scaling framework
US20150172941A1 (en) Quality of experience enhancement for wireless networks based on received signal strength at a mobile device
US10237373B2 (en) Performance-based determination of request modes
US20150026350A1 (en) Resource-aware system, method and program product for managing request traffic based on a management policy
Lymberopoulos et al. Pocketweb: instant web browsing for mobile devices
US9065835B2 (en) Redirecting web content
WO2016023357A1 (en) Webpage access method and apparatus, and router
US10313455B2 (en) Data streaming service for an internet-of-things platform
US20150156279A1 (en) Browser-based analysis of content request mode performance
US9122560B2 (en) System and method of optimization for mobile apps
US8255716B2 (en) Power optimization for data services
US7882181B2 (en) Minimizing data transfer from POP3 servers
US10176428B2 (en) Behavioral analysis for securing peripheral devices
US9379994B2 (en) Flexible storage provisioning
KR20170031702A (en) Efficient content delivery over wireless networks using guaranteed prefetching at selected times-of-day
US20120310882A1 (en) Key value data storage
EP3482553B1 (en) Optimizing user interface data caching for future actions
US10178199B1 (en) Intelligent alarm manipulator and resource tracker
US20190028401A1 (en) Blocking/unblocking algorithms for signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
US9503498B2 (en) Web page script management

Legal Events

Date Code Title Description
A302 Request for accelerated examination
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160111

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170116

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180109

Year of fee payment: 6