KR20110128846A - 장치와 웹 서비스 간에 브라우저 캐시를 동기화하는 프로그래밍 모델 - Google Patents

장치와 웹 서비스 간에 브라우저 캐시를 동기화하는 프로그래밍 모델 Download PDF

Info

Publication number
KR20110128846A
KR20110128846A KR1020117020852A KR20117020852A KR20110128846A KR 20110128846 A KR20110128846 A KR 20110128846A KR 1020117020852 A KR1020117020852 A KR 1020117020852A KR 20117020852 A KR20117020852 A KR 20117020852A KR 20110128846 A KR20110128846 A KR 20110128846A
Authority
KR
South Korea
Prior art keywords
computer
browser
synchronization
browser cache
remote
Prior art date
Application number
KR1020117020852A
Other languages
English (en)
Other versions
KR101644666B1 (ko
Inventor
다르마 슈클라
아브헤이 파라스니스
레이몬드 엔드레스
아래쉬 가네이-사이차니
이스라엘 힐레리오
파루크 모하메드
아디트야 반다카
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20110128846A publication Critical patent/KR20110128846A/ko
Application granted granted Critical
Publication of KR101644666B1 publication Critical patent/KR101644666B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

컴퓨터 사용자는 각각 웹브라우저의 특성이 있는 컴퓨터의 집합을 포함하는 컴퓨팅 환경을 사용할 수 있다. 웹브라우저는 애플리케이션 리소스(application resource)와 사용자-생성 데이터 파일을 포함하는 다양한 타입의 데이터 객체를 포함하는 브라우저 캐시(browser cache)를 가진다. 그러나, 브라우저 캐시의 콘텐츠(contents)는 컴퓨터의 컴퓨팅 환경에 지대한 영향을 주고, 각각의 컴퓨터에 의해 제공되는 컴퓨터 환경은 서로 달라질 수 있기 때문에, 일관되지 않은 컴퓨팅 환경이 제공되게 된다. 이를 대신해, 컴퓨터 환경을 구성하는 컴퓨터의 브라우저 캐시의 콘텐츠를 컴퓨터 간에 서로 동기화되도록 할 수 있다. 추가로, 브라우저 캐시는 컴퓨터 환경 내의 다른 데이터 객체(파일시스템의 연관 부분과 같은)와 동기화 될 수 있다. 동기화는 브라우저가 실행되지 않는 경우에도 독립적으로 애플리케이션을 실행하는 브라우저 외의 프로세스(out-of-brower process)로 구현될 수 있다. 동기화는 또한 웹 애플리케이션이 상호 동작하게 하는 프로그램적 접근(programmatic access)를 통해 노출될 수 있다.

Description

장치와 웹 서비스 간에 브라우저 캐시를 동기화하는 프로그래밍 모델{PROGRAMMING MODEL FOR SYNCHRONIZING BROWSER CACHES ACROSS DEVICES AND WEB SERVICES}
컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템과 관련된 기술이다.
웹서버(webserver)는 종종 HTML 페이지, 미디어 객체, 데이터 저장부, 그리고 실행가능한 스크립트(executable scripts)와 같은 데이터 객체들의 집합을 저장하고, 데이터 객체들의 집합은 웹브라우저에게 제공되고 렌더링(rendering) 되어서 웹사이트를 구성하는 웹페이지들의 집합을 표시한다. 웹브라우저들은 일반적으로 나중에 렌더링 된 웹페이지들에서 재사용하기 위하여 수신한 아이템들을 저장하는 브라우저 캐시를 포함하고, 그렇게 함으로서, 웹브라우저의 성능을 향상시키고, 웹서버의 리소스들을 절약할 수 있고, 웹서버에 접속 불가인 경우에는 웹페이지들을 렌더링할 수 있는 제한된 능력을 선택적으로 제공한다. 컴퓨터 시스템 내의 다른 종류의 데이터 객체들(사용자 문서, 어플리케이션과 운용 시스템 바이너리(application and operating system binaries), 그리고 어플리케이션 설정 정보(application configuration information) 등)과는 대조적으로, 브라우저 캐시에 들어있는 데이터 객체들은 일반적으로 임시적이고 일회용적적(disposable)으로 여겨진다.
이 요약은 상세한 설명에서 상세하게 설명될 내용의 개념들의 모음을 간단한 형태로 소개하도록 제공된다. 이 요약은 본 발명의 핵심 기능들 또는 핵심 요소들을 식별하는데 그 목적이 있는 것이 아니고, 본 발명의 범위의 한정에 목적이 있는 것도 아니다.
웹 기술들의 발전은 더 복잡한 종류의 웹사이트들을 초래하였고, 더 복잡한 종류의 웹사이트들은 웹브라우저 안에서 실행 가능한 웹 어플리케이션들을 포함할 수 있다. 이와 같은 웹사이트들과 웹 어플리케이션들로 구성되는 데이터 객체들은 보통 브라우저 캐시 내에 저장되어 있고, 웹브라우저가 네트워크와 연결이 안 된 경우 또는 웹서버가 오프라인인 경우 등 웹서버에 접속이 불가능한 경우에 이런 웹사이트들의 렌더링과 이런 웹어플리케이션의 실행을 가능하게 하는 것이 바람직할 수 있다. 이런 데이터 객체들은 여러 형식의 브라우저 캐시들(예를 들면 브라우저가 관리하는 어플리케이션(browser-hosted application)의 어플리케이션 리소스 들를 저장하는 어플리케이션 캐시와 HTML 문서들과 이미지들 등의 웹사이트들로부터 검색된 데이터 객체들을 저장하는 콘텐츠 캐시) 안에 저장될 수 있다.
현대의 사용자들은 보통 컴퓨터 세트(휴대용 컴퓨터, 워크스테이션, 그리고 휴대폰 장치)를 활용하고, 이 컴퓨터들은 총괄하여 사용자에게 컴퓨터 환경을 나타낼 수 있고, 이들의 예로는 사용자의 문서들, 설치된 어플리케이션들, 어플리케이션과 운용 시스템 설정 정보, 사용자의 프로파일들, 다양한 개인들의 표현(디렉토리에 저장된 연락처들) 등이 있다. 더 나아가, 이들 컴퓨터들의 특정 요소들은 이러한 컴퓨터들 사이에서 컴퓨터 환경의 일관성을 개선시키기 위해서 동기화될 수 있다. 그러나 각각의 컴퓨터들은 사용자가 각각의 컴퓨터와 서로 다르게 상호작용함에 따라 달라질 수 있는 콘텐츠를 가지는 브라우저 캐시를 가지는 브라우저로 구성될 수 있다. 만약 브라우저 캐시의 콘텐츠가 오프라인에서도 이용 가능한 어플리케이션들과 저장된 사용자 문서와 같은 중요한 데이터 객체들의 확장된 집합(expanding set)을 포함한다면, 그때 그러한 컴퓨터들 사이의 그러한 웹캐시들의 다양성은 사용 가능한 어플리케이션들의 일관성 없는 집합들, 저장된 문서들의 버전들의 충돌, 그리고 미디어 라이브러리들(media libraries) 내의 불일치 등의 컴퓨터 고유의 차이점들을 발생시킬 수 있다.
이러한 비일관성과 버전의 충돌들을 감소시키기 위해서, 이러한 컴퓨터들의 브라우저 캐시들은 동기화될 수 있다. 컴퓨터 환경을 공유하는 컴퓨터들 집합 중에서, 컴퓨터는 변경(alteration)을 위해 브라우저 캐시의 상태를 모니터하고, 다양한 동기화 방침들에 따라 다른 컴퓨터들의 브라우저 캐시들과 동기화하도록 설정될 수 있다. 이러한 브라우저 캐시의 동기화는 컴퓨터들 사이의 일반적인 컴퓨터 환경의 동기화 과정 안에 포함될 수도 있고, 그렇게 함으로써 동기화 과정의 효율을 개선하고 컴퓨터 리소스들을 경제적으로 활용할 수 있다. 추가로, 프로그램의 인터페이스가 웹브라우저 안에서 실행중인 어플리케이션이 다양한 데이터 객체들의 동기화를 요청하거나 브라우저 캐시의 동기화 방침들에 관련된 정보를 식별하는 하는 등의 방법으로 브라우저 캐시 동기화와 상호 작용하는 것을 허용하도록 제공될 수 있다. 사용자가 활용하는 다양한 컴퓨터들의 브라우저 캐시들의 일관성을 유지함으로써, 사용자의 데이터 객체들과 컴퓨터 환경의 일관성을 촉진할 수 있다.
상술한 내용과 그것과 유사한 목적의 달성에 있어서, 후술하는 상세한 설명과 도면들이 특정 도해 요소들과 구현들을 제시한다. 이들은 다양한 방법들 중 일부인 하나 또는 그 이상의 구현될 수 있는 요소들을 보여준다. 본 발명의 다른 요소들, 장점들, 신규성 있는 기능들이 후술하는 상세한 설명과 도면들에 의해서 명확해질 것이다.
도 1은 브라우저 캐시를 가지는 브라우저들를 포함하는 컴퓨터들의 집합과 관련된 예시적 시나리오를 도시하는 요소 블록 다이어그램(component block diagram) 이다.
도 2는 동기화될 수 있는 브라우저 캐시를 가지는 브라우저들을 포함하는 컴퓨터들의 집합과 관련된 예시적 시나리오를 도시하는 요소 블록 다이어그램(compoenet block diagram) 이다.
도 3은 컴퓨터 상의 브라우저의 브라우저 캐시와 원격 컴퓨터의 원격 저장부를 동기화하도록 설정된 예시적 시스템을 도시하는 요소 블록 다이어그램(component block diagram) 이다.
도 4는 여기서 서술된 하나 또는 그 이상의 프로비전들(provisions0)에 구현되는 프로세서-실행가능 명령들로 구성되는 예시적 컴퓨터 가독 가능 매체의 도시이다.
도 5는 컴퓨터 환경 호스트와 다양한 컴퓨터 환경 렌더링 장치들의 예시적 상호 작용의 도시이다.
도 6은 여기서 서술된 프로비젼들이 구현되는 예시적 컴퓨터 환경을 도시한다.
이하에서 본 발명의 몇몇 실시예는, 본 발명의 전체의 실시예가 아닌 일부의 실시예를 도시하는 첨부된 도면을 참조하여 보다 구체적으로 설명될 것이다. 또한 본 발명의 여러 실시예는 여러 상이한 형태로 구현될 수 있고, 본 명세서에 설명된 실시예만으로 한정된다고 해석되지 않아야 한다. 도면에 걸쳐 동일한 참조 번호는 동일한 구성 요소를 지칭한다.
컴퓨터 분야에서, 웹서버는 웹페이지의 콘텐츠를 다양한 방문자에게 제공할 수 있다. 초기 세대의 웹사이트에서는, 일반적으로 콘텐츠는 HTML 문서, HTML 문서들에 포함되는 그래픽, 클라이언트 측 자바 스크립트의 스크립트(client-side JavaScript scripts) 등의 간단한 종류의 데이터 객체들과만 관련이 되었었다. 이런 데이터 객체들이 사용자들을 위한 웹사이트를 구성하는 웹페이지들을 렌더링하는 웹브라우저에 전달되었다.
초기의 웹브라우저들의 경우, 브라우저 캐시(browser cache)는 추후 재사용을 위해서 명령의 수신 후 데이터 객체들의 일부 또는 전부를 저장하는 목적으로 개발되었고, 그렇게 함으로써 데이터 객체의 중복적 다운로드를 방지하여 웹브라우저의 성능을 향상시키고, 서버의 컴퓨터 리소스 사용을 절약할 수 있었다. 브라우저 캐시에 저장된 데이터 객체들은 서버가 오프라인인 경우 또는 컴퓨터가 네트워크와 연결이 안 된 경우 등의 서버의 접속이 불가능한 경우에 콘텐츠의 표현을 렌더링하는 용도로도 사용될 수 있다. 이와 같이 데이터 객체들을 캐싱(caching)하는 것이 중복적인 네트워크 전송을 감소시켜 웹브라우저의 성능을 향상시킬 수 있지만, 이러한 데이터 객체들은 임시적이고 일회용적으로 여겨져 왔다. 사용자의 다음 웹사이트 방문 시에 아이템들을 다시 얻을 수 있기 때문에, 많은 브라우저들은 임시적인 공간 절약 방법으로 브라우저 캐시의 콘텐츠를 삭제하는 옵션을 포함한다.
현대적 웹사이트들은 종종 초기 세대의 웹에 비하여 진보된 형식의 콘텐츠와 관련이 된다. 특히, 웹사이트는 실행가능한 바이너리(executable binearies), 데이터 소스, 그리고 사용자 생산 문서(user-generated documents)과 같은 사용자-데이터 객체(user-date objects)를 포함하는 하나 또는 그 이상의 어플리케이션들을 포함할 수 있다. 이러한 어플리케이션들은 또한 어플리케이션을 표시할 때 웹브라우저에 의해 이용될 수 있고, 브라우저 캐시 내에 저장될 수 있는 다양한 데이터 객체들의 집합과 관련될 수 있다. 더 나아가, 브라우저 캐시는 웹사이트가 접속 불가일 때(예를 들어 컴퓨터가 네트워크랑 연결이 안 된 경우 또는 웹사이트가 오프라인인 경우), 웹사이트의 어떤 측면들에 접속을 제공하는데 사용되는 데이터 객체들을 저장할 수 있다. 이러한 확장된 능력들의 관점에서, 브라우저 캐시 내에 저장된 데이터 객체들은 사용자의 컴퓨터 환경의 중요 부분을 구성한다. 또한 현대적 브라우저들은 다양한 형식의 복수의 캐시들을 제공할 수도 있다. 이러한 예로 웹브라우저에서 실행될 수 있는 어플리케이션의 어플리케이션 리소스로 구성되는 데이터 객체들이 브라우저 어플리케이션 캐시에 저장될 수 있고, HTML 문서들과 그 안의 이미지들 등의 방문한 웹사이트들에서 검색된 데이터 객체들은 브라우저 컨텐츠 캐시에 저장될 수 있다. 두 가지 방식의 캐시들은 유사한 방식으로 웹브라우저의 성능을 고취시킬 수 있지만, 특정 캐시에 리소스들을 저장하는 것은 추가적인 장점들을 제공할 수 있다. 예를 들어 사용자는 어플리케이션 캐시의 콘텐츠를 보존하면서 콘텐츠 캐시의 비움 요청을 할 수 있다.
현대 컴퓨터 환경의 다른 경향은 사용자가 활용할 수 있는 컴퓨터 영역의 확대와 관련된다. 예를 들어, 사용자는 종종 개인 워크스테이션, 휴대용 컴퓨터, 팜(palm), 포켓 형식(pocket form factor), 휴대전화, 미디어 재생기, 카메라, 그리고 게임 콘솔(gaming console) 등을 활용할 수 있다. 이 컴퓨터들이 전문화된 목적과 시나리오들(scenarios)을 가지고 있을 수도 있지만, 사용자 입장에서는 그들 전체를 묶어서 컴퓨터 환경을 구성한 것으로 볼 수도 있다. 더 나아가, 컴퓨터 환경은 미디어 객체, 문서, 어플리케이션, 그리고 운용 시스템 선호 등의 크고 다양한 데이터 객체들의 집합으로 구성될 수 있고, 이들 데이터 객체들은 모든 컴퓨터들 사이에서 공유될 수 있다. 예를 들어, 이들 데이터 객체들은 좀더 일관성있는 사용자 경험을 제공하기 위해서 자동으로 동기화될 수 있고, 이로 인해 컴퓨터 환경 내의 하나의 컴퓨터에 발생한 변화(예들 들어 새로운 미디어 객체들 또는 어플리케이션들이 추가된 경우, 또는 문서에 변경이 발생한 경우)가 자동으로 컴퓨터 환경 전체로 전파될 수 있다.
도 1은 사용자(12)가 문서들의 집합(32) 등의 데이터 객체의 집합을 저장하는 컴퓨터 환경(18)을 공유하는 컴퓨터들 집합을 운용할 수 있는 예시적 시나리오(10)를 도시하고, 컴퓨터들 집합은 워크스테이션(14), 노트북(28), 그리고 휴대전화장치(30)를 포함한다. 또한 각각의 컴퓨터에는 브라우저가 설치될 수 있고, 브라우저는 각각의 컴퓨터에 전달되거나 브라우저(16)와 결부된 브라우저 캐시(20)에 저장되는 데이터 객체(24)의 집단으로 구성되는 어플리케이션(22)을 렌더링 하는데 이용될 수 있다. 데이터 객체들(24)은 어플리케이션(22)의 로직(logic)과 사용자 인터페이스로 구성되는 어플리케이션 바이너리(application binary), 사용자(12)가 선택한 다양한 세팅과 선호도를 저장하는 어플리케이션 설정(application configuration), 그리고 어플리케이션에 의해 만들어지고 사용자 문서(26)의 형식으로 사용자(12)가 브라우저(16) 내에서 볼 수 있는 다양한 문서들을 포함할 수 있다. 추가적인 데이터 객체들은 브라우저 캐시(20)를 제외한 컴퓨터 환경(18) 안에 저장될 수 있고, 문서들(32)의 집합이 그 예이다. 더 나아가, 이들 컴퓨터들의 컴퓨터 환경(18)은 데이터 객체들 일부 또는 전부를 공유할 수 있고, 예를 들어 컴퓨터 환경(18)에 데이터 객체로서 저장된 문서들(32)은 컴퓨터 환경(18)이 공유되는 컴퓨터들 전부에서의 접근성을 위해서 컴퓨터들 사이에서 공유될 수 있다.
그러나 만약 각각의 다양한 컴퓨터들이 브라우저 캐시로 구성되고, 만약 브라우저 캐시들이 사용자의 컴퓨터 환경의 중요 부분을 구성하는 데이터 객체들을 포함하는 경우에는 문제가 발생할 수 있다. 초기 세대의 브라우저들 내의 브라우저 캐시들은 임시적이고 일회용적인 데이터 객체들만 저장하기 때문에, 컴퓨터 환경 내의 데이터 객체가 동기화된 경우에도 컴퓨터들의 브라우저 캐시들이 동기화에 포함되지 않을 수도 있다. 그래서 사용자의 컴퓨터 환경을 구성하는 다양한 컴퓨터들의 브라우저 캐시들은 다양화되어, 다양한 컴퓨터들에서 다양한 컴퓨터 환경들을 발생시킬 수 있다. 예를 들면 브라우저 캐시에 다른 버전들의 문서가 저장될 수 있고, 다양한 컴퓨터들에서 사용 가능한 다양한 브라우저가 저장된 어플리케이션들의 집합이 있을 수 있다. 도 1의 예시적 시나리오(10)에서 더 도시되어 있듯이, 컴퓨터 환경(18) 내의 문서들(32)과 다른 데이터 객체들이 컴퓨터들 사이에서 자동으로 동기화된다고 하더라도, 각각의 브라우저 캐시들(20)의 콘텐츠들은 동기화에 미포함될 수도 있다. 첫 번째 예시로, 제 1 문서("DOC 1")로 구성되는 데이터 객체(24)가 각각의 컴퓨터 안에서 다른 버전들로 존재할 수 있고, 이런 경우는 문서가 다른 장치들에서 그리고 다른 시간에 업데이트 되고 동기화가 이루어지지 않은 경우에 발생한다. 두 번째 예시로서, 데이터 객체들(24)이 하나의 브라우저 캐시(20)에만 존재하고 다른 브라우저 캐시(20)에서는 존재하지 않을 수 있고, 구체적 예를 들면 "DOC 3"으로 명명된 데이터 객체(24)가 워크스테이션(14)의 브라우저 캐시(20)에는 포함되나 노트북 컴퓨터(28)의 브라우저 캐시(20)에는 포함되지 않을 수 있다. 세 번째 예시로서, 어플리케이션(22)이 일부 컴퓨터들에 있어서는 오프라인 접속을 위해서 저장될 수 있고 다른 일부 컴퓨터들에 있어서는 아닐 수 있다. 이 예시적 시나리오(10)에서 "Application" 어플리케이션은 휴대전화 장치(30)를 제외하고 워크스테이션(14)과 노트북 컴퓨터(28)에서의 오프라인 접속을 위해서 저장될 수 있다. 사용자(12)의 선택(예를 들어 사용자(12)가 어플리케이션(22)을 휴대전화 장치(30)에서 제외하는 명령을 하는 경우) 또는 논리적 이유(예를 들어 저장 공간, 성능, 또는 하드웨어적 한계들에 의해 휴대전화 장치(30)에서 어플리케이션(22)을 실행하는 것이 불가능한 경우)에 따라 이런 불일치(decrepancy)가 발생할 수 있지만, 다른 경우들에서 이들 불일치는 바람직하지 않고 피해야함에도 불구하고 사용자(12)의 컴퓨터 환경을 구성하는 컴퓨터들의 브라우저 캐시(20)의 동기화 과정의 부재로 발생할 수 있다.
도 2는 본 기술의 실시예를 보여주는 예시적 시나리오(40)가 도시된다. 도 2의 예시적 시나리오(40)에서, 워크스테이션(14), 노트북 컴퓨터(28), 그리고 휴대전화 장치(30)는 다시 각각 어플리케이션(22)에 속할 수도 있는 데이터 객체들(24)을 저장하도록 설정된 브라우저 캐시(20)와 결합된 브라우저(16)로 구성될 수 있다. 이들 컴퓨터들은 또한 총괄적으로 사용자에게 더 일관성 있는 컴퓨터 환경을 제공하기 위하여, 이들 컴퓨터들 사이에서 동기화되는 데이터 객체들(문서(32)와 같은)의 집합을 포함하는 컴퓨터들 전체가 공유하는 컴퓨터 환경(18)을 구성할 수 있다. 그러나 예시적 시나리오(40)에서 하나 또는 그 이상의 컴퓨터들은 또한 각각의 컴퓨터의 브라우저(16)의 브라우저 캐시(20)를, 다른 컴퓨터의 브라우저(16)의 브라우저 캐시(20)와 같은 원격 컴퓨터의 원격 저장부와 동기화하도록 설정되는 예시적 시스템(42)를 포함할 수 있다. 예시적 시스템(42)은 캐시 된 데이터 객체(24)의 형성, 편집, 또는 삭제 등의 브라우저 캐시(20)에 데이터 객체(24)를 기재하는 행위를 감지하도록 설정되어 브라우저 캐시를 모니터하는 브라우저 캐시 모니터 요소(44)를 포함할 수 있다. 예시적 시스템(42)은 또한 브라우저 캐시 모니터 요소(44)가 기재행위를 감지하고 나서 브라우저 캐시(20)를 원격 저장부(예를 들면 다른 컴퓨터의 브라우저 캐시(20))와 동기화하도록 설정될 수 있는 브라우저 캐시 동기화 요소(45)로 구성될 수 있다. 첫 번째 예시로서, 휴대전화 장치(30)에 구현된 브라우저 캐시 모니터 요소(44)는 브라우저 캐시(20)에 최신 버전의 "DOC 1" 데이터 객체(24)가 기재된 것을 감지할 수 있고, 데이터 객체(24)를 노트북 컴퓨터(28)의 브라우저 캐시(20)에 전달할 수 있다.(예를 들면 브라우저 캐시(20)와 직접 상호작용을 하거나, 데이터 객체(24)를 노트북 컴퓨터(28)의 브라우저 캐시 동기화 요소(46)에 제공하는 방법으로) 노트북 컴퓨터(28)의 브라우저 캐시 모니터 요소(44)는 순서대로 "DOC 1" 데이터 객체(24)의 기재를 감지하고, 브라우저 캐시 동기화 요소(46)는 업데이트 된 데이터 객체(24)를 워크스테이션(14)의 브라우저 캐시(20)에 전달할 수 있다.
도 2에 도시된 두 번째 예시에서, 브라우저 캐시 모니터 요소(44)는 "DOC 3" 데이터 객체(24)의 기재와 노트북 컴퓨터(28)의 브라우저 캐시(20)에서 기재의 부재를 감지할 수 있고, 감지 이후에 워크스테이션(14)의 브라우저 캐시 동기화 요소(46)는 "DOC 3" 데이터 객체(24)를 노트북 컴퓨터(28)의 브라우저 캐시(20)에 전달할 수 있다. 세 번째 예시로서, 노트북 컴퓨터(28)의 브라우저 캐시 모니터 요소(20)는 어플리케이션(22)의 어플리케이션 리소스들로 구성된 데이터 객체(24)의 저장을 감지할 수 있고, 휴대전화 장치(30)의 브라우저 캐시(20)에 그와 같은 데이터 객체(24)의 부제를 감지하고 나서, 노트북 컴퓨터(28)의 브라우저 캐시 동기화 요소(46)는 그 데이터 객체(24)를 휴대전화 장치(30)에 전송할 수 있다. 이런 식으로, 다양한 컴퓨터들의 브라우저 캐시들(20)은 동기화가 될 수 있고, 그로 인해 사용자들에게 일관된 컴퓨터 환경("DOC 1" 데이터 객체(24)의 최신 버전, "DOC 3" 데이터 객체(24)의 존재, 모든 컴퓨터에서 어플리케이션(22)의 사용가능성을 포함한다)을 제공할 수 있다.
더 일반적으로, 그리고 이들 시나리오들을 고려하여, 도 3은 여기서 서술된 기술들의 예시적 실시예(42)를 원격 컴퓨터(54)의 원격 저장부(56)와 컴퓨터(52)의 브라우저(16)의 브라우저 캐시(20)가 동기화하도록 설정되는 예시적 시스템(42)으로 보여준다. 예시적 시스템(42)은 브라우저 캐시(20) 내 적어도 하나의 데이터 객체(24)의 기재를 감지하도록 설정된 브라우저 캐시 모니터 요소(44)와 브라우저 캐시 모니터 요소(44)가 기재를 감지하고 나서 브라우저 캐시(20)와 원격 저장부(56)를 동기화하도록 설정된 브라우저 캐시 동기화 요소(46)로 구성될 수 있다. 예시적 시스템(58)은 컴퓨터(52)의 메모리(58)에 저장되는 명령들의 집합으로 구성될 수 있고, 특정 사용자 집단이 활용하는 다른 컴퓨터들과 컴퓨터(52)의 컴퓨터 환경의 동기화와 브라우저 캐시(20)를 지원하기 위해 프로세서(60)에서 실행할 수 있는 명령들의 집합으로 구성될 수 있다.
본 기술의 또 다른 실시예는 여기 표현된 기술들을 적용하기 위해 설정된 프로세서-실행가능(processor-executable) 명령들로 구성되는 컴퓨터 판독 가능 매체(computer-readable medium)와 관련된다. 예시적인 컴퓨터 판독 가능 매체가 도 5에서 도시되고, 구체적 구현(70)은 컴퓨터 판독 가능 매체(예를 들면 CD-R, DVD-R, 또는 하드 디스크 드라이브)(72)로 구성되고, 이 때 컴퓨터 판독 가능 매체(72)는 인코딩된(encoded) 컴퓨터 판독 가능 데이터(74)이다. 이 컴퓨터 판독 가능 데이터(74)는 결국 여기서 제시된 원칙들에 의거하여 운용하도록 설정된 컴퓨터 명령(76)의 집합으로 구성된다. 그런 하나의 실시예에서, 프로세서-실행 가능 명령들(76)은 도 3의 예시적 시스템(42)과 같이 원격 컴퓨터의 원격 저장부와 컴퓨터의 브라우저의 브라우저 캐시를 동기화시키도록 설정된 시스템을 구현하도록 설정될 수 있다. 많은 그와 같은 컴퓨터 판독 가능 매체는 본 발명의 당업자 기준에서 여기 표현된 기술들에 부합되게 운용되도록 설정될 수 있다.
여기서 논의된 기술들은 많은 측면에서 차이를 두고 고안될 수 있고, 어떤 일부 변경안들은 추가적인 장점들이 있을 수 있고 및/또는 다른 변화들과 비교해서 단점들을 감소시킬 수 있다. 더 나아가 일부 변경안들은 조합으로 구현될 수도 있고, 일부 조합들은 추가적인 장점들을 포함할 수도 있고 및/또는 시너지적인 협조를 통해 단점을 감소시킬 수 있다. 변경안들은 그와 같은 실시예들한테 개별적 및/또는 시너지적인 장점들을 부여하기 위하여 다양한 실시예들에 포함될 수 있다.
본 기술들의 실시예들 사이에서 변경될 수 있는 첫 번째 측면은 브라우저 캐시(20)와 원격 저장부(56) 사이에서 실행될 수 있는 동기화의 종류와 관련된다. 데이터 객체들을 동기화하는 과정은 다양한 시나리오들에 적합하도록 다양하게 조절될 수 있는 많은 변수들을 가질 수 있다. 첫 번째 예로, 동기화는 많은 사건들에 의해서 촉발될 수 있다. 그런 하나의 실시예에서, 동기화는 브라우저 캐시 모니터 요소(44)가 데이터 객체(24)가 브라우저 캐시(20)에 기재된 것을 감지하고 나서 즉각 촉발될 수 있다. 신속한 동기화는 브라우저 캐시(20)와 원격 저장부(56) 사이에 고도의 동기화를 제공하지만, 이 촉발은 비효율적 일 수 있다. 예를 들어 컴퓨터(52)와 원격 컴퓨터(54) 사이에 개개의 기재마다 연결을 설정해야 하고, 및/또는 짧은 기간에 수차례 업데이트 되는 데이터 객체를 위하여 짧은 기간에 연결들과 데이터 전송들의 시리즈를 설정해야 한다. 또 다른 실시예에서, 동기화는 브라우저 모니터 요소(44)가 기재를 감지한 후 촉발될 수 있으나, 특정한 한계점에 도달한 후에야 촉발될 수 있고, 예를 들어 규정된 한계 기간이 브라우저 캐시(20)에 추가적인 기재 없이 도과하는 경우 그리고/또는 규정된 한계 데이터양이 브라우저 캐시(20)에 기재된 경우가 있다. 그 대신에 또는 추가적으로 동기화는 원격 컴퓨터(54)에 의해 촉발될 수도 있다. 예를 들어 원격 컴퓨터(54)는 컴퓨터(52)에 브라우저 캐시(20)와 원격 저장부(56)를 동기화하라는 통지를 보낼 수 있고, 브라우저 캐시 동기화 요소(46)는 원격 컴퓨터(54)로부터 통지를 수신하고 난 후, 동기화를 수행하도록 설정될 수 있다.이런 종류의 설정은 동등한 관계(peer relationship)을 가지는 컴퓨터들 사이에 유리할 수 있다. 동등한 관계의 예로 둘 중 어느 하나의 컴퓨터(52)의 브라우저 캐시(20)의 변경이 가능한 두 개의 컴퓨터가 있다. 다른 대안으로, 동기화는 주기적으로 촉발될 수도 있고, 예를 들면 주 단위의 미리 결정된 시간 또는 마지막 동기화 이후 경과된 특정한 시간을 기준으로 할 수 있다. 또 다른 대안으로, 동기화는 다른 인자들에 의해 촉발될 수도 있고, 이러한 예로는 프로세서(60)가 한계 기간 동안 작동되지 않는 것이 감지되는 경우 또는 네트워크 대역폭의 사용 가능성이 감지된 경우 등이 있다.
첫 번째 측면의 두 번째 변경안으로, 동기화는 다양한 방법으로 발생할 수 있다. 첫 번째 예시로서, 컴퓨터(20)는 원격 저장부(56)의 콘텐츠를 조사하지 않고 단순하게 컴퓨터(20)에서 변하는 어떠한 데이터 객체(24)라도 원격 컴퓨터(54)에 전달한다. 이런 설정은 원격 컴퓨터(54)가 컴퓨터(52)로부터만 업데이트를 수신하는 아카이벌 서버(archival server)로 구성되는 경우에 적합하다. 두 번째 예시로서, 브라우저 캐시 동기화 요소(46)가 원격 컴퓨터(54)의 원격 저장부(56)의 콘텐츠에 대하여 문의할 수 있고, 각각의 데이터 객체들(24)을 비교하여 업데이트 대상에 해당하면서 원격 저장부(56) 내에 부재하거나 업데이트가 안 된 상태인 데이터 객체(24)를 판단한다. 그 대신에, 브라우저 캐시 동기화 요소(46)는 브라우저 캐시(20)의 콘텐츠 목록을 원격 저장부(56)의 콘텐츠와 비교할 수 있도록 원격 컴퓨터(54)에 전달할 수 있고, 원격 저장부(56)과 브라우저 캐시(20)를 동기화하기 위해서 실행될 작업들의 목록을 원격 컴퓨터(54)로부터 수신할 수 있다. 어떤 경우의 실시예에서도, 비교 과정은 여러 요소들을 고려한다. 고려하는 요소들의 예로는 데이터 객체들(24)의 변경 날짜들, 데이터 객체들(24)의 크기들 또는 형식들, 다양한 데이터 객체들(24)에 기인하는 버전 식별기(version identifier), 및/또는 데이터 객체들(24)의 콘텐츠를 나타내는 해시코드(hashcode) 등이 있다. 그 후에 브라우저 캐시 동기화 요소(46)는 원격 저장부(56)와 브라우저 캐시(20)를 동기화시키기 위해서 전달되어야하는 데이터 객체들(24)을 원격 컴퓨터(54)에 보낼 수 있다. 그 대신에 또는 추가적으로, 브라우저 캐시 동기화 요소(46)는 원격 컴퓨터(54)에게 최근에 업데이트되거나 새로 저장된 데이터 객체들(24)을 요청할 수 있고, 수신 후 그런 데이터 객체들을 브라우저 캐시(20)에 저장할 수 있다. 그 대신에 또는 추가적으로, 만약 데이터 객체(24)가 브라우저 캐시(24)와 원격 저장부(56) 모두에서 변경된 것이 발견된 경우, 브라우저 캐시 동기화 요소(46) 및/또는 원격 컴퓨터(54)는 데이터 객체(24)의 표현 중 하나를 우선적 표현(authoritative)으로 선택할지 여부를 결정할 수 있고 비 우선적 표현(non-authoritative)들을 교체할 수 있다. 그렇게 하는 대신에, 데이터 객체(24)의 표현들을 병합하여 모든 변경들을 포함하는 하이브리드 데이터 객체(24)를 생성할 수 있고, 데이터 객체 모두를 하이브리드 데이터 객체(24)로 교체할 수 있다.
동기화의 가변적인 복합성 중 일부를 도시하는 두 번째 변경안의 특징 중 하나는 브라우저 캐시(20)에 부재 하는 원격 저장부(56) 내의 데이터 객체의 발견과 관련되어 있다. 이런 데이터 객체들은 직전 동기화 이후 새롭게 원격 저장부(56)에 저장되거나, 브라우저 캐시(20)로부터 이런 데이터 객체들이 제거된 경우에 존재하게 된다. 하나의 실시예에서, 만약 브라우저 캐시 동기화 요소(46)가 브라우저 캐시(20)에 부재 하는 원격 저장부(56) 내의 데이터 객체(24)를 감지하면, 브라우저 캐시 동기화 요소(46)는 원격 컴퓨터(54)에게 원격 저장부(56)로부터 데이터 객체(24)를 제거하라는 요청을 할 수 있다.(그렇게 함으로써 브라우저 캐시(20)로부터 제거됨이 추정된다.) 역으로, 브라우저 캐시 동기화 요소(46)는 원격 저장부(56)에서 제거된 데이터 객체들(24)을 브라우저 캐시(20)에서 제거하라는 요청을 원격 저장부(56)로부터 수신하도록 설정될 수 있고, 동기화를 유지할 수 있도록 그에 부응하여 행동할 수 있다. 그 대신에 또는 추가적으로, 브라우저 캐시 모니터 요소(44)는 브라우저 캐시(20) 내의 적어도 하나의 제거된 데이터 객체(24)의 제거를 감지할 수 있도록 노력할 수 있고, 그 후에 브라우저 캐시 동기화 요소(46)는 원격 컴퓨터(54)에게 원격 저장부(56)로부터 데이터 객체(24)를 제거하라는 요청을 할 수 있다(그렇게 함으로서 원격 저장부(56)에 새로운 추가가 발생했음이 추정된다). 또 다른 실시예에서는, 브라우저 캐시 모니터 요소는 브라우저 캐시(20)로부터 제거된 적어도 하나의 데이터 객체의 제거를 감지하도록 설정될 수 있고, 원격 저장부(56)에 그 제거된 데이터 객체의 제거를 요청할 수 있다. 그 후에 원격 저장부(56) 안에서 식별된 어떤 데이터 객체들도 원격 저장부(56)에 최근에 추가된 것으로 추정될 수 있다. 또 다른 실시예에서, 브라우저 캐시(20) 및/또는 원격 저장부(56)는 각각의 데이터 객체 저장들에 대한 변경 기록을 유지할 수 있고, 이들 저널들을 검사하거나 비교해서 정확한 동기화 작업을 판단할 수 있다.
첫 번째 측면에 대한 세 번째 변경안으로, 이들 기술들은 웹브라우저에 의해 제공되는 특정 데이터 캐시들에 선택적으로 적용될 수 있다. 웹브라우저가 수신하는 데이터 객체들이 다른 맥락들에서 유용할 수 있기 때문에(예를 들어 어플리케이션에 속하는 어플리케이션 리소스들과 웹페이지 렌더링에 사용되는 콘텐츠-형식의 데이터 객체들(content-type data objects), 더 구체적으로는 HTML 문서들, 스타일 시트, 그리고 임베드(embedded) 된 미디어 객체들), 웹브라우저는 그런 데이터 객체들을 다른 캐시들에 저장할 수 있다(예를 들어 어플리케이션 리소스들을 저장하도록 설정된 어플리케이션 캐시와 콘텐츠-형식 데이터 객체들을 저장하도록 설정된 콘텐츠 캐시). 여기 관련된 동기화 기술들은 이와 같은 캐시들의 콘텐츠에 다양한 방법으로 적용될 수 있다. 첫 번째 예시로, 동기화는 이런 캐시들 내의 모든 데이터 객체들에 균일하게 적용될 수 있다. 두 번째 예시로, 동기화는, 더 중요한 가치가 있는 데이터 객체들만 저장하고 활용성이 낮은 데이터 객체들을 저장하도록 설정된 데이터 캐시들의 콘텐츠는 무시하도록 설정된 특정한 캐시들에게만 적용될 수도 있다. 세 번째 예시로, 동기화는 이런 캐시들 마다 다르게 적용될 수 있고, 구체적 예시로는 어플리케이션 캐시는 빈번한 주기로 완전히 동기화될 수 있고, 반면 콘텐츠 캐시는 그 안에 저장된 데이터 객체들의 일부만이 동기화되고(예를 들어 최근 기간 내에서 검색되거나 접속된 데이터 객체들만), 덜 엄격한 스케줄에 의해 동기화될 수 있다.
첫 번째 측면의 추가적인 변경안들은 더 복잡한 형식의 동기화와 관련될 수 있다. 첫 번째 예시로, 브라우저 캐시 동기화 요소(46) 및/또는 원격 저장부(56)는 데이터 객체(24)의 일부만을 동기화하도록 설정될 수 있고, 구체적 예시로는 적어도 하나의 동기화 데이터 객체 기준(synchronized data object criterion)을 만족시키는 데이터 객체들(24)의 부분집합 등이 있다. 예를 들어, 브라우저 캐시 동기화 요소(46)는 사용자 데이터 파일들로만 구성되는 데이터 객체들(24) 및/또는 어플리케이션 바이너리들로만 구성되는 데이터 객체들(24) 및/또는 특정 사용자 또는 어플리케이션에 속하는 데이터 객체들(24), 및/또는 특정 데이터 크기를 초과하지 않는 데이터 객체들(24)을 동기화하도록 설정될 수 있다. 따라서 브라우저 캐시 동기화 요소(46)는 동기화 도중에 브라우저 캐시(20)에 저장되어 있는 다른 데이터 객체들(24)을 무시할 수 있다. 두 번째 예시로, 동기화 지침(synchronization policy)이 동기화 촉발 지침(예를 들면 동기화 시작 조건들의 집합), 동기화 형식 지침(단일방향의 동기화 vs. 양방향의 동기화), 데이터 객체 비교 지침(차이점을 감지하기 위해 데이터 객체의 두 표현들을 비교하는 기준), 데이터 객체 형식 병합 지침(병합될 수 있는 데이터 객체들(24)의 형식들과 논리), 및/또는 데이터 객체 충돌 해결 지침(데이터 객체들(24)의 차이점을 해결하는 논리) 등의 동기화의 다양한 측변들을 서술하도록 고안될 수 있다. 다양한 형식의 동기화를 서술하는 여러 가지 동기화 지침들을 설정하는 것은 유리한 점이 있다.(예를 들면 드물게 행하여지는 동기화에는 제 1 동기화 지침이 적용되고, 빈번하게 이루어지는 동기화에는 제 2 동기화 지침이 적용될 수 있다) 더 나아가, 동기화 지침들은 컴퓨터(52)와 원격 컴퓨터(54) 사이의 관계에 따라 둘 중 하나에 의해 정해질 수 있다. 본 기술의 당업자들은 여기 서술된 기술들을 구현하면서 브라우저 캐시(20)와 원격 컴퓨터(54)의 동기화를 시작하고 수행할 수 있는 많은 기술을 고안할 수 있을 것이다.
본 기술의 기술들의 실시예들 사이에서 달라질 수 있는 두 번째 측면은 구현의 구조와 관련된다. 첫 번째 예로서, 브라우저 캐시 모니터 요소(44)와 브라우저 캐시 동기화 요소(46)는 컴퓨터(52) 내에서 다양한 방식으로 실행될 수 있다. 첫 번째 실시예에서, 브라우저 캐시 모니터 요소(44)는 컴퓨터(52)의 브라우저(16) 내에서 실행되도록 설정될 수 있다(예를 들면 브라우저(16)의 일부로서 또는 그 안의 플러그 인 설치로서). 이런 구현은 만약 브라우저 캐시 모니터 요소(44)가 브라우저 캐시 모니터 요소(46)에 의한 동기화를 촉발하기 위해서 브라우저 캐시(20)의 변화들을 모니터하는 일을 주된 업무로 하는 경우에 특히 유용하고, 왜냐하면 이런 변화들은 브라우저(16)가 실행 중일 때만 나타날 가능성이 크기 때문이다. 대조적으로, 그리고 그 대신에 또는 추가적으로, 브라우저 캐시 동기화 요소(46)는 브라우저(16) 밖의 프로세스로 컴퓨터(52)에서 실행되도록 설정될 수 있고, 이런 예로는 컴퓨터(52)의 백그라운드 서비스로 실행되는 경우가 있다. 이는 동기화가 브라우저(16)와 독립해서 일어날 수 있다는 점에서 유리할 수 있는데, 이런 예로는 웹페이지 렌더링과 브라우저(16)로 어플리케이션(20)을 실행하는 것을 간섭하지 않고, 변경된 데이터 객체들(24)을 동기화하는 것, 이런 어플리케이션(20)이 미 실행 중일 때 그리고 브라우저(16)가 미실행중인 경우라 하더라도 브라우저 캐시(20)와 원격 저장부(56)의 동기화가 발생하는 것을 허용하는 것 등이 있다. 예를 들면, 컴퓨터(52)가 네트워크에 연결되어 있지만 사용자(12)가 브라우저(16)을 사용하지 않는 경우에(컴퓨터(52)가 미가동중인 경우), 브라우저 캐시 동기화 요소(46)는 원격 저장부(56)로부터 일부 업데이트된 데이터 객체들(24)을 검색할고 그들을 브라우저 캐시(20)에 저장할 수 있고, 이들 객체들은 사용자(12)가 이들 데이터 객체들(24)의 사용 요청을 할 때(이런 웹 객체들(24)을 포함하는 어플리케이션(22)을 적용할 때) 브라우저(16)에서 이용될 수 있고, 컴퓨터(52)가 오프라인 상태인 경우에도 마찬가지이다.
이런 두 번째 측면의 두 번째 예로서, 이들 기술들의 실시예들의 구조는 여기 언급된 기능들을 구현하는 컴퓨터(54) 내의 다른 프로세스들의 행동들을 설명할 수 있다. 예를 들어, 브라우저 캐시 동기화 요소(46)를 브라우저(16) 밖에서 실행되는 프로세스로 구현하는 것이 유리할 수 있지만, 이런 독립성은 이들 두 프로세스들 간의 경쟁적 간섭(competitive interference)을 초래할 수도 있다. 첫 번째 예로, 브라우저 캐시 동기화 요소(46)는 브라우저(16)에 의해 사용 중인 데이터 객체(24)의 교체를 시도할 수 있고, 이는 데이터 위반 에러(data violation error)를 발생시킬 수 있다. 두 번째 예로서, 브라우저 캐시 동기화 요소(46)와 브라우저(16)는 각각 데이터 객체(24)를 업데이트할 수 있고, 만약 객체 동기화 구조(object synchronization construct)가 미사용중이라면, 경쟁 조건(race condition)이 발생할 수 있고, 이에 따라 데이터 손실과 잠재적 논리 문제들이 발생할 수 있다. 이런 문제점들을 회피하고 이들 기술의 구현을 개선하기 위해서, 브라우저 캐시 모니터 요소(44) 및/또는 브라우저 캐시 동기화 요소(46)는 다른 프로세스들의 행동들을 존중할 수 있다. 첫 번째 예시로, 브라우저 캐시 동기화 요소(46)는 데이터 객체(24)를 원격 저장부(56)에 동기화하기 전에 데이터 객체(24)에 접근 잠금(access lock)을 요청할 수 있고 데이터 객체(24)의 동기화 완료한 후에 잠금을 해제할 수 있다. 그 대신에 또는 추가적으로, 브라우저 캐시 모니터 요소(44)는 브라우저(16)가 사용 중인 브라우저 캐시 동기화 요소(46)에 의한 데이터 객체(24)의 업데이트가 감지된 후, 업데이트 된 데이터 객체(24)의 사용가능성을 브라우저(16)에게 통지하도록 설정될 수 있고, 브라우저는 브라우저(16)의 작업 중 편리한 순간(예를 들면 데이터 객체(24)가 이용 중이 아닐 때)에 업데이트 된 데이터 객체(24)를 재적재할 수 있다.
두 번째 측면의 세 번째 예시로, 브라우저 캐시 동기화 요소(46)에 의해 수행되는 동기화는 원격 저장부(56)가 있는 컴퓨터 환경(18)의 더 넓은 동기화 내에 포함될 수 있다. 첫 번째 구현에서, 두 컴퓨터들은 브라우저 캐시(20) 내에 저장된 데이터 객체들(24)과 컴퓨터 환경(18) 내이지만 브라우저 캐시(20) 밖에 저장된 데이터 객체들(24)(예를 들면 컴퓨터(52)에 파일시스템 내에 저장된 파일들, 운용 시스템에 저장된 사용자 프로파일들, 그리고 데이터베이스에 저장된 기록들) 모두를 공유할 수 있다. 동기화 과정은 많은 데이터 객체 시스템들에 저장되고 접속되는 크고 다양한 데이터 객체들(24)의 집합을 동기화하도록 고안될 수 있고, 이런 예에 하나의 동기화 과정 내에 브라우저 캐시(20) 내에 저장된 데이터 객체들(24)이 포함된다. 이것은 이런 데이터 객체들(24)이 어떻게 저장되는지와 무관하게 사용자에게 모든 데이터 객체들(24)에 적용되는 하나의 동기화 지침을 명시하는 것을 허용한다는 점과, 복수의 동기화 요소들이 독립적(때로는 모순되게)으로 다른 데이터 객체들의 집합들을 동기화하는 대신에 하나의 요소가 이런 데이터 객체들(24)의 동기화를 수행하는 것을 허용한다는 점에서 유용할 수 있다.
하나의 실시예에서, 컴퓨터 환경(18)은 배포 가능한(deployable) 컴퓨터 시스템과 컴퓨터 환경 호스트를 구성하는 원격 컴퓨터(54)를 나타낼 수 있다. 현대적 컴퓨터 환경을 구성하는 객체들의 복잡한 다양성과 분산성을 감소시키기 위해서, 컴퓨터 환경의 배포 가능한 형태가 고안될 수 있고, 여기서 컴퓨터 환경을 구성하는 객체들은 계층적 데이터 객체(data object hierarchy)로 조직될 수 있고, 계층적 데이터 객체는 컴퓨터 환경 호스트(computing environment host)에 의해 호스트 될 수 있다. 이 컴퓨터 환경 호스트는 사용자(12)의 컴퓨터 환경(18)을 구성하는 컴퓨터들 전부의 집합을 저장하도록 설정될 수 있고, 이들 컴퓨터들 사이에 컴퓨터 환경(18)의 동기화를 조절하도록 설정될 수 있고, 컴퓨터 환경(18)의 우선적 표현(authoritative)을 저장하도록 설정될 수 있고(예를 들면 특정 데이터 객체들(24)의 표현들이 버전 충돌 문제 해결에 있어서 우선순위를 가지는 경우); 및/또는 컴퓨터 환경(18) 또는 그 일부를 새롭게 추가된 컴퓨터 등의 특정 컴퓨터(52)에 배포하는 것은 관리하도록 운용될 수 있다.(이 시나리오의 원격 저장부(56)는 컴퓨터 환경 호스트(82)의 브라우저 캐시와 반드시 대응되어야 하는 것은 아니고, 이 시나리오의 브라우저 캐시는 브라우저를 포함하는 대신에 배포 가능한 컴퓨터 환경(84)을 저장하도록 할당된 컴퓨터 환경 호스트(82)의 파일시스템의 일부를 나타내는 파일 서버로 구성될 수도 있다.) 데이터 객체 계층은 동일한 컴퓨터 환경을 나타내는 다양한 장치들에게 전달될 수 있고, 각각의 장치는 컴퓨터 환경을 일정한 방식 그러나 장치의 능력에 따라 맞춤식으로 렌더링 할 수 있다(예를 들어 워크스테이션에 연결된 키보드 장치로부터 데이터 입력을 수신하는 하드 키보드 인터페이스(hard keyboard interface), 그리고 휴대전화 장치로부터 데이터 입력을 수신하는 터치스크린 소프트웨어 키보드 인터페이스.). 따라서 배포 가능한 컴퓨터 환경의 사용자는 배포 가능한 컴퓨터 환경과 플랫폼/장치 독립적 방식으로 상호 작용할 수 있고, 이것은 또한 다른 접속 기술들에 비해 동시 또는 비동시 호출(invoking), 표준 작업의 배칭(batching), 그리고 모바일 에이전트들 등의 이점이 있을 수 있다. 더 나아가, 만약 컴퓨터 환경(18)을 구성하는 데이터 객체들(24)이 배포 가능한 컴퓨터 환경 내에서 균일한 형식으로 표현되고 일관성 있는 방식으로 관리된다면(데이터 객체(24)를 접속하는 특정 데이터 객체 시스템과 무관하게), 컴퓨터 환경의 모든 데이터 객체들에게 적용되는 서비스들의 집합이 고안될 수 있다. 그러나 본 기술의 당업자는 여기 언급된 기술들이 적용되는 많은 시나리오를 고안할 수 있다.
도 5는 그 같은 시나리오(80)를 도시하며, 이 시나리오에서 컴퓨터 환경은 컴퓨터 환경 호스트(82)에 의해 호스트 될 수 있고, 컴퓨터 환경 호스트는 배포 가능한 컴퓨터 환경(84)을 저장하고 관리할 수 있다. 컴퓨터 환경 호스트(82)는 배포 가능한 컴퓨터 환경(84)을 휴대전화 장치(86), 노트북 컴퓨터(90), 그리고 공용 워크스테이션(94) 등의 다양한 장치들을 위하여 그리고 또한 다양한 접속 특권들을 가지는 다양한 종류의 사용자들을 위하여 다양한 방식들로 렌더링할 수 있다. 따라서 컴퓨터 환경의 렌더링은 동일한 어플리케이션, 사용자 프로파일들, 쉘 설정(shell configuration), 사용자 데이터 객체들 등의 보이는 모든 장치들 사이에 일관성 있는 컴퓨터 환경을 보여준다. 따라서 사용자는 고성능 노트북 컴퓨터를 통해서는 컴퓨터 환경의 완전한 성능 버전(full-featured version)(92)을 접속할 수 있고, 저전원 휴대전화 장치(86)에서는 컴퓨터 환경의 낮은 버전(stripped-down version)(88)을 접속할 수 있고, 공용 터미널(public terminal)(94)의 웹브라우저(86)을 통해서는 컴퓨터 환경의 브라우저 호환되고 사생활이 보호되는(privacy-oriented) 버전을 접속할 수 있다. 각각의 장치가 컴퓨터 환경의 렌더링을 지원할 수 있는 능력들의 범위까지, 일관성 있는 사용자 인터페이스와 데이터 집합은 각각의 장치의 능력에 따라 조정된 배포 가능한 컴퓨터 환경의 렌더링에 의해 표시될 수 있다. 컴퓨터 환경의 업데이트들은 컴퓨터 환경 호스트(82)로 되돌아 전파될 수 있고, 다른 장치들과 자동으로 동기화될 수 있다. 또한 다양한 장치들은 다른 장치들과 국지적으로 저장된 데이터를 공유하고, 다른 장치들을 관리하거나 다른 장치들에 의해 관리됨으로 인하여 서로 협력할 수 있다. 이런 이유로, 컴퓨터 환경은 클라우드 컴퓨터 구조(cloud computing architecture)로 표현되고 고안될 수 있으며, 클라우드 컴퓨터 구조는 장치-독립적 표현(device-independent representation)("클라우드")로 구성되고, 장치-독립적 표현은 동일한 컴퓨터 환경에 협력하는 포털(portals)의 집단을 형성하는 모든 장치들 사이에서 일관성 있는 렌더링으로 나타난다. 컴퓨터 환경의 어플리케이션에 관해서 상세하게 보면, 배포 가능한 컴퓨터 환경(84)는 어플리케이션 집합의 표현(a representation of the application set), 어플리케이션 리소스들, 그리고 그것 때문에 형성된 데이터 객체들을 포함할 수 있다. 더 나아가, 컴퓨터 환경 호스트(82)는 데이터 객체 계층(32)을 구성하는 다양한 객체들과, 적용되는 데이터 객체들의 성질과 무관하게 서비스들의 어플리케이션과 일관성 있는 사용 가능성을 가능하게 하는 배포 가능한 컴퓨터 환경(84) 내에 저장된 데이터 객체들의 일반적 포맷에게 서비스들을 적용할 수 있다.
두 번째 측면과 관련하여, 만약 컴퓨터(52)가 컴퓨터 환경 호스트(82)에 의해 관리되는 배포 가능한 컴퓨터 환경(84)을 나타내는 컴퓨터 환경(18)을 특징으로 삼을 경우, 여기서 서술된 기술들은 특정 장점들을 가지고 구현될 수 있을 것이다. 첫 번째 예로, 만약 컴퓨터 환경 호스트(82)가 원격 컴퓨터(54)로 운용될 경우, 브라우저 캐시(20)를 컴퓨터 환경(18)의 일부로 보여줄 수 있다는 장점이 있을 수 있다. 더 나아가, 만약 원격 저장부(56)가 컴퓨터 환경 호스트(82)에 의해 관리되는 배포 가능한 컴퓨터 환경(84)으로 구성될 경우에는, 브라우저 캐시(20)를 포함하는 컴퓨터 환경(18) 전부의 동기화가 함께 수행될 수 있다. 예를 들면, 컴퓨터 환경 요소는 브라우저 캐시 내에 저장된 데이터 객체들(24)과 파일 시스템 내의 파일들, 시스템 레지스트리(system registry) 내에 저장된 설정 정보들, 그리고 운용 시스템에 저장된 사용자 프로파일과 같은 다른 데이터 객체 시스템 내에서 접속가능하고 저장된 데이터 객체(24)를 포함하는 컴퓨터 환경 호스트(82)와 컴퓨터(52)의 데이터 객체들(24)의 큰 집단 사이의 동기화를 관리하도록 고안될 수 있다. 동기화는 브라우저 캐시(20)의 콘텐츠는 물론 나머지 컴퓨터 환경(18), 그리고 고안 가능한 다른 서비스들(예를 들면 인증 서비스와 압축 서비스 등)에서 균등하게 수행될 수 있고, 모든 데이터 객체들(24)한테 균등하게 적용될 수 있다. 모든 객체들(24)의 동기화를 하나의 동기화 과정 및/또는 하나의 요소로 수행하는 것이 바람직하고, 예를 들면 컴퓨터 환경 요소가 컴퓨터 환경 호스트(82)를 배포 가능한 컴퓨터 환경(84)의 모든 데이터 객체들(24)과 동기화할 수 있다. 더 나아가, 컴퓨터 환경 호스트(82)는 컴퓨터 환경을 공유하는 다른 컴퓨터들에게 전송하는 일을 처리할 수 있고, 이런 각각의 컴퓨터(54)는 주로 컴퓨터 환경 호스트(82) 사이에서 정보 전달을 하지만 다른 컴퓨터들(54)로부터 최근에 업데이트 되거나 새로 형성된 데이터 객체들(24)도 수신하는 경우와 같이 컴퓨터 환경을 공유하는 다른 컴퓨터들에게도 그런 데이터 객체들의 전달을 처리할 수 있다.
두 번째 측면의 네 번째 예시로서, 브라우저 캐시 모니터 요소(44) 및/또는 브라우저 캐시 동기화 요소(46)는 동기화 프로그램 인터페이스(synchronization programmatic interface)를 특징으로 할 수 있고, 동기화 프로그램 인터페이스는 브라우저(16) 내에서 실행되는 어플리케이션(22)이 브라우저 캐시(20) 내의 데이터 객체들(24)의 동기화와 상호 작용하는 것을 허용할 수 있다. 첫 번째 예시에서, 동기화 프로그램 인터페이스는 어플리케이션(22)이 데이터 객체(24)의 마지막 동기화 날짜와 데이터 객체(24)의 소스와 같은 동기화의 상세한 정보들을 식별하는 것을 허용할 수 있다. 하나의 실시예에서, 동기화 프로그램 인터페이스는 동기화의 적어도 하나의 동기화 지침의 적어도 하나의 성질을 가지도록 설정된 작업을 포함하는 적어도 하나의 동기화 지침과, 적어도 하나의 동기화 지침의 적어도 하나의 성질을 작업이 가지도록 설정되는 적어도 하나의 동기화 지침으로 구성될 수 있다. 예를 들어, 어플리케이션은 컴퓨터 백신 업데이트처럼 고정된 스케줄에 따라 특정 어플리케이션 리소스를 업데이트 하는 어플리케이션 호스트에 의해 공급될 수 있다. 따라서 어플리케이션 호스트는 브라우저 캐시 동기화 요소(46)가 동기화 프로그램 인터페이스를 통해서 어플리케이션 리소스를 구성하는 데이터 객체(24)를 미리 정해진 시간에 업데이트를 지시하도록 설정할 수 있다. 어플리케이션(22)은 동기화 프로그램 인터페이스를 이용하여 데이터 객체(24)의 마지막 동기화 날짜와 시간을 인식할 수 있고, 및/또는 데이터 객체(24)의 동기화를 어플리케이션 호스트에 의해 신뢰 가능한 소스로 제한할 수 있다.(예를 들면 바이러스 정의 데이터베이스는 직업 안티바이러스 회사로부터의 검색만 가능하다.) 그 대신에 또는 추가적으로, 브라우저 캐시 동기화 요소(46)는, 브라우저 캐시 동기화 요소(46)를 작동하여 브라우저 캐시(20)(또는 그 일부)와 원격 저장부(54)를 동기화하도록 설정된 동기화 프로그램 인터페이스를 나타낼 수 있다. 예를 들어, 어플리케이션(22)은 동기화 프로그램 인터페이스의 작업을 통해서 브라우저 캐시 동기화 요소(46)에 의해 특정 데이터 객체(24)의 동기화가 작동되는 것을 허용할 수 있다.(예를 들면 컴퓨터 백신 사용자가 바이러스 정의 데이터베이스의 즉각적인 업데이트를 요구하는 경우)
추가적으로, 동기화 프로그램 인터페이스는 잘 알려지고 확립된 방식으로 구현될 수 있고, 이는 어플리케이션이 인터페이스들을 편리하게 활용하고 커다란 디자인 변경 없이 활용할 수 있도록 해준다. 예를 들면, 웹브라우저(16) 내에서 실행되는 어플리케이션(22)을 지원하도록 디자인된 웹브라우저 플러그인(plug-in)은, 자바스크립트에 기초한 동기화 프로그램 인터페이스를 나타낼 수 있고, 그 예로 브라우저 캐시(20)에서 다양한 데이터 객체들(24)을 읽고 쓰도록 자바스크립트 상에서 가동되는 작업들의 집합이 있다. 그 대신에 또는 추가적으로, 동기화 프로그램 인터페이스는 자바와 C# 을 포함하는 객체 지향적 언어와 같은 고차원 언어를 지원할 수도 있고, 동기화 서비스의 스케줄, 로컬 캐시의 지침들과 선도(freshness), 그리고 컴퓨터 환경을 구성하는 컴퓨터들의 관계들(예를 들면 어떤 컴퓨터가 특정 데이터 객체의 우월한 표현의 호스트에 해당하는지 여부)과 같은 컴퓨터 환경의 더 복잡한 세부 사항들을 보여줄 수 있고; 및/또는 더 강력한 프로그램 접속을 허용하는 더 복잡한 프로그램 구조들(예를 들면 어플리케이션들에게 특정 데이터 객체의 동기화와 같은 컴퓨터 환경 이벤트들을 알려주는 이벤트 구독과 데이터 피드(data feeds))을 포함할 수 있다. 이런 방식에서, 프로그램 인터페이스는 컴퓨터 환경의 다양한 측면을 정교한 방식으로 보여줄 수 있고, 또한 개발자 입장에서도 다른 프로그래밍 기술들을 대폭 다시 디자인하거나 다시 고쳐서 쓸 필요 없이 다른 프로그래밍 기술들을 활용할 수 있어서, 쉽게 받아들여질 수 있는 익숙한 프로그램 모델들을 고수할 수 있다. 본 기술의 당업자는 여기서 서술된 기술들을 구현하는 다양한 구조들과 부분들을 고안할 수 있다.
본 기술의 실시예들 사이에서 달라질 수 있는 세 번째 측면은 다양한 구현들에 포함될 수 있는 데이터-객체-고유 사양들(data-object-specific features)과 관련된다. 첫 번째 예로, 어플리케이션(22)이 브라우저 캐시(20) 안에 저장되기를 요청하는 데이터 객체(24)는 하나 또는 그 이상의 비정상적인 성질들을 가질 수 있고, 구체적로는 크기가 큰 데이터 객체 또는 너무 많은 관련 데이터 객체들이 그 예이다. 어떤 브라우저 캐시(20)는 그런 캐싱(caching)을 수용할 수 없을 수 있다. 예를 들어 특정 데이터 객체들에 크기 제한을 부과할 수 있고, 특정 데이터 객체(24)는 브라우저 캐시(20)에 저장되기에는 너무 클 수도 있다.(예를 들어 커다란 데이터베이스가 어플리케이션(22)의 오프라인 접속을 위해서 제공될 수 있다.) 대신에, 브라우저(16)는 파일시스템 내의 파일의 경우와 같이 브라우저 캐시(20)의 밖이지만 컴퓨터 환경(18) 내에 있는 그런 데이터 객체(24)를 저장하도록 설정될 수 있고, 브라우저 캐시(20) 밖에 저장된 데이터 객체(24)에 관해서 브라우저 캐시(20) 안에 저장하도록 설정될 수 있다. 더 나아가, 브라우저 캐시 모니터 요소(44)는 브라우저 캐시(20) 안에 저장된 데이터 객체들(24) 및 브라우저 캐시(20) 밖에 저장된 데이터 객체들(24)의 업데이트를 모니터하도록 설정될 수 있고; 및/또는 브라우저 캐시 동기화 요소(46)은 브라우저 캐시(20) 밖에 저장된 데이터 객체들(24)과 브라우저 캐시(20) 내에 저장된 데이터 객체들을 함께 동기화하도록 설정될 수 있다.
세 번째 측면의 두 번째 예시로, 브라우저 캐시(20)에 저장된 데이터 객체(24)는 브라우저(16) 내에서 실행하도록 설정된 어플리케이션(22)의 어플리케이션 리소스로 구성될 수 있다. 브라우저 캐시 모니터 요소(44) 및/또는 브라우저 캐시 동기화 요소(46)은 그런 데이터 객체들(24)을 특정 방식으로 처리하도록 설정될 수 있다. 첫 번째 시나리오에서는, 데이터 객체(24)가 어플리케이션 인스톨러 패키지(application installer package)로 구성될 수 있고, 어플리케이션 인스톨러 패키지는 브라우저(16) 내에 어플리케이션(22)을 설치하는데 적용될 수 있다. 따라서 브라우저 캐시 동기화 요소(46)는 원격 컴퓨터(54)로부터 데이터 객체(24)를 수신하고 나서, 어플리케이션 인스톨러 패키지가 어플리케이션(22)을 설치하도록 적용되게 설정될 수 있다. 두 번째 예에세, 데이터 객체(24)와 결부된 어플리케이션(22)은 어플리케이션 호스트와 결부될 수 있고, 연결된 콘텍스트(connected context) 또는 불 연결된 콘텍스트(disconnected context)와 같은 어플리케이션 호스트 연결 콘텍스트(application host connection context) 내에서 실행하도록 설정될 수 있다. 하나의 시나리오에서, 데이터 객체(24)는 오프라인 어플리케이션 리소스와, 그리고 어플리케이션(22)가 불 연결된 콘텍스트에서 실행될 경우에 오프라인 어플리케이션 리소스를 사용하도록 설정된 어플리케이션(22)으로 구성될 수 있다. 본 발명의 당업자는 여기 서술된 기술을 구현하면서 특정 종류의 데이터 객체들(24)에 대하여 브라우저 캐시 모니터 요소(44) 및/또는 브라우저 캐시 동기화 요소(46)을 설정하는 여러 기술들을 고안할 수 있다.
서술 내용이 구조적 특정들 및/또는 방법적인 행동들에 관련되어 설명되었지만, 첨부되는 청구항들은 상술한 구체적 특징들 또는 행동들에 제한되지 않는다. 오히려, 상술된 구체적 특징들과 행동들은 청구항 구현의 예시에 해당한다.
본 명세서에서 사용된 용어들 "요소", "모듈", "시스템", "인터페이스" 등은 컴퓨터 관련 엔티티, 하드웨어, 하드웨어와 소프트웨어의 결합, 소프트웨어, 또는 실행중인 소프트웨어 등 을 일컫도록 의도된 것이다. 예를 들어, 요소는 존재, 프로세서에서 실행 중인 프로세스, 프로세서, 객체, 실행 가능한 것, 실행의 스레드(thread), 프로그램, 및/또는 컴퓨터 등 일수 있지만 여기에 한정되지는 않는다. 도해를 통해서 볼 때, 제어부에서 실행 중인 어플리케이션과 제어부는 모두 요소에 해당할 수 있다. 하나 또는 그 이상의 요소들이 프로세스 및/또는 실행의 스레드 내에 위치할 수 있고 요소는 하나의 컴퓨터에 국부적으로 있을 수도 있고 및/또는 복수의 컴퓨터들 사이에 분배될 수도 있다.
더 나아가, 본 기술은 방법, 장치, 통상의 프로그램을 사용한 제조물 및/또는 컴퓨터를 제어하여 서술된 기술 내용을 구현하는 공학적 기술로 만들어진 소프트웨어, 펌웨어, 하드웨어, 또는 그들의 조합으로 구현될 수 있다. 여기서 사용된 용어 "제조물(article of manufacture)은 어떠한 컴퓨터 판독 가능 장치, 매개체, 또는 매체로부터 접속이 가능한 컴퓨터 프로그램을 아우른다. 물론, 본 기술의 당업자들은 본 기술의 본질 또는 범위를 벗어나지 않고 다양한 변경 안들을 인식할 수 있다.
도 6과 후술하는 내용은 여기서 제시된 하나 또는 그 이상의 설정들(provisions)의 실시예들을 구현하는 적합한 컴퓨터 환경의 간략하고 일반적인 설명을 제공한다. 도 6의 운영 환경은 적합한 운영 환경의 하나의 실시예일 뿐, 운영 환경의 기능성과 이용 범위에 있어서 한정 요소라 작용하지 않는다. 예시적 컴퓨터 장치들은 개인 컴퓨터들, 서버 컴퓨터들, 소형 또는 랩톱 장치들, 휴대용 장치들(휴대전화, PDA, 미디어 재생기 등), 다중프로세서 시스템들, 가전제품들, 미니컴퓨터들, 메인프레임 컴퓨터들(mainframe computers), 상기 시스템들 또는 장치들 중 어떤 것도 포함할 수 있는 분산된 컴퓨터 환경들을 포함하나 이에 한정되지 않는다.
반드시 요구되는 것은 아니지만, 실시예에서 서술된 "컴퓨터 판독 가능 명령들(computer readable instructions)"의 일반적 내용은 하나 또는 그 이상의 컴퓨터 장치들에 의해 실행되는 것을 의미한다. 컴퓨터 판독 가능 명령들은 컴퓨터 판독가능 매체를 통해서 분산될 수 있다. 컴퓨터 판독 가능 명령들은 함수(functions), 객체 어플리케이션 프로그램 인터페이스(APIs), 데이터 구조 등 특정 업무를 수행하거나 특정 압축 데어터 형식들을 구현하는 프로그램 모듈들로 구현될 수 있다. 일반적으로 컴퓨터 판독 가능 명령들의 기능성은 다양한 환경들에 바람직하게 병합되거나 분산될 수 있다.
도 6은 여기서 제공된 하나 또는 그 이상의 실시예를 구현하도록 설정된 컴퓨터 장치(102)로 구성되는 시스템(100)의 예를 도시한다. 하나의 설정에서, 컴퓨터 장치(102)는 적어도 하나의 프로세싱 유닛(106)과 메모리(108)를 포함한다. 컴퓨터 장치의 정확한 설정과 종류에 따라서, 메모리(108)은 휘발성(예를 들면 RAM), 비휘발성(예를 들면 ROM, 플래시 메모리) 또는 그 둘의 조합을 수 있다. 이 설정은 도(6)의 일점쇄선(104)으로 도시된다.
다른 실시예에서, 장치(102)는 추가적인 특성들 및/또는 기능들을 포함할 수 있다. 예를 들면, 장치(102)는 추가적 저장부(이동식 또는 고정식)를 포함할 수 있고, 추가적 저장부는 자기 저장부, 광학 저장부 등을 포함할 수 있으나 이들에 한정되지는 않는다. 하나의 실시예에서, 여기서 제공된 하나 또는 그 이상의 실시예들을 구현하는 컴퓨터 판독 가능 명령들은 저장부(110)에 저장될 수 있다. 저장부(110)는 또한 운용 시스템, 어플리케이션 프로그램 등을 구현하는 다른 컴퓨터 판독 가능 명령들도 저장할 수 있다. 예를 들어 컴퓨터 판독 가능 명령들은 프로세서 유닛(106)에 의해 실행되기 위해서 메모리(108)에서 로딩(loading)될 수 있다.
여기서 사용된 용어 "컴퓨터 판독 가능 매체"는 컴퓨터 저장 매체를 포함한다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령들 또는 다른 데이터와 같은 정보를 저장하는 어떤 방법 또는 기술이 구현된 휘발성과 비휘발성, 이동식과 고정식 매체를 포함할 수 있다. 메모리(108)과 저장부(110)은 컴퓨터 저장 매체의 예들이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVDs 또는 다른 광학 저장부, 자기 카세트, 자기 테이프, 자기 디스크 저장부 또는 다른 자기 저장 장치들, 또는 원하는 정보를 저장하는데 사용될 수 있고 장치(102)에 의해 접속될 수 있는 어떤 다른 매체들도 포함할 수 있으나 이에 한정되지는 않는다. 이런 컴퓨터 저장 매체는 장치(102)의 일부일 수도 있다.
장치(102)는 또한 통신 연결부(들)(116)를 포함할 수 있고, 통신 연결부(들)(116)는 장치(102)가 다른 장치들과 통신을 할 수 있게 한다. 통신 연결부(들)는 모뎀, 네트워크 인터페이스 카드(NIC), 집적 인터페이스(integrated network interface), 라디오 주파수 송수신기, 적외선 포트, USB 연결부, 또는 컴퓨터 장치(102)를 다른 컴퓨터 장치와 연결하는 다른 인터페이스들을 포함할 수 있으나 이들에 한정되지는 않는다. 통신 연결부(들)(116)는 유선 또는 무선 연결부를 포함할 수 있다. 통신 연결부(116)는 통신 매체를 송신 및/또는 수신할 수 있다.
용어 "컴퓨터 판독 가능 매체"는 통신 매체를 포함할 수 있다. 통신 매체는 일반적으로 컴퓨터 판독 가능 명령들 또는 다른 데이터를 반송파(carrier wave) 또는 다른 이동 메커니즘과 같은 "변조 데이터 신호(modulated data signal)"에 구현하고, 어떤 정보 전달 매체도 포함할 수 있다. 용어 "변조 데이터 신호"는 신호 내의 정보를 인코딩(encode)함에 관하여 그런 방식으로 변경되거나 하나 또는 그 이상의 특징들의 집합을 가지는 신호를 포함할 수 있다.
장치(102)는 키보드, 마우스, 펜, 목소리 입력 장치, 터치 입력 장치, 적외선 카메라들, 영상 입력 장치들, 및/또는 어떤 다른 입력 장치들과 같은 입력 장치(들)(114)를 포함할 수 있다. 하나 또는 그 이상의 디스플레이들, 스피커들, 프린터들, 및/또는 어떤 다른 출력 장치와 같은 출력 장치(들)(112) 또한 장치(102) 안에 포함될 수 있다. 입력 장치(들)(114)와 출력 장치(들)(112)는 유선 연결, 무선 연결, 그들 간의 어떤 결합 등을 통해서 장치(102)와 연결될 수 있다. 하나의 실시예에서, 다른 컴퓨터 장치의 입력 장치 또는 출력 장치가 컴퓨터 장치(102)의 입력 장치(들)(114) 또는 출력 장치(들)(112)로 사용될 수 있다.
컴퓨터 장치(102)의 요소들은 버스(bus)와 같은 다양한 인터커넥트들(interconnects)에 의해 연결될 수 있다. 이런 인터커넥트들은 PCI 익스프레스(PCI Express)와 같은 PCI(Peripheral Component Interconnect), USB(Universal Serial Bus), 파이어와이어(IEEE 1394), 선택적 버스 구조 등을 포함할 수 있다. 또 다른 실시예에서, 컴퓨터 장치(102)의 요소들은 네트워크에 의해 상호 연결될 수 있다. 예를 들면, 메모리(108)은 네트워크에 의해 상호 연결된 다양한 물리적 장소들에 위치하는 복수의 물리적 메모리 유닛들로 구성될 수 있다.
본 기술의 당업자들은 컴퓨터 판독 가능 명령들을 저장하도록 활용되는 저장 장치들이 네트워크 전체에 분산될 수 있음을 인지할 것이다. 예를 들면, 네트워크(118)을 통해서 접속 가능한 컴퓨터 장치(120)은 컴퓨터 판독 가능 명령들을 여기 제공된 하나 또는 그 이상의 실시예들을 구현하기 위해서 저장할 수 있다. 컴퓨터 장치(102)는 컴퓨터 장치(120)를 접속할 수 있고 실행을 위해서 컴퓨터 판독 가능 명령들 일부 또는 전부를 다운로드할 수 있다. 그 대신에 컴퓨터 장치(102)는 필요한 만큼의 컴퓨터 판독 가능 명령들 일부나 컴퓨터 장치(102)에서 실행될 수 있는 일부의 명령들과 컴퓨터 장치(120)에서 실행될 수 있는 일부의 명령을 다운로드할 수 있다.
여기에는 실시예들의 다양한 운용이 제공된다. 하나의 실시예에서, 하나 또는 그이상의 서술된 운용들은 하나 또는 그 이상의 컴퓨터 판독 가능 매체에 저장된 컴퓨터 판독 가능한 명령들을 구성할 수 있고, 이들 명령들이 만약 컴퓨터 장치에 의해 실행될 경우에 컴퓨터 장치로 하여금 서술된 운용들을 수행하도록 할 것이다. 여기에서 일부 또는 전부의 작업이 서술된 순서는 반드시 순서 의존적은 아니다. 본 기술의 당업자들은 다른 순서들을 인식할 것이다. 더 나아가, 작업들 전부가 반드시 각각의 실시예에 존재해야하는 것은 아니다.
더 나아가, 단어 "예시적"은 예시 또는 도해의 의미로 사용되었다. 여기서 예시적으로 서술된 측면이나 디자인이 다른 요소들 또는 다른 디자인들보다 반드시 유리하다고 해석되지는 않는다. 오히려, 예시적이라는 단어는 개념들을 좀 더 명확하게 보여준다.
본 발명이 속한 분야의 당업자라면 상술된 설명 및 첨부된 도면 내에 제시된 개시 내용의 이점을 가지면서 본 명세서에 제시된 본 발명의 여러 수정 및 다른 실시예를 생각해 낼 수 있을 것이다. 그러므로 본 발명은 개시되어 있는 특정한 실시예로 한정되지 않고, 수정 및 다른 실시예는 첨부된 청구항의 범주에 속하도록 의도되었다는 것을 이해할 것이다. 더욱이 상술된 설명 및 연관된 도면은 구성 요소 및/또는 기능의 특정한 예시적인 조합과 관련하여 예시적인 실시예를 설명하였으나, 첨부된 청구항의 범주를 벗어나지 않으면서 다른 실시예에 의해 구성 요소 및/또는 기능의 상이한 조합이 제공될 수 있다는 것을 이해할 것이다. 이러한 점에서 예를 들면, 위에 명확히 설명되어 있는 것과는 상이한 구성 요소 및/또는 기능의 조합은 또한 첨부된 청구항 중 몇몇 청구항 내에 제시된 것으로 간주된다. 본 명세서에서는 특정 용어가 사용되었으나, 이들은 오로지 일반적이고 설명적인 의미로 사용된 것에 불과하고 제한을 목적으로 사용된 것이 아니다.
10: 예시적 시나리오 12: 사용자
14: 워크스테이션 16: 브라우저
18: 컴퓨터 환경 20: 브라우저 캐시
22: 어플리케이션 24: 데이터 객체
26: 문서 28: 노트북
30: 휴대전화장치 32: 문서들의 집합
40: 예시적 시나리오 42: 예시적 시스템
44: 브라우저 캐시 모니터 요소
46: 브라우저 캐시 동기화 요소
50: 예시적 시나리오 52: 컴퓨터
54: 원격 컴퓨터 56: 원격 저장부
58: 예시적 시스템 60: 프로세서
70: 예시적 구현 72: 컴퓨터 판독 가능 매체
74: 컴퓨터 판독 가능 데이터 76: 프로세서-실행 가능 명령들
78: 예시적 시스템 80: 예시적 시나리오
82: 컴퓨터 환경 호스트 84: 배포 가능한 컴퓨터 환경
86: 휴대전화장치 88: 컴퓨터 환경의 낮은 버전
90: 노트북 컴퓨터 92: 컴퓨터 환경의 완전한 성능 버전
94: 공용 워크스테이션 96: 웹브라우저
98: 문서 100: 시스템
102: 컴퓨터 장치 104: 일점쇄선
106: 프로세싱 유닛 108: 메모리
110: 저장부 112: 출력장치
114: 입력장치 116: 통신 연결부
118: 네트워크 120: 컴퓨터 장치

Claims (15)

  1. 컴퓨터(52)의 브라우저(16)의 브라우저 캐시(20)를 원격 컴퓨터(54)의 원격 저장부(56)와 동기화하도록 설정된 시스템(42)에 있어서,
    상기 시스템이,
    상기 브라우저 캐시(20) 내에 적어도 하나의 데어터 객체(24)의 쓰기를 감지하도록 설정된 브라우저 캐시 모니터 요소(44)와,
    상기 브라우저 캐시 모니터 요소가 상기 쓰기를 감지한 이후, 상기 브라우저 캐시와 상기 원격 저장부를 동기화하도록 설정된 브라우저 캐시 동기화 요소(46)를 포함하는
    컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템.
  2. 제 1 항에 있어서,
    상기 브라우저 캐시 동기화 요소는 상기 원격 컴퓨터로부터 상기 브라우저 캐시를 상기 원격 저장부와 동기화하라는 통지를 받은 이후, 상기 브라우저 캐시를 상기 원격 저장부와 동기화하도록 설정되는
    컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템.
  3. 제 1 항에 있어서,
    상기 브라우저 캐시 동기화 요소는 적어도 하나의 동기화 지침에 따라 상기 브라우저 캐시와 상기 원격 저장부가 동기화하도록 설정되는
    컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템.
  4. 제 3 항에 있어서,
    적어도 하나의 동기화 지침이 선택되는 동기화 지침들의 집합이,
    동기화 촉발 지침;
    동기화 형식 지침;
    데이터 객체 비교 지침;
    데이터 객체 형식 병합 지침; 그리고
    데이터 객체 충돌 해결 지침으로 구성되는
    컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템.
  5. 제 3 항에 있어서,
    적어도 하나의 동기화 지침이 상기 원격 컴퓨터에 의해 규정되는
    컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템.
  6. 제 1 항에 있어서,
    상기 브라우저 캐시가 상기 컴퓨터의 컴퓨터 환경에 포함되고,
    상기 적어도 하나의 데이터 객체가 상기 컴퓨터의 상기 컴퓨터 환경에 저장되는
    컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템.
  7. 제 6 항에 있어서,
    상기 컴퓨터 환경이 배포 가능한 컴퓨터 환경으로 구성되고,
    상기 원격 컴퓨터가 상기 컴퓨터 환경을 관리하도록 설정된 컴퓨터 환경 호스트로 구성되고,
    상기 브라우저 캐시 동기화 요소가 상기 컴퓨터 환경과 상기 컴퓨터 환경 호스트를 동기화하도록 설정된 컴퓨터 환경 요소로 구성되는
    컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템.
  8. 제 1 항에 있어서,
    상기 브래우저 캐시 동기화 요소가
    상기 브라우저 캐시 내에 저장된 데이터 객체를 동기화 함에 있어서,
    상기 데이터 객체를 동기화하기 전에 상기 컴퓨터로부터 상기 데이터 객체의 접근 금지를 요청하고,
    상기 데이터 객체의 동기화가 완료된 후에 상기 데이터 객체의 접근 금지를 해제해도록 설정되는
    컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템.
  9. 제 1 항에 있어서,
    상기 브라우저 캐시 동기화 요소가 동기화 프로그램 인터페이스로 구성되고, 상기 동기화 프로그램 인터페이스가,
    적어도 하나의 동기화 지침의 적어도 하나의 성질을 나타내도록 설정된 작업을 포함하는 적어도 하나의 동기화 지침과,
    적어도 하나의 동기화 지침의 적어도 하나의 성질에 맞추도록 설정된 작업을 세팅하는 적어도 하나의 동기화 지침으로 구성되는
    컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템.
  10. 제 9 항에 있어서,
    상기 동기화 프로그램 인터페이스가,
    상기 브라우저 캐시 동기화 요소가 상기 브라우저 캐시와 상기 원격 저장부의 동기화를 호출하도록 설정된 동기화 호출 작업으로 구성되는
    컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템.
  11. 제 1 항에 있어서,
    상기 브라우저 캐시에 저장되 적어도 하나의 객체가,
    상기 브라우저 내에서 실행되도록 설정된 어플리케이션과 결부된 어플리케이션 리소스로 구성되는
    컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템.
  12. 제 11 항에 있어서,
    상기 데이터 객체가 어플리케이션 인스톨러 팩키지로 구성되고,
    상기 브라우저 캐시 동기화 요소가 상기 데이터 객체를 상기 원격 컴퓨터로부터 수신한 후에, 상기 어플리케이션 팩키지가 상기 어플리케이션을 설치하도록 호출하도록 설정되는
    컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템.
  13. 제 12 항에 있어서,
    상기 어플리케이션이 어플리케이션 호스트와 결부되고, 상기 어플리케이션이 미연결 상태와 연결 상태를 포함하는 어플리케이션 호스트 연결 상태의 집합 중 선택된 어플리케이션 호스트 연결 상태에서 실행되도록 설정되는
    컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템.
  14. 제 13 항에 있어서,
    상기 데이터 객체가 오프라인 어플리케이션 리소스로 구성되고,
    상기 어플리케이션이 상기 어플리케이션이 단절된 상태에서 실행되는 경우에 상기 오프라인 어플리케이션 리소스를 사용하도록 설정되는
    컴퓨터의 브라우저의 브라우저 캐시를 원격 컴퓨터의 원격 저장부와 동기화하도록 설정된 시스템.
  15. 배포 가능한 컴퓨터 환경(84)을 가지는 컴퓨터(52)의 브라우저(16)의 브라우저 캐시(20)와 상기 컴퓨터 환경(84)을 관리하도록 설정된 컴퓨터 환경 호스트(82)로 구성되는 원격 컴퓨터(54)의 원격 저장부(56)를 동기화하도록 설정된 시스템(42)에 있어서,
    상기 시스템은,
    상기 컴퓨터(52)의 상기 브라우저(16) 안에서 실행되도록 설정되고, 상기 브라우저 캐시(20) 내의 적어도 하나의 제거된 데이터 객체(24)의 제거를 포함하는 상기 브라우저 캐시(20) 내의 적어도 하나의 데이터 객체(24)의 기재를 감지하도록 설정된 브라우저 캐시 모니터 요소와,
    상기 컴퓨터(52)에서 상기 브라우저(16) 밖의 프로세스로서 실행되도록 설정되는 브라우저 캐시 동기화 요소로 구성되며,
    상기 브라우저 캐시 동기화 요소는,
    상기 브라우저 캐시 모니터 요소(44)가 상기 기재를 감지한 후에 적어도 하나의 동기화 지침에 부합되는 상기 브라우저 캐시(20) 내의 데이터 객체들(24)을 동기화하도록 설정되고,
    상기 원격 컴퓨터(54)로부터 상기 브라우저 캐시(20)를 상기 원격 저장부(56)와 동기화하라는 통지를 수신한 후에 상기 원격 컴퓨터에 의해 규정된 동기화 지침 중 적어도 하나에 따라서 적어도 하나의 동기화 데이터 객체 기준에 부합되는 상기 브라우저 캐시(20) 내의 데이터 객체들(24)을 상기 원격 저장부(56)와 동기화시키고,
    적어도 하나의 동기화 지침의 적어도 하나의 성질을 나타내도록 설정된 적어도 하나의 동기화 지침 표시 작업과, 적어도 하나의 동기화 지침의 적어도 하나의 성질에 맞추도록 설정된 적어도 하나의 동기화 지침 세팅 작업, 그리고 상기 브라우저 캐시(20)와 상기 원격 저장부(56)를 동기화시키는 상기 브라우저 캐시 동기화 요소를 호출하도록 설정된 동기화 호출 작업으로 구성되는 동기화 프로그램 인터페이스를 어플리케이션들(22)에게 접하게 하도록 설정되는
    시스템.
KR1020117020852A 2009-03-11 2010-02-19 장치와 웹 서비스 간에 브라우저 캐시를 동기화하는 프로그래밍 모델 KR101644666B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/402,366 US8812451B2 (en) 2009-03-11 2009-03-11 Programming model for synchronizing browser caches across devices and web services
US12/402,366 2009-03-11

Publications (2)

Publication Number Publication Date
KR20110128846A true KR20110128846A (ko) 2011-11-30
KR101644666B1 KR101644666B1 (ko) 2016-08-01

Family

ID=42729006

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117020852A KR101644666B1 (ko) 2009-03-11 2010-02-19 장치와 웹 서비스 간에 브라우저 캐시를 동기화하는 프로그래밍 모델

Country Status (9)

Country Link
US (2) US8812451B2 (ko)
EP (1) EP2406725A2 (ko)
JP (1) JP2012520504A (ko)
KR (1) KR101644666B1 (ko)
CN (1) CN102349062B (ko)
BR (1) BRPI1008362A2 (ko)
RU (1) RU2011137392A (ko)
TW (1) TW201033832A (ko)
WO (1) WO2010104659A2 (ko)

Families Citing this family (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10419541B2 (en) 2008-11-26 2019-09-17 Free Stream Media Corp. Remotely control devices over a network without authentication or registration
US10334324B2 (en) 2008-11-26 2019-06-25 Free Stream Media Corp. Relevant advertisement generation based on a user operating a client device communicatively coupled with a networked media device
US9961388B2 (en) 2008-11-26 2018-05-01 David Harrison Exposure of public internet protocol addresses in an advertising exchange server to improve relevancy of advertisements
US9519772B2 (en) 2008-11-26 2016-12-13 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US10880340B2 (en) 2008-11-26 2020-12-29 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US10977693B2 (en) 2008-11-26 2021-04-13 Free Stream Media Corp. Association of content identifier of audio-visual data with additional data through capture infrastructure
US10567823B2 (en) 2008-11-26 2020-02-18 Free Stream Media Corp. Relevant advertisement generation based on a user operating a client device communicatively coupled with a networked media device
US9386356B2 (en) 2008-11-26 2016-07-05 Free Stream Media Corp. Targeting with television audience data across multiple screens
US9986279B2 (en) 2008-11-26 2018-05-29 Free Stream Media Corp. Discovery, access control, and communication with networked services
US9026668B2 (en) 2012-05-26 2015-05-05 Free Stream Media Corp. Real-time and retargeted advertising on multiple screens of a user watching television
US10631068B2 (en) 2008-11-26 2020-04-21 Free Stream Media Corp. Content exposure attribution based on renderings of related content across multiple devices
US8180891B1 (en) 2008-11-26 2012-05-15 Free Stream Media Corp. Discovery, access control, and communication with networked services from within a security sandbox
US9154942B2 (en) 2008-11-26 2015-10-06 Free Stream Media Corp. Zero configuration communication between a browser and a networked media device
US8812451B2 (en) 2009-03-11 2014-08-19 Microsoft Corporation Programming model for synchronizing browser caches across devices and web services
US9762701B1 (en) * 2009-04-10 2017-09-12 Open Invention Network Llc System and method for cached streaming application isolation
US9577893B1 (en) * 2009-04-10 2017-02-21 Open Invention Network Llc System and method for cached streaming application isolation
JP4792100B2 (ja) * 2009-06-29 2011-10-12 株式会社東芝 ファイル共有システム
US8458239B2 (en) * 2009-12-16 2013-06-04 International Business Machines Corporation Directory traversal in a scalable multi-node file system cache for a remote cluster file system
US9158788B2 (en) 2009-12-16 2015-10-13 International Business Machines Corporation Scalable caching of remote file data in a cluster file system
US8473582B2 (en) * 2009-12-16 2013-06-25 International Business Machines Corporation Disconnected file operations in a scalable multi-node file system cache for a remote cluster file system
US8495250B2 (en) 2009-12-16 2013-07-23 International Business Machines Corporation Asynchronous file operations in a scalable multi-node file system cache for a remote cluster file system
US9111006B2 (en) * 2010-03-16 2015-08-18 Salesforce.Com, Inc. System, method and computer program product for communicating data between a database and a cache
US8386423B2 (en) * 2010-05-28 2013-02-26 Microsoft Corporation Scalable policy-based database synchronization of scopes
US8555155B2 (en) * 2010-06-04 2013-10-08 Apple Inc. Reader mode presentation of web content
US8935666B2 (en) * 2010-06-30 2015-01-13 Gordon G. MILLER, III Systems and methods for dynamic mobile applications
US20150195340A1 (en) * 2010-09-30 2015-07-09 Google Inc. Determining if an Application is Cached
US8635271B1 (en) 2010-10-01 2014-01-21 Google Inc. Method and system for maintaining client cache coherency in a distributed network system
US9165285B2 (en) 2010-12-08 2015-10-20 Microsoft Technology Licensing, Llc Shared attachments
US20120174212A1 (en) * 2010-12-29 2012-07-05 Microsoft Corporation Connected account provider for multiple personal computers
TWI468951B (zh) * 2011-01-06 2015-01-11 Tencent Tech Shenzhen Co Ltd A method and device for implementing subscription information from a web page
US9740587B2 (en) 2011-01-28 2017-08-22 Hewlett-Packard Development Company, L.P. Distributing power usage data for low-level components of a computing device to subscribing programs
US10552799B2 (en) 2011-04-28 2020-02-04 Microsoft Technology Licensing, Llc Upload of attachment and insertion of link into electronic messages
US9137185B2 (en) 2011-04-28 2015-09-15 Microsoft Technology Licensing, Llc Uploading attachment to shared location and replacing with a link
US11308449B2 (en) 2011-04-28 2022-04-19 Microsoft Technology Licensing, Llc Storing metadata inside file to reference shared version of file
US8682989B2 (en) 2011-04-28 2014-03-25 Microsoft Corporation Making document changes by replying to electronic messages
US10185932B2 (en) 2011-05-06 2019-01-22 Microsoft Technology Licensing, Llc Setting permissions for links forwarded in electronic messages
US8977947B2 (en) 2011-06-03 2015-03-10 Apple Inc. Method for presenting documents using a reading list panel
US8850516B1 (en) 2011-06-22 2014-09-30 Emc Corporation Virtual private cloud that provides enterprise grade functionality and compliance
US9417759B1 (en) * 2011-06-27 2016-08-16 Google Inc. Synchronizing data across multiple browser tabs or windows
KR20130028375A (ko) * 2011-09-09 2013-03-19 주식회사 팬택 Html5 기반의 웹브라우저 작업 환경 동기화 모바일 장치 및 그 방법
US9152732B2 (en) * 2011-11-02 2015-10-06 Microsoft Technology Licensing, Llc. Browser cache assist for accessing web-based content
US8225191B1 (en) * 2011-11-07 2012-07-17 Google Inc. Synchronizing web browsers
US9661073B2 (en) * 2011-11-18 2017-05-23 Google Inc. Web browser synchronization with multiple simultaneous profiles
CN102523285B (zh) * 2011-12-15 2014-04-02 杭州电子科技大学 一种基于对象分布式文件系统的存储缓存方法
KR101672349B1 (ko) * 2011-12-27 2016-11-07 한국전자통신연구원 파일 클라우드 서비스 장치 및 방법
US20140108091A1 (en) * 2012-04-19 2014-04-17 FullCircle CRM Method and System for Attributing Metrics in a CRM System
US9122766B2 (en) * 2012-09-06 2015-09-01 Microsoft Technology Licensing, Llc Replacement time based caching for providing server-hosted content
US9338508B2 (en) 2012-10-23 2016-05-10 Google Technology Holdings LLC Preserving a consumption context for a user session
US9781192B2 (en) 2013-01-25 2017-10-03 Qualcomm Incorporated Device management service
JP5709913B2 (ja) * 2013-02-13 2015-04-30 三菱電機株式会社 時空管理装置及び時空管理プログラム
KR102015108B1 (ko) 2013-03-12 2019-10-22 한국전자통신연구원 이종 서비스 간 서비스 제공 방법과 사용자 단말 및 웹 서버
US20150058834A1 (en) * 2013-03-15 2015-02-26 Innopath Software, Inc. Distributing software for updating of client devices
US9535681B2 (en) 2013-03-15 2017-01-03 Qualcomm Incorporated Validating availability of firmware updates for client devices
US20140359488A1 (en) * 2013-05-29 2014-12-04 Microsoft Corporation Centralized Management of Link Data for Multiple Applications, Computers and Resources, through Operating Systems and Networked Storage Services
US9189533B2 (en) * 2013-05-29 2015-11-17 Microsoft Technology Licensing, Llc Sync framework extensibility
US10229181B2 (en) * 2013-07-16 2019-03-12 Pankaj Sharma System and method for synchronizing data between communication devices in a networked environment without a central server
US9503541B2 (en) * 2013-08-21 2016-11-22 International Business Machines Corporation Fast mobile web applications using cloud caching
US20150067089A1 (en) * 2013-09-05 2015-03-05 Hintroapps Limited Metadata driven declarative client-side session management and differential server side data submission
JP6292810B2 (ja) * 2013-10-02 2018-03-14 キヤノン株式会社 データ同期方法、データ同期装置およびプログラム
US9542467B2 (en) 2013-11-18 2017-01-10 International Business Machines Corporation Efficiently firing mapping and transform rules during bidirectional synchronization
US9367597B2 (en) * 2013-11-18 2016-06-14 International Business Machines Corporation Automatically managing mapping and transform rules when synchronizing systems
US10402744B2 (en) 2013-11-18 2019-09-03 International Busniess Machines Corporation Automatically self-learning bidirectional synchronization of a source system and a target system
US9779069B2 (en) 2014-01-31 2017-10-03 Yahoo Holdings, Inc. Model traversing based compressed serialization of user interaction data and communication from a client-side application
US9959255B2 (en) 2014-01-31 2018-05-01 Yahoo Holdings, Inc. Dynamic streaming content provided by server and client-side tracking application
US9680897B2 (en) * 2014-01-31 2017-06-13 Yahoo! Inc. Throttled scanning for optimized compression of network communicated data
US11095743B2 (en) 2014-07-16 2021-08-17 Tensera Networks Ltd. Optimized content-delivery network (CDN) for the wireless last mile
US10432748B2 (en) * 2014-07-16 2019-10-01 Tensera Networks Ltd. Efficient content delivery over wireless networks using guaranteed prefetching at selected times-of-day
RU2608668C2 (ru) * 2014-07-30 2017-01-23 Общество С Ограниченной Ответственностью "Яндекс" Система и способ управления и организации кэша веб-браузера для обеспечения автономного просмотра
US20170286448A1 (en) * 2014-08-27 2017-10-05 Hewlett-Packard Development Company, L.P. Portable storage device
US9792266B1 (en) * 2014-12-08 2017-10-17 Amazon Technologies, Inc. Content synchronization across devices
US10452317B2 (en) * 2014-12-31 2019-10-22 Pure Storage, Inc. DAP redistribution operation within a dispersed storage network
US20180107728A1 (en) * 2014-12-31 2018-04-19 International Business Machines Corporation Using tombstone objects to synchronize deletes
US10656866B2 (en) * 2014-12-31 2020-05-19 Pure Storage, Inc. Unidirectional vault synchronization to support tiering
US10126974B2 (en) * 2014-12-31 2018-11-13 International Business Machines Corporation Redistributing encoded data slices in a dispersed storage network
US20180101434A1 (en) * 2014-12-31 2018-04-12 International Business Machines Corporation Listing types in a distributed storage system
US20180107535A1 (en) * 2014-12-31 2018-04-19 International Business Machines Corporation Vault redundancy reduction within a dispersed storage network
US20180107398A1 (en) * 2014-12-31 2018-04-19 International Business Machines Corporation Vault synchronization within a dispersed storage network
US20160321285A1 (en) * 2015-05-02 2016-11-03 Mohammad Faraz RASHID Method for organizing and distributing data
US9760459B2 (en) * 2015-06-10 2017-09-12 International Business Machines Corporation Synchronization policies among nodes
AU2015255223B2 (en) * 2015-08-26 2021-02-25 Roar Software Pty Ltd System and process for generating an internet application
US11783120B2 (en) * 2015-08-26 2023-10-10 Roar Software Pty Ltd. System and process for generating an internet application
US10929201B2 (en) * 2015-10-22 2021-02-23 Wind River Systems, Inc. Method and system for implementing generation locks
WO2017119869A1 (en) * 2016-01-05 2017-07-13 Entit Software Llc Resource requests
CN107241372A (zh) 2016-03-29 2017-10-10 阿里巴巴集团控股有限公司 配置信息生成、发送方法及资源加载方法和装置及系统
US10469611B2 (en) 2016-05-03 2019-11-05 Microsoft Technology Licensing, Llc Reduced page load time utilizing cache storage
US10394468B2 (en) * 2017-02-23 2019-08-27 International Business Machines Corporation Handling data slice revisions in a dispersed storage network
US10901738B2 (en) 2017-11-14 2021-01-26 International Business Machines Corporation Bulk store and load operations of configuration state registers
US10496437B2 (en) 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US10761983B2 (en) * 2017-11-14 2020-09-01 International Business Machines Corporation Memory based configuration state registers
US10635602B2 (en) 2017-11-14 2020-04-28 International Business Machines Corporation Address translation prior to receiving a storage reference using the address to be translated
US10558366B2 (en) 2017-11-14 2020-02-11 International Business Machines Corporation Automatic pinning of units of memory
US10761751B2 (en) 2017-11-14 2020-09-01 International Business Machines Corporation Configuration state registers grouped based on functional affinity
US10698686B2 (en) 2017-11-14 2020-06-30 International Business Machines Corporation Configurable architectural placement control
US10642757B2 (en) 2017-11-14 2020-05-05 International Business Machines Corporation Single call to perform pin and unpin operations
US10664181B2 (en) 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
US11922187B2 (en) 2018-03-05 2024-03-05 Tensera Networks Ltd. Robust application preloading with accurate user experience
US11915012B2 (en) 2018-03-05 2024-02-27 Tensera Networks Ltd. Application preloading in the presence of user actions
CN111314396B (zh) * 2018-12-11 2022-11-25 杭州海康威视数字技术股份有限公司 数据处理方法及装置
EP4004767A4 (en) 2019-07-30 2023-03-08 Tensera Networks Ltd. PRE-RENDERING APPLICATION USER INTERFACES INTO USER DEVICES
US11544344B2 (en) * 2019-11-06 2023-01-03 Citrix Systems, Inc. Remote web browsing service
US11593026B2 (en) 2020-03-06 2023-02-28 International Business Machines Corporation Zone storage optimization using predictive protocol patterns
CN116670646A (zh) 2020-12-03 2023-08-29 腾赛拉网络有限公司 预加载具有现有任务的应用
CN112528187B (zh) * 2020-12-18 2024-04-30 上海中通吉网络技术有限公司 浏览器数据缓存处理方法、装置和系统
US11860771B1 (en) * 2022-09-26 2024-01-02 Browserstack Limited Multisession mode in remote device infrastructure

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6725262B1 (en) * 2000-04-27 2004-04-20 Microsoft Corporation Methods and systems for synchronizing multiple computing devices
WO2007083299A2 (en) * 2006-01-17 2007-07-26 Kidaro (Israel) Ltd. Seamless integration of multiple computing environments

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7080051B1 (en) 1993-11-04 2006-07-18 Crawford Christopher M Internet download systems and methods providing software to internet computer users for local execution
US6594682B2 (en) * 1997-10-28 2003-07-15 Microsoft Corporation Client-side system for scheduling delivery of web content and locally managing the web content
US6505300B2 (en) 1998-06-12 2003-01-07 Microsoft Corporation Method and system for secure running of untrusted content
US6151599A (en) * 1998-07-17 2000-11-21 International Business Machines Corporation Web client scripting test architecture for web server-based authentication
US6233606B1 (en) * 1998-12-01 2001-05-15 Microsoft Corporation Automatic cache synchronization
US6615253B1 (en) 1999-08-31 2003-09-02 Accenture Llp Efficient server side data retrieval for execution of client side applications
US6546554B1 (en) 2000-01-21 2003-04-08 Sun Microsystems, Inc. Browser-independent and automatic apparatus and method for receiving, installing and launching applications from a browser on a client computer
US7219304B1 (en) * 2000-06-19 2007-05-15 International Business Machines Corporation System and method for developing and administering web applications and services from a workflow, enterprise, and mail-enabled web application server and platform
US20020103822A1 (en) 2001-02-01 2002-08-01 Isaac Miller Method and system for customizing an object for downloading via the internet
US20070220000A1 (en) * 2001-05-09 2007-09-20 Walsh Aaron E Universal Cache
US7263712B2 (en) * 2001-05-29 2007-08-28 Intel Corporation Enabling a PC-DTV receiver to share the resource cache with multiple clients
US7275243B2 (en) 2002-03-22 2007-09-25 Sun Microsystems, Inc. Mobile download system
US20030217142A1 (en) 2002-05-15 2003-11-20 Microsoft Corporation Method and system for supporting the communication of presence information regarding one or more telephony devices
US8255548B2 (en) * 2002-06-13 2012-08-28 Salesforce.Com, Inc. Offline web services API to mirror online web services API
US6941310B2 (en) 2002-07-17 2005-09-06 Oracle International Corp. System and method for caching data for a mobile application
US7606314B2 (en) * 2002-08-29 2009-10-20 Raritan America, Inc. Method and apparatus for caching, compressing and transmitting video signals
GB0321674D0 (en) * 2003-09-16 2003-10-15 Cognima Ltd Catching content on phones
US7694328B2 (en) 2003-10-21 2010-04-06 Google Inc. Systems and methods for secure client applications
US7272782B2 (en) * 2003-12-19 2007-09-18 Backweb Technologies, Inc. System and method for providing offline web application, page, and form access in a networked environment
US20050240558A1 (en) 2004-04-13 2005-10-27 Reynaldo Gil Virtual server operating on one or more client devices
US20060053368A1 (en) * 2004-05-20 2006-03-09 Bea Systems, Inc. Conduit manager for occasionally-connected application server
US7383405B2 (en) 2004-06-30 2008-06-03 Microsoft Corporation Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
CA2486103A1 (en) 2004-10-26 2006-04-26 Platespin Ltd. System and method for autonomic optimization of physical and virtual resource use in a data center
US8082541B2 (en) 2004-12-09 2011-12-20 Advantest Corporation Method and system for performing installation and configuration management of tester instrument modules
US7664788B2 (en) * 2005-01-10 2010-02-16 Microsoft Corporation Method and system for synchronizing cached files
CA2513016A1 (en) * 2005-07-22 2007-01-22 Research In Motion Limited A secure method of synchronizing cache contents of a mobile browser with a proxy server
US20070033155A1 (en) 2005-08-02 2007-02-08 Landsman Richard A Client/server web application architectures for offline usage, data structures, and related methods
US8601475B2 (en) 2005-08-02 2013-12-03 Aol Inc. Download and upload of email messages using control commands in a client/server web application
US7594003B2 (en) 2005-08-02 2009-09-22 Aol Llc Client/server web application architectures for offline usage, data structures, and related methods
US8429630B2 (en) 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
CN1956449B (zh) 2005-10-28 2011-05-18 北京书生国际信息技术有限公司 数据资源防复制加密传输方法及设备系统
JP4514718B2 (ja) 2006-01-20 2010-07-28 株式会社豊田中央研究所 膜電極接合体及び固体高分子型燃料電池
JP2007208458A (ja) * 2006-01-31 2007-08-16 Fujifilm Corp 通信システム、通信端末および通信方法
US20080072053A1 (en) * 2006-09-15 2008-03-20 Halim Budi S Web-based authentication system and method
US20080098093A1 (en) * 2006-10-16 2008-04-24 Palm, Inc. Offline automated proxy cache for web applications
US7814234B2 (en) * 2006-10-30 2010-10-12 Microsoft Corporation Offline execution of web based applications
US8166515B2 (en) 2006-10-30 2012-04-24 Microsoft Corporation Group policy for unique class identifier devices
US20080147671A1 (en) 2006-12-18 2008-06-19 Lampdesk Corporation System for Running Web Applications Offline and Providing Access to Native Services
US20080148298A1 (en) 2006-12-18 2008-06-19 Palm, Inc. System and Methods for Providing Granular Security for Locally Running Scripted Environments and Web Applications
US7870596B2 (en) 2007-02-01 2011-01-11 Microsoft Corporation Accessing network resources outside a security boundary
US20080189767A1 (en) 2007-02-01 2008-08-07 Microsoft Corporation Accessing file resources outside a security boundary
US8452853B2 (en) * 2007-03-05 2013-05-28 International Business Machines Corporation Browser with offline web-application architecture
US8702501B2 (en) 2007-04-05 2014-04-22 Igt Formation and use of formal partnerships for play games
US8171109B2 (en) * 2007-05-30 2012-05-01 Red Hat, Inc. Mobile bookmarks
US8458612B2 (en) 2007-07-29 2013-06-04 Hewlett-Packard Development Company, L.P. Application management framework for web applications
US8725679B2 (en) * 2008-04-07 2014-05-13 International Business Machines Corporation Client side caching of synchronized data
CN101309291B (zh) 2008-05-30 2011-04-20 中兴通讯股份有限公司 终端数据维护的工具和方法
US8627328B2 (en) 2008-11-14 2014-01-07 Oracle International Corporation Operation control for deploying and managing software service in a virtual environment
US8812451B2 (en) * 2009-03-11 2014-08-19 Microsoft Corporation Programming model for synchronizing browser caches across devices and web services
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US8464319B2 (en) 2010-01-08 2013-06-11 Microsoft Corporation Resource access based on multiple scope levels
US20130219383A1 (en) * 2012-02-16 2013-08-22 Israel Hilerio Using an Application Cache to Update Resources of Installed Applications
EP3012739A1 (en) * 2014-10-20 2016-04-27 TISOFT Wojciech Jedrzejewski System for synchronizing web browsers

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6725262B1 (en) * 2000-04-27 2004-04-20 Microsoft Corporation Methods and systems for synchronizing multiple computing devices
WO2007083299A2 (en) * 2006-01-17 2007-07-26 Kidaro (Israel) Ltd. Seamless integration of multiple computing environments

Also Published As

Publication number Publication date
EP2406725A2 (en) 2012-01-18
BRPI1008362A2 (pt) 2018-03-06
KR101644666B1 (ko) 2016-08-01
US10242023B2 (en) 2019-03-26
US8812451B2 (en) 2014-08-19
RU2011137392A (ru) 2013-03-20
TW201033832A (en) 2010-09-16
US20100235321A1 (en) 2010-09-16
CN102349062B (zh) 2013-10-30
WO2010104659A2 (en) 2010-09-16
CN102349062A (zh) 2012-02-08
JP2012520504A (ja) 2012-09-06
WO2010104659A3 (en) 2010-12-09
US20150046519A1 (en) 2015-02-12

Similar Documents

Publication Publication Date Title
KR101644666B1 (ko) 장치와 웹 서비스 간에 브라우저 캐시를 동기화하는 프로그래밍 모델
US11698885B2 (en) System and method for content synchronization
US11740891B2 (en) Providing access to a hybrid application offline
JP2016529599A (ja) コンテンツクリップボードの同期
US8965862B2 (en) Directory oplock
CN103514298A (zh) 一种实现文件锁的方法及元数据服务器
JP5428455B2 (ja) 仮想マシンサーバ、仮想マシン制御方法及び仮想マシン制御プログラム
US20170091253A1 (en) Interrupted synchronization detection and recovery
US10917468B2 (en) Systems and methods of re-associating content items
JP2009301472A (ja) 情報端末、アプリケーション管理システム、端末アプリケーション管理方法及びアプリケーション管理方法

Legal Events

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