KR101657578B1 - 웹 브라우저들에서 병렬 레이아웃에 대한 독립적인 태스크들을 식별하기 위한 머신 학습 방법 - Google Patents

웹 브라우저들에서 병렬 레이아웃에 대한 독립적인 태스크들을 식별하기 위한 머신 학습 방법 Download PDF

Info

Publication number
KR101657578B1
KR101657578B1 KR1020137027188A KR20137027188A KR101657578B1 KR 101657578 B1 KR101657578 B1 KR 101657578B1 KR 1020137027188 A KR1020137027188 A KR 1020137027188A KR 20137027188 A KR20137027188 A KR 20137027188A KR 101657578 B1 KR101657578 B1 KR 101657578B1
Authority
KR
South Korea
Prior art keywords
web page
tree
element information
sub
independence
Prior art date
Application number
KR1020137027188A
Other languages
English (en)
Other versions
KR20130143718A (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 KR20130143718A publication Critical patent/KR20130143718A/ko
Application granted granted Critical
Publication of KR101657578B1 publication Critical patent/KR101657578B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/106Display of layout of documents; Previewing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]

Abstract

웹 페이지 렌더링을 가속화하기 위한 방법들 및 디바이스들은 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것, 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것, 및 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 것을 포함한다. 예측된 서브-트리 독립성은 페이지를 렌더링하는데 필요한 시간을 감소시키기 위하여 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하도록 사용될 수 있다. 서브-트리들은 조건부 독립적일 수 있으며, 이 경우에 조건부 독립적인 서브-트리들은 서브-트리들을 독립적인 것으로 렌더링하기 위하여 데이터를 추측하거나 또는 서브-트리를 독립적인 것으로 렌더링하기 위하여 특정 정보를 획득할 태스크를 수행함으로써 독립적인 것으로 만들어질 수 있다.

Description

웹 브라우저들에서 병렬 레이아웃에 대한 독립적인 태스크들을 식별하기 위한 머신 학습 방법{MACHINE LEARNING METHOD TO IDENTIFY INDEPENDENT TASKS FOR PARALLEL LAYOUT IN WEB BROWSERS}
본 출원은 "Machine Learning Method to Identify Independent Tasks for Parallel Layout in Web Browsers"라는 명칭으로 2011년 3월 15일에 출원되었던 미국 가특허 출원번호 제61/452,694호의 우선권을 주장하며, 이에 의해 이 가특허 출원의 전체 내용들은 인용에 의해 통합된다.
이하의 상세한 설명은 일반적으로 컴퓨팅 디바이스 통신들에 관한 것이며, 특히 웹 페이지를 렌더링하기 위한 장치 및 방법들에 관한 것이다.
컴퓨팅 디바이스상에 웹 페이지와 같은 페이지의 렌더링은 페이지의 문서 객체 모델(DOM) 트리를 생성하는 것을 복귀시킨다(in-law). DOM 트리는 개별 DOM 노드의 특성들 및/또는 속성들과 웹페이지의 스타일 속성들을 포함하는 자식-부모 관계(child-parent relationship)들로 하나 이상의 노드들을 정의한다. 페이지가 론치(launch)될때, 페이지의 .html 파일들은 네트워크로부터 판독되거나 또는 로컬 디스크 캐시로부터 파싱되며(parsed), DOM 트리는 구성된다. 그 다음에, 내장형 또는 외장형 캐스케이딩 스타일 시트(CSS: Cascading Style Sheet)들은 DOM 트리의 각각의 노드에 대한 스타일을 계산하기 위하여 적용될 수 있다. 일단 트리가 "스타일링되면(styled)", 레이아웃 알고리즘은 스크린상의 모든 DOM 엘리먼트들의 위치들 및 크기들을 계산하기 위하여 실행된다. 이러한 정보를 사용하여, 브라우저는 페이지를 디스플레이할 수 있다. 이들 동작들은 페이지가 로드될때마다 수행될 수 있으며, 이는 상당량의 시간이 걸리며, 따라서 사용자 경험이 불만족스럽게 된다.
더욱이, 이러한 시간량은 모바일 컴퓨팅 디바이스, 예를들어 모바일 폰, 개인 휴대 단말(PDA) 또는 비-모바일 컴퓨팅 디바이스와 비교할때 상대적으로 제한된 프로세싱 능력, 메모리 및/또는 통신 스루풋을 가진 다른 상대적으로 작은 휴대용 디바이스들과 같은 자원-제약 환경(resource-constrained environment)에서 악화된다. 따라서, 사용자 경험은 모바일 컴퓨팅 디바이스에서 훨씬 더 나빠진다.
하기 설명은 하나 이상의 양상들에 대한 기본적인 이해를 제공하기 위해서 이러한 양상들의 간략화된 요약을 제시한다. 이러한 요약은 모든 고려되는 양상들에 대한 포괄적인 개요가 아니며, 모든 양상들의 중요하거나 또는 핵심적인 엘리먼트들을 식별하거나, 일부 또는 모든 양상들의 범위를 서술하고자 할 의도도 아니다. 그 유일한 목적은 후에 제시되는 상세한 설명에 대한 도입부로서 간략화된 형태로 하나 이상의 양상들의 일부 개념들을 제시하기 위함이다.
일 양상은 웹페이지 렌더링을 가속화하기 위한 방법에 관한 것이며, 본 방법은 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 단계를 포함한다. 본 방법은 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행한다. 본 방법은 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하며 그리고 본 방법은 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하며 웹 페이지를 렌더링한다. 다른 양상에서, 서브-트리들은 조건부 독립적일 수 있다. 이 경우에, 조건부 독립적인 서브-트리들은 서브-트리들을 독립적인 것으로 렌더링할 데이터를 추측함으로써 또는 서브-트리를 독립적인 것으로 렌더링할 특정 정보를 획득하기 위한 태스크를 수행함으로써 독립적인 것으로 만들어질 수 있다.
또 다른 양상에서, (하나 이상의 컴퓨팅 디바이스들 또는 비-일시적 저장 매체상에 저장되는 실행가능 명령들로 구현될 수 있는) 방법은 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 동작, 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 동작, 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 동작, 및 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하는 동작을 포함한다. 일 양상에서, 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하는 동작은 웹 페이지 스크립트의 웹 페이지 엘리먼트 정보에 기초하여 서브-트리가 선험으로 독립적임을 예측하는 동작, 및 DOM 트리의 선험적 독립적인 부분의 외부에 태스크(task)를 형성하는 동작을 포함할 수 있다. 양상의 방법은 특정 정보가 결정되는 경우에 서브-트리가 조건부 독립적임을 웹 페이지 스크립트의 엘리먼트 정보에 기초하여, 예측하는 동작, 특정 정보를 획득할 태스크를 수행하는 동작, 및 획득된 특정 정보를 사용하여 DOM 트리의 조건부 독립적인 부분의 외부에 태스크를 형성하는 동작을 추가로 포함할 수 있다. 일 양상에서, 특정 정보를 획득할 태스크를 수행하는 동작은 특정 정보를 신속하게 계산하는 동작 및/또는 추측에 기초하여 특정 정보를 결정하는 동작을 포함할 수 있다. 양상의 방법은 계장화 브라우저(instrumented browser)를 사용하여 웹 페이지 엘리먼트 정보를 수집하는 단계 및 웹 페이지 엘리먼트 레이아웃 크기, 위치, CSS 스타일 속성들, 서브-트리 크기, HTML 태그, 부모 HTML 태그 및 웹 페이지 특징 정보 중 적어도 하나를 포함하는 웹 페이지 엘리먼트 정보를 수집하는 단계를 추가로 포함할 수 있다. 양상의 방법은 웹 페이지의 DOM 트리의 서브-트리가 독립적이지 않음을 그리고 서브-트리가 동시에 프로세싱될 수 없음을 결정하기 위하여, 예측된 서브-트리 독립성을 사용하는 단계 및 머신 학습 분석을 수행하고 서브-트리 독립성을 예측하여 웹 페이지의 부분들을 동시에 프로세싱하기 위하여 단일 웹 브라우저를 사용하는 단계를 추가로 포함할 수 있다. 양상의 방법은 제 1 프로세서를 사용하는 제 1 컴퓨팅 디바이스에서 머신 학습 분석을 수행하는 단계 및 제 2 프로세서를 사용하는 제 2 상이한 컴퓨팅 디바이스에서 웹 페이지의 부분들을 동시에 프로세싱할 서브-트리 독립성을 예측하는 단계를 추가로 포함할 수 있다. 양상의 방법은 복수의 업데이트된 웹 페이지들을 프로세싱함으로써 분류자를 업데이트하는 단계, 업데이트된 웹 페이지 엘리먼트 정보를 수집하는 단계, 및 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 추가 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 단계를 추가로 포함할 수 있다. 양상의 방법은 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하여 제 1 시간 간격 및 제 2 상이한 시간 간격에서 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 단계를 추가로 포함할 수 있다.
추가 양상에서, 전술한 방법들은 단일 컴퓨팅 디바이스내에서 구현될 수 있으며, 여기서 복수의 웹 페이지들을 프로세싱하는 것 및 웹 페이지 엘리먼트 정보를 수집하는 것은 단일 컴퓨팅 디바이스상에서 동작하는 계장화 브라우저에서 달성되고 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 것은 동일한 컴퓨팅 디바이스내에서 달성된다.
추가 양상들에서, 전술한 방법들은 서버 및 컴퓨팅 디바이스들의 네트워크에서 구현될 수 있으며, 여기서 복수의 웹 페이지들을 프로세싱하며 웹 페이지 엘리먼트 정보를 수집하는 것은 복수의 컴퓨팅 디바이스들에서 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것, 수집된 웹 페이지 정보를 복수의 컴퓨팅 디바이스들 각각으로부터 서버에 전송하는 것, 집합화된 웹 페이지 엘리먼트 정보를 생성하기 위하여, 복수의 컴퓨팅 디바이스들에 의해 전송되는 웹 페이지 정보를 서버에서 수신하여 집합화하는 것, 복수의 컴퓨팅 디바이스들 중 적어도 하나에 집합화된 웹 페이지 엘리먼트 정보를 전송하는 것, 및 전송한 집합화된 웹 페이지 엘리먼트 정보를 복수의 컴퓨팅 디바이스들 중 적어도 하나에서 수신하는 것을 포함한다. 또한, 이러한 양상에서, 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 것은 복수의 컴퓨팅 디바이스들 중 적어도 하나에서, 수신된 집합화된 웹 페이지 엘리먼트 정보에 대하여 달성되며, 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 것은 수신된 집합화된 웹 페이지 엘리먼트 정보에 대하여 수행되는 머신 학습 분석에 기초하여 서브-트리 독립성을 예측하기 위하여 복수의 컴퓨팅 디바이스들 중 적어도 하나에서 동작하는 분류자를 트레이닝하는 것을 포함한다.
추가 양상에서, 전술한 방법들은 서버 및 컴퓨팅 디바이스들의 네트워크에서 구현될 수 있으며, 여기서 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것은 복수의 컴퓨팅 디바이스들에서 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것, 수집된 웹 페이지 정보를 복수의 컴퓨팅 디바이스들 각각으로부터 (예를들어, 인터넷을 통해) 서버에 전송하는 것, 및 집합화된 웹 페이지 엘리먼트 정보를 생성하기 위하여, 복수의 컴퓨팅 디바이스들에 의해 전송되는 웹 페이지 정보를 서버에서 수신하는 것을 포함할 수 있다. 이러한 양상에서, 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 것은 레이아웃 독립성의 패턴들을 식별하기 위하여 복수의 컴퓨팅 디바이스들에 의해 전송되는 수신된 웹 페이지 정보에 대하여 서버에서 달성될 수 있으며, 본 방법은 서버로부터 복수의 컴퓨팅 디바이스들 중 적어도 하나로 (예를들어, 인터넷을 통해) 식별된 레이아웃 독립성의 패턴들을 전송하는 것, 및 복수의 컴퓨팅 디바이스들 중 적어도 하나에서, 식별된 레이아웃 독립성의 패턴들을 수신하는 것을 추가로 포함할 수 있다. 추가로, 이러한 양상에서, 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 것은 수신된 식별된 레이아웃 독립성의 패턴들에 기초하여 서브-트리 독립성을 예측하기 위하여 복수의 컴퓨팅 디바이스들 중 적어도 하나에서 동작하는 분류자를 트레이닝하는 것을 포함할 수 있다.
추가 양상에서, 전술한 방법들은 미리 결정된 브라우저에 특정한 복수의 웹 페이지들을 프로세싱하고 미리 결정된 브라우저에 대하여 렌더링된 웹 페이지들에 특정한 웹 페이지 엘리먼트 정보를 수집하는 단계, 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 단계 ― 여기서 패턴들은 미리 결정된 브라우저에 대하여 렌더링된 웹 페이지들에 대응함 ―, 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 단계, 및 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하는 단계를 추가로 포함할 수 있으며, 웹 페이지는 미리 결정된 브라우저를 사용하여 렌더링된다. 추가 양상에서, 전술한 방법들은 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 분류자에서 서브-트리 독립성을 예측하는 단계를 추가로 포함할 수 있으며, 여기서 분류자는 스케줄링 알고리즘에 서브-트리 독립성 데이터를 제공한다. 추가 양상에서, 전술한 방법들은 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하고 그리고 미리 결정된 스타일 시트 언어 코딩의 프리젠테이션 시맨틱스(presentation semantics)에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 스케줄링 알고리즘을 추가로 포함할 수 있다. 추가 양상에서, 전술한 방법들은 CSS 코딩에서 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 단계를 추가로 포함할 수 있다. 추가 양상에서, 전술한 방법들은 DOM 트리의 제 2 종속적인 서브-트리를 렌더링하기 전에 DOM 트리의 제 1 독립적인 서브-트리를 렌더링하기 위하여, 예측된 서브-트리 독립성을 사용하는 단계를 추가로 포함할 수 있다. 추가 양상에서, 전술한 방법들은 입력으로서 노드 특징을 그리고 출력으로서 레이아웃 독립성을 포함하는 데이터세트상에서 분류자를 트레이닝하는 단계를 추가로 포함할 수 있다. 추가 양상에서, 전술한 방법들은 인터넷으로부터 복수의 웹 페이지들을 연속적으로 프로세싱하며 웹 페이지 엘리먼트 정보를 수집하는 단계, 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 연속적으로 수행하는 단계, 및 식별된 패턴들 및 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 업데이트하는 단계를 추가로 포함할 수 있다.
추가 양상에서, 전술한 방법들은 웹 페이지들의 제 1 세트를 프로세싱하며 웹 페이지들의 제 1 세트와 연관된 웹 페이지 엘리먼트 정보를 수집하는 단계, 패턴들의 제 1 세트를 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 단계, 렌더링될 부분들을 동시에 프로세싱하기 위하여, 웹 페이지들의 제 1 세트의 예측된 서브-트리 독립성과 연관된 패턴들의 제 1 세트를 사용하는 단계, 및 추가적인 웹 페이지 엘리먼트 정보를 수집하고 그리고 연속 방식으로 패턴들의 제 1 세트를 보충할 추가 패턴들을 식별할 머신 분석을 수행함으로써, 동적 방식으로 패턴들의 제 1 세트를 연속적으로 업데이트하는 단계를 추가로 포함할 수 있다. 이러한 양상은 패턴들의 제 2 세트를 식별하기 위하여, 웹 페이지들의 제 2 세트를 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 단계 및 패턴들의 제 1 세트를 업데이트하기 위하여 패턴들의 제 2 세트를 사용하는 단계를 추가로 포함할 수 있다.
추가 양상에서, 전술한 방법들은 HTML 코딩에서 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 단계를 추가로 포함할 수 있으며, 여기서 HTML 코딩은 병렬 프로세싱 능력을 표시하는 DOM 트리의 제 1 서브-트리를 포함하며, HTML 코딩은 또한 제 2 서브-트리의 병렬 프로세싱 능력에 대하여 침묵하는(silent) 제 2 서브-트리를 포함하며, 분류자는 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 웹 페이지 엘리먼트들의 제 2 서브-트리의 서브-트리 독립성을 예측한다.
또 다른 양상은 전술한 방법들을 사용하여 웹 페이지 렌더링을 가속화하기 위한 컴퓨팅 디바이스에 관한 것이다. 컴퓨팅 디바이스는 메모리 및 메모리에 커플링된 프로세서를 포함한다. 프로세서는 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 동작, 및 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 동작을 포함하는 동작들을 수행할 프로세서-실행가능 명령들로 구성될 수 있다. 분류자는 웹 페이지 스크립트의 웹 페이지 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 트레이닝될 수 있다. 예측된 서브-트리 독립성은 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여 사용될 수 있다.
또 다른 양상들은 전술한 방법들의 동작들을 달성하기 위한 수단을 포함하는 컴퓨팅 디바이스에 관한 것이며, 컴퓨팅 디바이스는 복수의 웹 페이지들을 프로세싱하기 위한 수단, 웹 페이지 엘리먼트 정보를 수집하기 위한 수단, 및 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하기 위한 수단을 포함한다. 패턴들은 웹 페이지 엘리먼트 정보에 상관될 수 있다. 컴퓨팅 디바이스는 또한 웹 페이지 스크립트의 웹 페이지 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하기 위한 수단 및 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하기 위한 수단을 가진다.
계속, 또 다른 양상들은 프로세서-실행가능 명령들을 저장한 비-일시적 컴퓨터 판독가능 저장 매체에 관한 것이며, 프로세서-실행가능 명령들은 컴퓨팅 디바이스의 프로세서가 전술한 방법들의 동작들을 수행하도록 구성된다.
여기에 통합되며 본 명세서의 일부를 구성하는 첨부 도면들은 본 발명의 예시적인 양상들을 예시한다. 앞서 제시된 일반적인 설명 및 이하에서 제시된 상세한 설명과 함께, 도면들은 개시된 양상들을 제한하지 않고 본 발명의 특징들을 설명하는 역할을 한다.
도 1a 및 도 1b는 DOM 트리들의 개략적인 예시들이다.
도 2는 일 양상에서 웹페이지들을 수신하여 렌더링하기 위한 통신 시스템의 기능 블록도이다.
도 3은 일 양상에서 사용하기에 적합한 컴퓨팅 디바이스의 기능 블록도이다.
도 4는 페이지를 렌더링하기 위한 일 양상 방법의 프로세스 흐름도이다.
도 5는 동시에 프로세싱될 수 있는 서브-트리들을 결정하는데 유용한 웹 콘텐츠의 패턴들을 인식하기 위하여 웹 콘텐츠를 수신하기 위한 일 양상 방법의 프로세스 흐름도이다.
도 6은 동시에 프로세싱될 수 있는 서브-트리들을 결정하는데 유용한 패턴들을 인식하고 DOM 서브-트리들을 동시에 프로세싱하고 웹 페이지를 렌더링하기 위하여 패턴들을 참조하기 위한 일 방법의 프로세스 흐름도이다.
도 7은 특정 정보가 추론되는 경우에 DOM 트리의 서브-트리가 독립적일 수 있는지의 여부를 결정하기 위한 일 양상 방법의 프로세스 흐름도이다.
도 8은 페이지를 렌더링하기 위한 일 양상 장치의 블록도이다.
도 9는 DOM 트리를 분석하고, DOM 트리의 임의의 서브-트리들이 브라우저의 제 1 실행시에 및/또는 웹 페이지의 제 1 발생시에 동시에 프로세싱될 수 있는지를 결정하기 위하여 머신 학습된 패턴들을 참조하기 위한 일 양상 방법의 프로세스 흐름도이다.
도 10은 DOM 트리를 분석하고, DOM 트리의 임의의 서브-트리들이 독립적이어서 웹 브라우저의 실행들 시에 동시에 프로세싱될 수 있는지를 결정하기 위하여 특정 머신 학습된 패턴들을 참조하기 위한 일 양상 방법의 프로세스 흐름도이다.
도 11은 DOM 트리를 분석하고, DOM 트리의 임의의 서브-트리들이 독립적이어서 동시에 프로세싱될 수 있거나 또는 특정 정보가 공급되거나 또는 계산되거나 또는 추론되는 경우에 프로세싱될 수 있는지를 결정하기 위하여 그리고 머신 트레이닝된 분류자가 주기적으로 업데이트될 수 있는지를 결정하기 위하여 특정 머신 학습된 패턴들을 참조하기 위한 또 다른 양상 방법의 프로세스 흐름도이다.
도 12는 패턴들을 식별하기 위하여 머신 학습 알고리즘을 사용하여 서버에서 웹페이지 프로세싱 데이터를 프로세싱하고 웹 브라우저들을 트레이닝하기 위하여 사용될 수 있는 데이터를 트레이닝하기 위한 일 양상 방법의 프로세스 흐름도이다.
도 13는 다양한 양상들에 사용하기에 적합한 예시적인 수신기 디바이스의 컴포넌트 블록도이다.
도 14는 다양한 양상들에 사용하기에 적합한 예시적인 서버의 컴포넌트 블록도이다.
다양한 양상들은 첨부 도면들을 참조로 하여 상세히 설명될 것이다. 가능할때마다, 동일한 참조 번호들은 동일한 또는 유사한 부분들을 지칭하기 위하여 도면들 전반에 걸쳐 사용될 것이다. 특정 예들 및 구현들에 대하여 이루어진 참조들은 예시적인 목적들을 위한 것이며, 본 발명 또는 청구항들의 범위를 제한하는 것으로 의도되지 않는다.
용어 "예시적인"은 예, 경우, 또는 예시로서 기능하는” 것을 의미하는 것으로 여기에서 사용된다. “예시적인” 것으로서 여기에서 설명되는 임의의 구현이 반드시 다른 구현들에 비해 바람직하거나 유리한 것으로 해석되는 것은 아니다.
여기에서 사용되는 용어 "컴퓨팅 디바이스" 및 "모바일 컴퓨팅 디바이스"는 셀룰라 전화들, 개인 텔레비전 수신기들, 개인 휴대 단말(PDA)들, 팜-탑 컴퓨터들, 노트북 컴퓨터들, 퍼스널 컴퓨터들, 무선 전자 메일 수신기들 및 셀룰라 전화 수신기들(예를들어, Blackberry® 및 Treo® devices), 멀티미디어 인터넷 인에이블 셀룰라 전화들(예를들어, Blackberry Storm®), 및 프로그램가능 프로세서, 메모리 및 디스플레이를 포함하는 유사한 전자 디바이스들 중 어느 하나 또는 모두를 지칭한다.
본 출원에서 사용되는 용어들 "컴포넌트", "모듈", "시스템" 등은 하드웨어, 펌웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어, 또는 실행 소프트웨어와 같은(그러나, 이에 제한되지 않음) 컴퓨터-관련 엔티티를 포함하도록 의도된다. 예를들어, 컴포넌트는 프로세서상에서 실행되는 프로세스, 프로세서, 객체, 실행가능한 것, 실행 스레드, 프로그램 및/또는 컴퓨터일 수 있으나 이들에 제한되지 않는다. 예시로서, 컴퓨팅 디바이스상에서 실행되는 애플리케이션 및 컴퓨팅 디바이스는 컴포넌트일 수 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행 스레드 내에 상주할 수 있고, 일 컴포넌트는 하나의 컴퓨터 상에 로컬화될 수 있고, 그리고/또는 2개 이상의 컴퓨터들 사이에 분배될 수 있다. 또한, 이러한 컴포넌트들은 그 내부에 저장된 다양한 데이터 구조들을 갖는 다양한 컴퓨터 판독가능한 매체로부터 실행될 수 있다. 컴포넌트들은 예를들어 하나 이상의 데이터 패킷들을 갖는 신호(예를들어, 로컬 시스템에서, 분산 시스템에서 및/또는 신호에 의한 다른 시스템들과의 네트워크(예를들어, 인터넷)를 통해 다른 컴포넌트와 상호 작용하는 하나의 컴포넌트로부터의 데이터)에 따라 로컬 및/또는 원격 프로세스들을 통해 통신할 수 있다.
설명된 양상들은 웹 자원들 및 데이터 아이템들을 가진 웹 페이지와 같은 정보의 디스플레이된 페이지를 페칭하고 렌더링하는 것에 관한 것이다. 더욱이, 설명된 양상들은 웹 페이지들 사이에서 전환하는 가상 효과(virtual effect)를 제공하여, 예를들어 사용자가 웹 페이지들 사이에서 앞쪽으로 그리고 뒤쪽으로 이동하게 하는 링크들을 제공한다. 웹 페이지는 DOM 트리로서 여기에서 지칭되는 대응하는 문서 객체 모델(DOM)에 따라 렌더링되며, 이 DOM 트리는 컴포넌트들, 페이지를 정의하는 개별 컴포넌트들의 상대적 구조, 관계들 및 동작을 식별하기 위하여 웹 페이지를 렌더링하는 부분으로서 생성된다. DOM 트리는 HTML, XHTML 및 XML 문서들에서 객체들을 표현하며 이들 객체들과 상호 작용하기 위한 크로스-플랫폼 및 언어-독립 컨벤션(cross-platform and language-independent convention)이다. DOM 트리 1의 예는 도 1a에 예시된다. DOM 트리 구조 1은 노드들 2, 3, 4, 5 및 6과 같은 복수의 노드들에 의해 정의되며, 웹 페이지의 상이한 인스턴스(instance)들을 추가로 나타낸다. 노드들 4 및 5에 의해 정의되는 제 1 서브-트리 및 노드들 4 및 6에 의해 정의되는 제 2 서브-트리가 도시된다.
도 1b는 노드들이 HTML 스크립트에 의해 정의되는, 웹 페이지에서 디스플레이될 상이한 엘리먼트들에 어떻게 대응할 수 있는지를 예시하는 DOM 트리 1의 또 다른 예시를 제공한다. 도 1b는 요청된 웹 페이지에 대한 HTML 코드를 파싱하는 브라우저에 의해 생성되는 DOM 트리 1의 샘플 부분을 예시한다. 도 1b에 예시된 바와같이, HTML 코드를 파싱할때, 브라우저는 웹 페이지를 렌더링하는 프로세스에서 각각 헤딩하기 위한 DOM 엘리먼트 및/또는 노드를 생성할 수 있다. 웹 페이지 엘리먼트 정보는 텍스트 정보, 비-텍스트 정보, 정적 이미지(GIF 이미지들, JPEG 이미지들, PNG, SVG, 플래시), 움직이는 이미지들(움직이는 GIF, SVG, Flash, Shockwave, Java applets), 오디오 데이터(MP3, OGG 등), 비디오 데이터(WMV, RM, FLV, MPG, MOV 데이터), 인터랙티브 텍스트, 버튼들, 인터랙티브 일러스트레이션(interactive illustration)들, 하이퍼링크들, 폼(form)들, 내부 또는 은폐 데이터(코멘트들, 링크된 파일들, 메타데이터), 다이어그램 정보, 스타일 정보, 스크립트들 및 다른 데이터를 포함할 수 있다. 예시된 예에서, HTML 코드는 헤더 섹션(예를들어, <HEAD>...</HEAD>) 및 바디 섹션(예를들어, <BODY>...</BODY>)를 포함한다. 바디 섹션은 DOM 트리 1의 Div 및 Span 노드들에 의해 예시된 바와같은, 적어도 하나의 Div 섹션 및 적어도 하나의 Span 섹션을 포함한다. Div 및 Span 노드들의 각각은 또한 Div 섹션의 파라그래프 섹션에 의해 예시된 바와같은 서브-섹션들을 포함할 수 있다. 페이지를 렌더링하기 위한 계산들을 수행하기 위한 프로세스에서, DOM 트리 엘리먼트들(예를들어, 바디, Div, 파라그래프 등)은 다양한 페이지 컴포넌트들의 특성들 및 특징들을 계산하기 위하여 횡단될 수 있다. 예를들어, 요청된 페이지의 레이아웃을 계산하기 위하여, DOM 트리는 각각의 엘리먼트의 높이들, 폭들 및 위치들(예를들어, h=50, w=50, x=500, y=10)에 대한 절대 값들을 추출하기 위하여 횡단될 수 있으며, 이 절대 값들은 통상적으로 런-타임 및 환경 인자들(예를들어, 윈도우 크기)에 의존하며, 사전에 결정될 수 없다.
DOM 트리는 페이지 콘텐츠들(데이터) 엘리먼트들간의 관계들, 스타일 및 포매팅 정보 및 포지셔닝 정보를 정의하며, 이들은 페이지를 식별하여 구성하기 위한 단순하고 효율적인 메커니즘을 제공한다. 노드들의 서브-트리들은 특정 정보가 서브-트리를 독립적으로 렌더링하는 것으로 추측되거나 계산되거나 또는 추론될 수 있는 경우에 독립적이거나 종속적이거나 또는 조건부 독립적일 수 있다.
웹 브라우저에서, 레이아웃 계산은 HTML 규격, 다른 웹 엘리먼트들과의 웹 엘리먼트의 관계 및 캐스케이딩 스타일 시트(CSS) 규칙들에 기초하여 각각의 페이지 엘리먼트의 위치를 결정할 것이다. 캐스케이딩 스타일 시트(SCC)들은 마크업 언어로 쓰여진 문서의 하나 이상의 프리젠테이션 시맨틱스를 설명하기 위하여 사용되는 스타일 시트 언어이다. CSS는 HTML 및 XHTML로 쓰여진 웹 페이지들을 스타일링(style)하기 위하여 사용될 수 있으며, XML 문서에 적용될 수 있다. 웹 페이지 엘리먼트들의 위치를 결정하기 위한 레이아웃 계산은 일부 현재 추정치들에 기초하여 웹 페이지를 로드하기 위한 시간의 15-20%를 나타낸다. 사용자들은 웹 페이지들에 대한 고속 로드 시간(fast load time)을 선호한다. 웹 페이지를 로드 및 디스플레이하는데 필요한 시간량의 이러한 증분 증가는 사용자들이 이러한 브라우징 경험을 꺼리게 할 수 있다. 이는 사전에 렌더링된 페이지들을 캐싱하기 위한 메모리 및 프로세싱 전력을 제한할 수 있는 모바일 통신 디바이스들을 사용하여 브라우징할때 특히 적용된다.
웹 페이지의 계산 레이아웃은 병행화(parallelization)를 통해 웹 페이지의 부분들을 동시에 프로세싱함으로써 가속화될 수 있다. DOM 트리의 다른 부분들과 독립적 서브-트리들을 동시에 프로세싱함으로써, 전체 DOM 트리는 고속으로 프로세싱될 수 있으며 웹 페이지는 더 빠르게 렌더링된다. 그러나, 이러한 동시 프로세싱을 달성하기 위하여, DOM 트리의 독립적 섹션들은 식별되어야 한다. DOM 트리의 웹 엘리먼트들은 사용중인 프로그래밍 언어의 신택스 내에서 어드레싱 및 조작될 수 있다. DOM 트리의 섹션들은 레이아웃 계산이 동시에 진행될 수 있는 제 1 섹션(DOM 트리의 제 1 서브-트리)내에 그리고 레이아웃 계산이 동시에 진행될 수 없는 다른 섹션들(DOM 트리의 제 2 서브-트리)에 클럼프(clump)될 수 있다. DOM 서브-트리가 독립적인지 또는 종속적인지를 결정하는 것은 동시에 프로세싱될 수 있는 스크립트를 정의하는 페이지의 부분들을 식별할때 중요한 단계이다.
다양한 양상들은 DOM 트리의 이러한 독립적인 서브-트리들을 식별하기 위한 하나 이상의 머신 학습 알고리즘들을 사용한다. 일단 독립적인 서브-트리가 식별되면, 그 독립적인 서브-트리는 웹 페이지의 로딩을 가속화시키기 위하여 동시에 프로세싱될 수 있다. 마찬가지로, 다른 서브-트리들은 종속적일 수 있으며 동시에 프로세싱될 수 없다. 다른 서브-트리들은 다른 인자들에 기초하여 독립적인 것으로 만들어질 수 있다. 동시 프로세싱을 증가시키기 위하여, 양상 방법을 구현하는 프로세서는 추측(speculation)에 의존할 수 있다. 이러한 추측은 일부 서브-트리들의 강하게 접속된 컴포넌트들 간의 종속성들을 사전에 제거할 수 있다. 따라서, 이는 프로세싱 목적들을 위해 서브-트리들을 독립적으로 만들 것이며 따라서 웹 페이지의 로딩을 가속화시키기 위하여 동시 프로세싱을 할 수 있다. 또 다른 양상에서, 서브-트리는 특정한 획득된 정보에 기초하여 서브-트리가 조건부 독립적일 수 있음을 결정하기 위하여 분석될 수 있다.
HTML 프로세싱의 페이지 레이아웃 단계는 각각의 DOM 노드에 대한 CSS 스타일 및 DOM 트리에 기초하여 가시 페이지 엘리먼트(visible page element)들에 위치들 및 치수들을 할당한다. 웹 브라우저는 디스플레이 엘리먼트들의 DOM 트리를 횡단하며 엘리먼트의 자식들의 계산된 크기 및 위치에 기초하여 각각의 엘리먼트를 레이 아웃(lay out)한다. 일부 경우들에서, 웹 엘리먼트의 레이아웃은 또한 형제자매들 및 부모들과 같은 다른 비-자식 엘리먼트들에 의존할 수 있다. 다시 말해서, 주어진 엘리먼트에 대한 레이아웃은 단지 엘리먼트들의 자식들에 대한 레이아웃에 의존한다. 레이아웃이 단지 자식들에 의존하는 경우들에서는 병렬 프로세싱에 대한 기회가 존재한다. 이러한 독립적 엘리먼트의 서브-트리에 대한 레이아웃 루틴은 DOM 트리의 나머지의 레이아웃과 병렬로 실행될 수 있다.
HTML 표준은 웹 엘리먼트들이 독립적 레이아웃을 가지는 특정 경우들을 정의한다. 예를들어, 플로팅 및 절대-위치 웹 엘리먼트들은 독립적인 레이아웃을 가질 수 있으며, 독립적인 방식으로 프로세싱될 수 있다. 그러나, 다른 경우들에서, 독립적인 서브-트리 또는 레이아웃은 DOM 트리 또는 웹 엘리먼트들로부터 명백하지 않을 수 있다. 때때로, 특정 웹 엘리먼트들은 이러한 독립적 레이아웃을 특정하지 않을 것이다.
다양한 양상들은 DOM 트리의 나머지와 병렬로 웹 엘리먼트들을 추측적으로(speculatively) 실행하기 위하여 레이아웃이 독립적일 수 있는 이들 웹 엘리먼트들을 식별한다. 다양한 양상들은 태스크-기반(task-based)일 수 있는 병렬 레이아웃 계산을 포함한다. DOM 트리의 상이한 부분들의 레이아웃은 동시에 계산될 수 있다. DOM 트리의 특정 서브-트리들은 CSS 및 HTML 규격에 기초할때 독립적일 것이다.
동시 프로세싱을 위한 더 독립적인 서브-트리들을 식별하기 위하여, 다양한 양상들은 부모 노드로부터 자식 노드들로의 레이아웃 정보 흐름들에 기초하여 DOM 트리를 분할하고 강하게 접속된 컴포넌트들을 찾기 위하여 머신 학습 알고리즘 또는 알고리즘들을 적용한다. 웹 브라우저들은 레이아웃 단계 이후에 다른 비-자식 노드들로부터 각각의 엘리먼트의 레이아웃 필수 크기 및 위치 정보를 보고하도록 계장화될 수 있다(instrumented). 계장화된 브라우저는 또한 각각의 노드에 대한 다양한 정보("특징들")(예를들어, 노드의 CSS 스타일 속성들, 서브-트리의 크기, HTML 태그, 부모의 HTML 태그 등)을 출력할 수 있다. 이러한 특징 및 레이아웃-독립 데이터는 동시 프로세싱을 위한 독립 서브-트리들을 식별하기 위하여 사용될 수 있는 패턴들을 인식하기 위하여 머신 학습 알고리즘(들)이 적용될 수 있는 기존 웹 페이지들의 큰 바디를 위하여 수집될 수 있다.
웹페이지 데이터의 수집, 및 패턴들을 식별하기 위하여 이러한 데이터에 머신 학습 알고리즘들의 적용은 웹 브라우저들이 그들의 정보를 보고하는 서버와 같은 중앙집중 컴퓨팅 디바이스내에 또는 컴퓨팅 디바이스내에서 달성될 수 있다. 웹페이지 데이터가 캡처되고 국부적으로 프로세싱되는 양상들에서, 머신 학습 알고리즘들의 사용은 컴퓨팅 디바이스로 하여금 사용자에 의해 통상적으로 액세스되는 웹페이지들의 타입들을 더 효율적으로 렌더링하도록 할 수 있다. 따라서, 시간에 따라, 시스템은 사용자의 인터넷 액세스 습관들로부터 패턴들을 학습할 수 있으며, 웹페이지들이 액세스될때 브라우저를 트레이닝하여 웹페이지들의 더 큰 동시 프로세싱을 가능하게 하기 위하여 이 정보를 사용할 수 있다.
웹페이지 데이터가 예를들어 인터넷에 커플링된 서버에서 중심적으로 수집되어 프로세싱되는 양상들에서, 많은 수의 사용자들로부터의 웹페이지 렌더링 데이터는 인터넷의 넓은 스펙트럼에 걸쳐 적용가능한 패턴들의 로드를 인식하기 위하여 분석될 수 있다. 패턴들의 이러한 머신 학습은 개발자들에 의한 현재의 웹페이지 개발 실무들을 반영할 수 있다. 이러한 커뮤니티-기반 패턴 데이터는 단지 특정 사용자에 의해 액세스되는 것만이 아니라 광범위한 다양한 웹페이지들에 적용가능하며 동시 프로세싱될 수 있는 웹페이지 스크립트의 부분들을 인식하도록 웹 브라우저들을 트레이닝하기 위하여 사용될 수 있는 트레이닝 데이터의 개발을 가능하게 할 수 있다.
웹페이지 렌더링 정보에 머신 학습 알고리즘들을 적용함으로써 획득되는 트레이닝 데이터 및 인식된 패턴들을 사용하기 위하여, 브라우저는 이러한 패턴들의 데이터세트상에서 트레이닝될 수 있는 분류자로 구성될 수 있다. 이러한 양상에서, 머신 학습 알고리즘들에 의해 생성되고 트레이닝 가능 분류자에 적용되는 트레이닝 데이터는 입력으로서 노드 특징들을 포함할 수 있으며, 독립적인 서브-트리들, 조건부 독립적일 수 있는 서브-트리들 및 추측적 프로세싱에 대하여 독립적일 가능성이 있는 서브-트리들과 같은 레이아웃 독립 결론들을 출력으로서 제공할 수 있다. 페이지 레이아웃 프로세스 동안, 트레이닝된 식별자는 머신 학습된 패턴들에 액세스할 수 있으며, DOM 트리의 각각의 서브-트리가 독립적으로 레이아웃될 수 있어서 동시에 프로세싱될 수 있는지 간에 또는 서브-트리가 독립적으로 레이아웃될 수 없는 종속적 서브-트리인지 간에 새로운 DOM 트리(즉, 렌더링되는 새로운 페이지)를 예측하기 위하여 이러한 정보를 사용할 수 있다.
일 양상에서, 트레이닝된 분류자는 서브-트리가 선험적으로 독립적이라는 것을 정확하게 예측할 수 있다. 이는 웹 페이지 스크립트에 대한 웹 페이지 엘리먼트 정보에 기초할 수 있다. 일단 서브-트리가 선험적 독립적이라고 결정되면, 알고리즘은 DOM 트리의 독립적 부분의 외부에 태스크를 형성한다.
또 다른 양상에서, 트레이닝된 분류자는 특정 정보가 추론될 수 있는 경우에 서브-트리가 독립적이라는 것을 예측할 수 있으며, 따라서 부모-자식 종속성을 제거할 수 있다. 일단 특정 정보가 추론되면, 서브-트리는 독립적인 서브-트리로서 처리될 것이며 웹 페이지 렌더링 동안 동시에 프로세싱될 수 있다.
또 다른 양상에서, 트레이닝된 분류자는 특정 정보가 계산에 의해 획득될 수 있는 경우에 서브-트리가 독립적이라는 것을 예측할 수 있다. 알고리즘은 종속성을 깨뜨리는 정보를 빠르게 계산하기 위한 태스크를 스케줄링할 수 있다. 일단 태스크가 계산되고 필요한 정보가 획득되면, 서브-트리는 동시에 프로세싱될 수 있으며 웹 페이지는 렌더링된다.
또 다른 양상에서, 트레이닝된 분류자는 특정 정보가 예측될 수 있는 경우에 서브-트리가 독립적이라는 것을 예측할 수 있다. 시스템은 예측된 독립적인 서브-트리를 추측적으로 스케줄링할 수 있으며, 동시 프로세싱을 가능하게 하기 위하여 DOM 서브-트리에 의해 필요한 정보를 예측할 수 있다. 추측적 레이아웃 태스크들은 비-자식 노드들에 대한 종속성들을 모니터링하며, 임의의 발생 및 종속성 정보가 정확하게 예측되지 않으면, 태스크는 정확한 정보와 함께 재시작될 수 있다.
선택적으로, 일부 양상들에서, 머신 학습 알고리즘은 웹 브라우저내 통합될 수 있거나 또는 대안적으로 머신 학습 알고리즘은 웹 브라우저로부터 분리된 프로세싱 모듈내에서 구현될 수 있다. 또 다른 양상에서, 머신 학습 알고리즘은 웹 브라우저에 특정한 페이지들에 대한 종속성들에 대하여 트레이닝될 수 있거나 또는 대안적으로 머신 학습 알고리즘은 인터넷으로부터 액세스되는 웹 페이지들로부터의 종속성들에 대하여 트레이닝될 수 있다. 머신 학습 알고리즘은 종속성들의 패턴들을 관찰할 수 있으며, 동시에 프로세싱될 수 있는 독립적일 수 있는 서브-트리와 연관되거나 또는 이 서브-트리를 표시하는 Dom 트리 패턴 또는 종속성들을 분류할 수 있다. 이러한 양상에서, 머신 학습 알고리즘은 "오프-라인" 또는 "온-라인"으로 구현될 수 있으며 웹 브라우저에 패턴들의 제 1 세트를 제공할 수 있다. 머신 학습 알고리즘은 통합된 브라우저내에서 동작할 수 있거나 또는 주기적으로 업데이트될 수 있는 원격 엔티티로부터 패턴들의 제 1 세트를 제공할 수 있다.
머신 학습 알고리즘에 의해 인식되는 패턴들은 DOM 트리에서 관찰된 패턴들, CSS 속성들 및 레이아웃 속성들을 포함하는 HTML 코드에서의 패턴들의 세트의 형태를 가질 수 있다. 웹페이지 코드에서 인식되는 패턴들이 미래에 관찰될 수 있으며 현재에는 잘 정의되어 있지 않을 수 있는 웹페이지 스타일로부터 유래할 수 있다는 것이 인식되어야 한다. 머신 학습 알고리즘은 패턴들을 수집하고, 이들이 웹 브라우저내의 스케줄링 알고리즘에 제공될 수 있도록 이들을 포맷할 수 있다. 웹 브라우저 내의 이러한 스케줄링 알고리즘은 예측된 독립적인 서브-트리들에 대응하는 웹 페이지의 부분들을 동시에 프로세싱하기 위한, 인식된 패턴들의 장점을 취하기 위하여, 트레이닝된 분류자와 함께 작용할 수 있다.
웹 페이지의 부분들을 동시에 프로세싱하고 그리고 머신 학습 분석을 사용하여 서브-트리 독립성을 사용하는 페이지를 렌더링하기 위하여, 예측된 서브-트리 독립성을 사용하는 것은 페이지의 인스턴스를 렌더링하기 위한 속도를 증가시킬 수 있다. 이러한 페이지를 렌더링하기 위한 속도의 증가는 DOM 트리의 부분들이 병렬로 고속으로 프로세싱될 수 있으므로 전체 DOM 트리가 프로세싱되는 것을 브라우저가 대기하지 않아도 되기 때문에 하나의 페이지로부터 다른 페이지로 전환할때 사용자 경험을 개선시킬 수 있다.
도 2는 웹 서버들(16, 18)상에 호스팅되며 인터넷과 같은 통신 네트워크(17)를 통해 통신되는 웹페이지들을 컴퓨터(10)가 렌더링하도록 하는 통신 시스템을 예시한다. 앞서 언급된 바와같이, 머신 학습 알고리즘의 양상들은 통신 네트워크(17)를 통해 컴퓨팅 디바이스(10)에 커플링되는 원격 서버(60) 또는 로컬 컴퓨팅 디바이스(10)상에서 구현될 수 있다. 설명을 용이하게 하기 위하여, 도 2는 원격 서버(60) 및 컴퓨팅 디바이스(10) 둘다 상에 포함된 머신 학습 알고리즘 모듈을 도시하는 양상들 모두를 예시한다.
도 2의 컴퓨텅 디바이스(10)를 참조하면, 머신 학습 알고리즘이 컴퓨팅 디바이스(10)의 프로세서 내의 모듈로서 구현되는 일 양상에서, 컴퓨팅 디바이스(10)는 컴퓨팅 디바이스가 디스플레이(15)상에서 웹 페이지와 같은 페이지(13)의 하나 이상의 인스턴스들을 프리젠테이션하는 것을 가능하게 하면서 프로세서상에서 실행되는 웹 엔진 모듈(14)과 상호 작용하는 포털 컴포넌트(12)와 함께 구성될 수 있다. 예를들어, 디스플레이된 페이지(13)는 웹 서버(16) 및/또는 데이터 서버(18)로부터 통신 네트워크(17)를 통해 획득될 수 있다. 개별 컴포넌트들 또는 통합된 컴포넌트들일 수 있는 웹 서버(16) 및 데이터 서버(18)는 제 1 페이지 인스턴스(28) 및 제 2 페이지 인스턴스(30)를 각각의 정의하는 데이터 아이템들(24, 26) 및 웹 자원들(20, 22)을 각각 저장한다. 예를들어, 웹 자원들(20, 22)은 데이터로 채워질 수 있는 빈 페이지 템플릿(empty page template)과 같은 페이지의 정적 부분을 구성하는데 필요한 것을 포함할 수 있는 반면에, 데이터 아이템들(24, 26)은 페이지의 하나 이상의 동적 부분들과 같이 페이지를 채우기 위하여 사용되는 임의의 콘텐츠를 포함할 수 있다. 따라서, 웹 자원들(20, 22)의 모든 또는 일부 부분은 제 1 페이지 인스턴스(28) 및 제 2 페이지 인스턴스(30) 모두에 공통적일 수 있는 반면에, 데이터 아이템들(24, 26)의 모든 또는 일부 부분은 개별 페이지 인스턴스들에 고유할 수 있다.
컴퓨팅 디바이스(10)에서, 포털 컴포넌트(12)는 예를들어 웹 엔진(14)에 페이지의 필요한 인스턴스를 식별하는 포털 컴포넌트(12)의 런칭 또는 사용자 입력에 기초하여, 수신된 요청(32)을 통신할 수 있다. 예를들어, 수신된 요청(32)은 유니버셜 자원 로케이터(URL)와 같은 웹 자원을 정의하는 제 1 부분 및 질의 스트링(36)과 같은, 페치할 특정 데이터를 정의하는 제 2 부분을 포함할 수 있다. 웹 엔진(14) 또는 포털 컴포넌트(12)는 요청을 통신 네트워크를 통해 웹 서버(16) 및/또는 데이터 서버(18)에 전송하며, 이들은 요청된 페이지 컴포넌트들을 통신 네트워크를 통해 리턴한다. 이후, 전송된 페이지 컴포넌트들은 컴퓨팅 디바이스(10) 내의 웹 엔진 컴포넌트(14)에 의해 수신되어 프로세싱된다. 수신된 페이지의 렌더링동안, 웹 엔진(14)은 페이지를 위한 문서 객체 모델(DOM)(38)을 생성한다. 앞서 논의한 바와같이, DOM(38)은 개별 DOM 노드의 특성들 및/또는 속성들 및 개별 DOM 노드의 스타일 속성들을 포함하는 자식-부모 관계로 하나 이상의 노드들의 트리 또는 계층을 정의하며, 이는 페이지의 렌더링을 가능하게 한다.
웹 엔진(14)이 머신 학습 알고리즘 모듈(40)을 포함하는 양상들에서, 그 모듈은 웹 페이지 엘리먼트 정보를 수집하기 위하여, 프로세싱된 웹 페이지들의 수와 연관된 데이터를 웹 엔진(14)으로부터 수신한다. 머신 학습 알고리즘(40)은 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행한다. 머신 학습 알고리즘(40)은 콘텍스트에 기초하여 웹 페이지들에서 독립적인 서브-트리들의 관심 또는 기본 확률 분포들의 특징들을 캡처하기 위하여 통신 네트워크(17)로부터 수신되거나 또는 인터넷으로부터의 데이터의 예들의 장점을 취할 수 있다. 머신 학습 알고리즘(40)은 관찰된 변수들 사이의 관계들을 형성하며 복합 패턴들을 인식하고 주어진 수집된 웹 페이지들로부터 일반화된 패턴들을 만드는 것을 자동적으로 학습하여 유용한 출력을 생성할 수 있다. 머신 학습 알고리즘 모듈(40)에 의해 인식되거나 또는 생성되는 패턴들의 타입들은 웹 엔진(14)으로 하여금 복수의 머신 학습된 예들에 기초하여, 독립적이지 않은 DOM 서브-트리 컴포넌트들(48) 및 독립적인 DOM(38) 서브-트리 컴포넌트들(34)을 수신된 웹 페이지 스크립트로부터 식별하거나 또는 예측하도록 한다. 인식되거나 또는 생성된 패턴들의 타입들은 또한 웹 엔진(14)으로 하여금 조건부 독립적인 DOM(38) 서브-트리를 수신된 웹 페이지 스크립트로부터 식별하거나 또는 예측하도록 할 수 있다. 인식되거나 또는 생성된 패턴들의 타입들은 또한 웹 엔진(14)으로 하여금 웹 페이지 스크립트의 웹 페이지 엘리먼트 정보에 기초하여 선험적 독립적인 DOM(38) 서브-트리들을 수신된 웹 페이지 스크립트로부터 식별하거나 또는 예측하도록 할 수 있다. 일 양상에서, 수집된 웹 페이지 엘리먼트들은 특정 브라우저에 특정되거나 또는 특정 사용자에게 특정될 수 있다. 또 다른 양상에서, 수집된 웹 페이지 엘리먼트들은 주기적으로 업데이트될 수 있는 정적 패턴들의 세트를 형성하기 위하여 인터넷으로부터 유도될 수 있다. 또 다른 양상에서, 머신 학습 알고리즘(40)은 웹 엔진(14) 및 컴퓨팅 디바이스(10)로부터 분리될 수 있다. 또 다른 양상에서, 머신 학습 알고리즘(40)은 웹 엔진(14), 브라우저, 웹 서버(16), 데이터 서버(18), 웹 자원(20 또는 22) 또는 컴퓨팅 디바이스(10)내에 통합될 수 있다.
또 다른 양상에서, 머신 학습 알고리즘 모듈은 통신 네트워크(17)에 커플링되는 원격 서버(60)와 같은 원격 컴퓨팅 디바이스내에서 구현될 수 있어서, 머신 학습 알고리즘 모듈은 많은 수의 컴퓨팅 디바이스들로부터 웹페이지 렌더링 데이터를 수신할 수 있다. 이러한 양상에서, 서버는 통신 네트워크를 통해 컴퓨팅 디바이스(10) 없이 통신하기 위한 네트워크 통신 모듈(62)을 포함할 수 있으며, 이러한 네트워크 통신 모듈(62)은 이러한 컴퓨팅 디바이스들로부터 웹페이지 렌더링 정보를 수신하는 것을 포함한다. 서버는 또한 복합 패턴들을 인식하고 주어진 수집된 웹페이지 렌더링 정보로부터 일반화된 패턴들을 만들기 위하여, 수신된 웹페이지 렌더링 정보를 프로세싱할 머신 학습 알고리즘을 구현하도록 구성되는 머신 학습 모듈(64)로 구성될 수 있다. 앞서 논의된 바와같이, 이러한 패턴들은 웹페이지 스크립트의 패턴에 기초하여, 독립적이거나 또는 조건부 독립적이거나 또는 추측적으로 독립적인 서브-트리 구조들을 예측하는 것과 관련될 수 있다. 이러한 패턴들은 컴퓨팅 디바이스 웹 엔진들에 의해 사용가능한 포맷으로 패턴 데이터베이스(66)에 저장될 수 있다. 머신 학습 모듈(64)은 단일 패턴 데이터 세트를 생성하기 위하여 모든 컴퓨팅 디바이스들로부터 수신되는 모든 웹페이지 정보에 대한 패턴 데이터를 생성하도록 구성될 수 있다. 대안적으로, 머신 학습 모듈(64)은 선택된 타입들의 웹페이지들 또는 심지어 특정 URL들에 대한 패턴 데이터를 생성하도록 구성될 수 있다. 서버(60)는 컴퓨팅 디바이스들 내의 웹 엔진(14)이 페이지들을 더 효율적으로 렌더링하도록 하기 위하여 통신 네트워크(17)를 통해 (예를들어, 네트워크 통신 모듈(62)을 통해) 이러한 생성된 패턴 데이터를 컴퓨팅 디바이스들(10)에 통신하도록 추가로 구성될 수 있다. 이러한 패턴 데이터는 통신 네트워크(17)를 통해 컴퓨팅 디바이스들 (예를들어, 패턴 데이터 서비스에 등록되었거나 또는 패턴 데이터 서비스에 가입한 컴퓨팅 디바이스들)에 직접 전송될 수 있다. 대안적으로, 이러한 패턴 데이터는 통신 네트워크(17)를 뷰잉(view)하기 위하여 예를들어 웹 서버(16) 및/또는 데이터 서버들(18)에 정보를 송신하는 것을 통신함으로써 웹페이지들을 호스팅하는 회사들에 제공될 수 있다. 이러한 양상은 웹 브라우저들이 그들의 웹페이지들을 더 효율적으로 렌더링하도록 하기 위하여 예를들어 메타데이터로서 패턴 데이터를 전달함으로써 웹페이지들을 호스팅하는 회사들이 자신들의 웹페이지들에 대한 패턴 정보를 제공하도록 한다.
컴퓨팅 디바이스(10)를 참조하면, 웹 엔진 모듈(14)은 스케줄링 알고리즘 모듈(42)을 포함할 수 있다. 스케줄링 알고리즘 모듈(42)은 시스템의 로드의 균형을 효과적으로 유지하기 위하여 스레드들, 프로세스들 또는 데이터 흐름들이 시스템 자원들에 액세스할 수 있게 할 수 있다. 대안적으로, 스케줄링 알고리즘(42)은 타겟 서비스 품질을 달성할 수 있다. 스케줄링 알고리즘(42)은 바람직하게 웹 엔진(14)이 2개 이상의 프로세스를 동시에 실행하고 스크립팅 엔진(50)에 데이터의 복수의 흐름들을 동시에 전송하도록 하며, 그리고 렌더링 엔진(52)이 웹 페이지를 렌더링하도록 한다. 스케줄링 알고리즘(42)은 바람직하게, 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하도록, 예측된 서브-트리 독립성을 사용한다.
웹 엔진 모듈(14)은 또한 분류자 모듈(44)을 포함할 수 있다. 분류자 모듈(44)은 DOM(38)의 서브-트리들(34) 중 어느 것이 독립적인지 그리고 DOM(38)의 서브-트리들(48) 중 어느 것이 종속적인지를 예측하기 위하여 트레이닝될 수 있다. 분류자 모듈(44)은 동시에 프로세싱할 수 있으며 그리고 조건부 또는 무조건부로 프로세싱할 수 있는 도그 테레이(dog tray)의 부분들에 관한 예측들을 수행하기 위하여 머신 학습 알고리즘에 의해 제공되는 패턴 데이터에 대한 패턴들과 웹 페이지 스크립트의 엘리먼트 정보를 비교할 수 있다. 분류자 모듈(44)은 DOM(38)으로부터의 공통적인 동작 및 구조적 특징들을 가지는 인스턴스들의 세트를 설명하기 위한 복수의 프로그램 명령들을 포함할 수 있다.
앞서 논의된 바와같이, DOM(38)은 복수의 서브-트레이스를 포함하는 트리 구조를 가진다. 분류자 모듈(44)은 복수의 서브-트리들을 독립적인 것(34)으로 그리고 복수의 서브-트리들을 종속적인 것(48)으로 분류하기 위하여 DOM(38) 및 웹 페이지 엘리먼트 정보를 검사할 수 있다. DOM(38)의 구조에 따라, 분류자 모듈(44)은 서브-트리(34)가 선험적으로 독립적이라는 것을 예측할 수 있으며, 이 경우에 스크립팅 또는 렌더링 엔진(50 또는 52)은 DOM 트리(38)의 선험적 독립 부분의 외부에 태스크(task)를 형성할 수 있다.
일부의 경우들에서, 분류자 모듈(44)은 서브-트리(48)를 조건부 독립적인 것으로 식별할 수 있다. 이러한 경우들에서, 분류자(44)는 특정 정보가 결정될 수 있는 경우에 서브-트리가 독립적일 것이라는 것을 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 예측할 수 있다. 이러한 결정은 웹 엔진(14)이 서브-트리를 독립적으로 렌더링하는데 필요한 특정 정보를 획득할 태스크를 수행하도록 한다. 웹 엔진(14)이 특정 정보를 렌더링하기 위한 계산을 신속하게 수행하도록 함으로써, DOM(38)의 조건부 독립적 부분은 독립적인 서브-트리(34)로서 프로세싱될 수 있으며 따라서 동시에 프로세싱될 수 있다.
일부의 경우들에서, 분류자 모듈(44)은 서브-트리(48)를 추측적 독립적인 것으로 식별할 수 있으며, 이 경우에 웹 엔진(14)은 정보가 서브-트리를 독립적으로 렌더링할 것이라는 결정을 추측할 수 있다. 이후, 웹 엔진(14)은 이러한 서브-트리가 독립적이도록 렌더링할 수 있으며, 이러한 서브-트리는 동시에 프로세싱될 수 있다. 이러한 추측은 추측 알고리즘 모듈(42)에 의해 달성될 수 있으며, 이러한 추측 알고리즘 모듈(42)은 웹 엔진(14)을 구성하는 소프트웨어의 일부분일 수 있다.
웹 엔진(14)은 또한 병렬 계산 레이아웃 엔진 모듈(39)을 또한 포함할 수 있으며, 이러한 병렬 계산 레이아웃 엔진 모듈(39)은 렌더링 엔진 모듈(52)을 지원하며, 웹 페이지(52)를 렌더링하면서 DOM 트리(38)의 부분들을 동시에 프로세싱하기 위하여 종속적 서브-트리들(48)과 독립적 서브-트리들(34)의 병렬 계산을 제공한다. 또 다른 양상에서, 계산 엔진 모듈(39)은 또한 웹 페이지를 렌더링하는 것을 지원하기 위하여 인덱스 등을 참조할 수 있다. 바람직하게, 계산 엔진 모듈(39)은 DOM(38)의 웹 엘리먼트들을 사용하여 사용중인 프로그래밍 언어의 신택스내의 웹 엘리먼트들을 어드레싱하고 조작한다. 일 양상에서, 병렬 레이아웃 계산 엔진 모듈(39)은 렌더링 엔진(52)내에 통합될 수 있다.
다양한 양상들은 웹 페이지들의 고속 렌더링을 가능하게 하기 위하여 머신 학습 알고리즘에 의해 패턴들이 인식되는 것을 레버리지(leverage)한다. 이는 전체 DOM 구조가 프로세싱되는 것을 대기하지 않고 데이터의 클럼프(clump)들을 병렬로 프로세싱하는 웹 엔진(14)에 의해 달성될 수 있다. 이는 웹 엔진(14)이 페이지(32)의 요청된 인스턴스에 대응하는 DOM(38)의 제 2 부분과 동시에 DOM(38)의 제 1 부분을 프로세싱하도록 할 수 있다.
부가적으로, 컴퓨팅 디바이스(10)는 스크립팅 기능을 수행하도록 동작가능한 스크립팅 엔진 모듈(50)로 구성될 수 있다. 예를들어, 웹 엔진 모듈(14)은 페이지에 대응하는 스크립트들을 로드하기 위하여 스크립팅 엔진(50)과 상호 작용할 수 있으며, 그 스크립팅 엔진(50)은 대응하는 스크립트 기능들을 등록하는 것을 실행한다. 웹 엔진(14)으로부터 수신되는 로드 이벤트에 응답하여, 스크립팅 엔진(50)은 페이지 스크립트를 추가로 실행할 수 있으며, 웹 페이지의 인스턴스에 대한 대응하는 동적 데이터의 페칭(fetching)을 개시할 송신 콜(send call)들을 생성할 수 있다. 게다가, 동적 데이터를 수신한 이후에, 스크립팅 엔진(50)은 예를들어 DOM 애플리케이션 프로그램 인터페이스(API)를 통해 데이터를 공급할 수 있으며 데이터를 대응하는 DOM에 기록할 수 있다.
부가적으로, 컴퓨팅 디바이스(10)는 웹 엔진(14)과 상호 작용하는 렌더링 엔진(52)을 포함할 수 있다. 예를들어, 웹 엔진(14)으로부터의 요청에 응답하여, 렌더링 엔진(52)은 하나 이상의 독립적인 DOM 서브-트리 부분들(34)에 대응하며 그리고/또는 페이지의 개별 인스턴스에 대한 하나 이상의 종속적 DOM 서브-트리 부분들(48)에 대응하는 개별 페이지의 하나 이상의 부분들을 페인팅(paint)할 수 있다. 게다가, 렌더링 엔진(52)은 페이지의 페인팅된 부분들을 제시하기 위하여 디스플레이(15)와 상호 작용하여 페이지의 개별 인스턴스를 제시할 수 있다.
따라서, 웹 페이지 엘리먼트 정보와 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여 머신 학습 알고리즘 모듈(40, 64)을 사용하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석들을 수행함으로써 그리고 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝함으로써, 설명된 양상들은 웹페이지들의 렌더링을 가속화시킬 수 있다.
모바일 또는 셀룰라 폰과 같은 컴퓨팅 디바이스(10)의 기능 모듈들은 도 3에 예시된다. 이러한 기능 모듈들은 여기에서 설명된 모듈들 및 기능들 중 하나 이상과 연관된 프로세싱 기능들을 달성하기 위하여 프로세서-실행가능 명령들을 실행하는 프로세서(150)를 포함할 수 있다. 프로세서(150)는 프로세서들 또는 멀티-코어 프로세서들의 단일 또는 다중 세트를 포함할 수 있으며, 통합형 프로세싱 시스템 및/또는 분산형 프로세싱 시스템으로서 구현될 수 있다.
컴퓨터 디바이스(10)는 예를들어 프로세서(150)에 의해 실행되는 애플리케이션들의 로컬 버전들을 저장하고 그리고/또는 프로세서(150)에 의해 현재 실행되거나 또는 활용되고 있지 않는 데이터, 명령들 및/또는 애플리케이션들을 장기간 저장하기 위한 메모리(152)를 추가로 포함할 수 있다. 일 양상에서, 메모리(152)는 복수의 웹 페이지들(153)을 저장할 수 있다. 수집된 웹 페이지들(153)은 프로세싱되어 메모리(152)에 저장될 수 있다. 바람직하게, 수집된 웹 페이지들(153)은 수집된 웹 페이지들(153) 내의 웹 콘텐츠에서 패턴들을 관찰하기 위하여 인터넷으로부터 유래할 수 있다. 또 다른 양상에서, 수집된 웹 페이지들(153)은 인터넷으로부터 유래하거나 또는 특정 웹 브라우저에서 뷰잉되는(viewed) 페이지들의 수에 특정되거나 또는 패턴들의 포커싱된 탐색(focused search)을 획득하기 위하여 다른 파라미터에 특정된 페이지들의 서브세트일 수 있다. 일 양상에서, 메모리(152)는 머신 학습 분석 및 학습된 콘텐츠(157)로부터 유래되는, 수집된 웹 페이지들(155)에서 관찰되는 패턴들을 추가로 포함할 수 있다. 수집된 웹 페이지들(153)로부터 유래되는 패턴들(155)의 수신시에, 컴퓨팅 디바이스(10)는 메모리(152)에 패턴들(155)을 추가로 저장할 수 있다. 앞서 설명된 바와같이, 이러한 프로세싱은 웹 엔진이 독립적이며 조건부 독립적이며 종속적인(즉, 동시에 프로세싱될 수 없는) DOM 트리(38)의 서브-트리들을 식별하도록 하기 위하여 패턴들(155)로부터 종속성들을 분류하는 것을 수반할 수 있다.
앞서 논의된 바와같이, 컴퓨팅 디바이스(10)는 여기에서 설명된 바와같은, 하드웨어, 소프트웨어 및 서비스들을 활용하여 하나 이상의 엔티티들과의 통신들을 설정하고 유지하는 것을 관리하는 통신 모듈(154)을 포함할 수 있다. 통신 모듈(154)은 또한 컴퓨팅 디바이스(10)내의 기능 모듈들과 컴포넌트들 사이에서 뿐만아니라 통신 네트워크(17)에 걸쳐 배치되는 디바이스들 및/또는 컴퓨팅 디바이스(10)에 직렬로 또는 국부적으로 접속되는 디바이스들과 같은 외부 디바이스들과 컴퓨팅 디바이스(10) 사이에서 데이터를 전송할 수 있다. 예를들어, 통신 모듈(154)은 하나 이상의 버스들을 포함할 수 있으며, 인터페이스들, 하나 이상의 송신기들 또는 전송 체인 컴포넌트들 및 하나 이상의 수신기들 또는 수신 체인 컴포넌트들을 추가로 포함할 수 있으며, 이들은 외부 디바이스들과 인터페이싱하기 위한 동작가능하다. 예를들어, 이러한 송신기 및 수신기들은 하나 이상의 기술들 또는 프로토콜들에 따라 유선 또는 무선 통신들을 가능하게 할 수 있다.
컴퓨팅 디바이스(10)는 컴퓨팅 디바이스(10)의 사용자로부터 입력들(158)을 수신하기 위하여 동작가능하며 그리고 사용자에게 프리젠테이션하기 위한 출력들(160)을 생성하기 위하여 추가로 동작가능한 사용자 인터페이스 컴포넌트(156)를 추가적으로 포함할 수 있다. 사용자 인터페이스 컴포넌트(156)는 키보드, 수치 패드, 마우스, 터치-감지 디스플레이, 내비게이션 키, 기능 키, 마이크로폰, 음성 인식 컴포넌트, 이미지 캡처 디바이스, 사용자로부터 입력을 수신할 수 있는 임의의 다른 메커니즘 또는 이들의 임의의 조합을 포함하는(그러나, 이들에 제한되지 않음) 하나 이상의 입력 디바이스들을 포함할 수 있다. 게다가, 사용자 인터페이스 컴포넌트(156)는 디스플레이, 스피커, 햅틱 피드백 메커니즘, 터치 스크린, 프린터, 사용자에게 출력을 제시할 수 있는 임의의 다른 메커니즘 또는 이들의 임의의 조합을 포함하는(그러나, 이들에 제한되지 않음) 하나 이상의 출력 디바이스들을 포함할 수 있다.
추가적으로, 앞서 언급한 바와같이, 컴퓨팅 디바이스(10)는 웹 브라우저, 위젯 또는 모바일 위젯 또는 웹 애플리케이션 중 하나 또는 임의의 조합일 수 있는 포털 컴포넌트 모듈(12)을 포함할 수 있다. 포털 컴포넌트 모듈(12)은 웹 페이지의 렌더링을 가능하게 하기 위하여 컴퓨팅 디바이스(10)의 다른 컴포넌트들 뿐만아니라 컴퓨팅 디바이스(10)의 사용자와 인터페이싱하기 위하여 동작가능할 수 있다.
선택적으로, 일부 양상들에서, 웹 엔진(14)은 페치 동작들의 타이밍 및 성능을 관리하도록 구성된 페치 관리자(162)를 포함할 수 있다. 예를들어, 페치 관리자(162)는 참조 페이지(referring page)로부터 방금 클릭되었던 링크를 가진 페이지에 대한 콘텐츠의 프리-페칭(pre-fetching)을 가능하게 할 수 있으며, 여기서 참조 페이지는 프리-페칭을 수행할 URL들을 포함한다.
예를들어, 페치 관리자(162)는 참조 페이지의 JavaScript®에서 프리-페치 디스커버리 콜(pre-fetch discovery call)을 실행할 수 있다. 또 다른 예로서, 페치 관리자(162)는 페이지상에서 페치할 URL들을 태그 또는 순서화할 수 있으며, 따라서 이들 태그들 또는 URL들은 개별 페이지에 대한 요청을 수신하기 전에 페이지 렌더링에서 프로세싱될 수 있다. 예를들어, 페치 관리자(162)는 무엇을 프리-페치할지 그리고 언제 프리-페치할지를 결정하기 위하여 페이지들, 예를들어 리스트 내의 인접 페이지들, 계층 내의 인접 페이지들 등 간의 관계들을 결정하기 위한 알고리즘들 또는 기능들을 포함할 수 있다. 다른 양상들에서, 설명된 장치 및 방법들은 프리-페칭을 위하여 윌(will) 페치 관리자(162)에 의해 분석될, 알려진 URL들의 매니페스트(manifest)를 현재의 페이지의 HTML 헤드에 포함시킬 수 있다. 또 다른 양상에서, 설명된 장치 및 방법들은 각각의 도달가능한 페이지에 대한 프리-페칭을 실행하기 위하여 페치 관리자(162)에 의해 분석될, 각각의 도달가능 페이지에 대한 URL들의 구조화된 매니페스트를 참조 페이지의 HTML 헤드에 포함시킬 수 있다.
컴퓨팅 디바이스(10)의 웹 엔진(14)은 콘텐츠의 프로세싱을 지원하기 위하여 콘텐츠 핸들러 모듈(166)을 추가로 포함할 수 있다. 일 양상에서, 콘텐츠 핸들러 모듈(166)은 컴퓨팅 디바이스(102)가 머신 학습된 콘텐츠(157)를 생성해야 하는지를 결정하도록 한다. 게다가, 콘텐츠 핸들러 모듈(166)은 통신 네트워크(17)로부터 프로세싱 명령들(168)을 수신할 수 있다. 이러한 양상에서, 통신 네트워크는 컴퓨팅 디바이스(102)에 저장될 콘텐츠와 함께 프로세싱 명령들(168)을 제공할 수 있다. 예를들어, 프로세싱 명령들(168)은 이미지로 전송될 수 있으며 이미지 화소들을 재매핑하기 위한 명령들을 제공할 수 있다. 따라서, 프로세싱 명령들과 함께 전달되는 콘텐츠의 크기는 작을 수 있다. 일단 작은 크기의 미가공(raw) 콘텐츠 및 프로세싱 명령들이 컴퓨팅 디바이스(102)에 의해 수신되면, 프로세싱 명령들(168)은 콘텐츠를 더 풍부한 이미지 또는 더 풍부한 콘텐츠 세트로 확장하는 것을 용이하게 한다. 콘텐츠 핸들러 모듈(166)은 수신된 콘텐츠의 프로세싱을 지원하기 위하여 구조 레퍼런스(169)를 추가로 포함할 수 있다.
선택적으로, 일부 양상들에서, 콘텐츠 핸들러 모듈(166)은 페이지의 개별 인스턴스에 대한 요청 전에 DOM 또는 DOM의 부분들을 사전 유도하기 위한 유도 관리자(164)를 포함할 수 있다. 유도 관리자(164)는 웹 페이지가 필요할때 웹페이지들의 DOM으로의 유도를 관리하는 계층을 제공하는 알고리즘들 또는 기능들을 포함할 수 있다. 유도 관리자(164)는, 아마도 매니페스트로부터의 지시를 통해 최초로 다운로드될때가 아니라, 이러한 유도가 스마트 방식(smart way)으로 발생하도록 할 수 있다. 예를들어, 유도 관리자(164)의 알고리즘들 또는 기능들은 하나 이상의 페이지들을 어떻게 사전-유도할지를 그리고 하나 이상의 페이지들을 사전-유도할때를 결정하기 위하여 페이지들(예를들어, 리스트내의 인접 페이지들, 계층 내의 인접 페이지들 등) 간의 관계들을 결정할 수 있다. 유도 관리자(164)는 콘텐츠의 특정 부분이 프로세싱될 필요가 없음을 추론할 수 있는데, 왜냐하면 유도 관리자(164)는 동일한 피스를 사전에 알았기 때문이다. 페치 관리자(162) 및 유도 관리자(164)는 세션에서 페이지의 최초 실행들을 위한 성능을 개선하기 위하여 동일한 웹 엔진(14) 또는 콘텐츠 핸들러 모듈(166)에서 결합될 수 있다는 것에 유의해야 한다.
JavaScript 엔진과 같은 스크립팅 엔진(50)은 페이지의 주어진 인스턴스의 스크립트의 실행 및 스크립트 기능들의 등록을 관리한다. 렌더링 엔진(52)은 페이지의 주어진 인스턴스의 모두 또는 일부분들을 생성 또는 페인팅하며, 디스플레이(15)상에서 제시되는 디스플레이된 페이지 인스턴스(13)(도 2에 도시됨)와 같은 사용자 인터페이스(156)의 컴포넌트에 결과들을 통신한다.
페이지를 렌더링하기 위한 일 양상 방법(400)은 도 4에 예시된다. 방법(400)의 블록(402)에서, 컴퓨팅 디바이스는 페이지의 요청된 인스턴스에 대한 요청을 수신할 수 있다. 블록(404)에서, 컴퓨팅 디바이스의 프로세서는 DOM을 생성하거나 또는 메모리에 저장되는 요청된 페이지에 대한 DOM을 재호출함으로써 페이지를 렌더링하는 프로세스를 시작할 수 있다. 블록(406)에서, 컴퓨팅 디바이스 프로세서는 메모리에 저장될 수 있는 예측된 서브-트리 독립성 패턴들을 참조할 수 있다. 일 양상에서, 트레이닝된 분류자는 이러한 동작에서 입력 및 출력 레이아웃 독립성 결론들로서 노드 특징들을 비교할 수 있다.
블록(408)에서, 프로세서는 요청된 페이지의 생성된 DOM과 메모리에 저장된 참조된 예측된 서브-트리 독립성 패턴들을 비교할 수 있다. 이후, 블록(410)에서, 독립적이거나 또는 조건부 독립적인 것으로 식별되는 흐름 서브-트리들은 페이지를 렌더링하는 부분으로서 동시에 프로세싱될 수 있다. 최종적으로, 블록(412)에서, 요청된 페이지는 컴퓨팅 디바이스의 디스플레이상에 렌더링된다.
웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 관찰하기 위한 머신 학습 분석을 위한 일 양상의 방법(500)은 도 5에 예시된다. 방법(500)은 예를들어 웹페이지 정보의 데이터 저장을 프로세싱함으로써 많은 수의 웹페이지 렌더링들을 위하여 동시에 달성될 수 있다. 대안적으로, 방법(500)은 방법이 웹 페이지의 렌더링 동안 구현되도록 웹 브라우저내에 통합될 수 있어서, 웹 브라우저는 웹 페이지들이 렌더링될때 패턴들에 대하여 학습할 수 있다.
방법(500)의 블록(502)에서, HTML, CSS, JavaScript 또는 앞서 참조된 웹 페이지 엘리먼트들 중 임의의 엘리먼트의 형태를 가질 수 있는 웹 콘텐츠가 수신되며, 이 웹 콘텐츠는 프로세싱 명령들을 동반할 수 있다. 결정 블록(504)에서, 컴퓨팅 디바이스의 프로세서는 수신된 데이터가 머신 학습 분석을 위한 후보인지 그리고 패턴들을 학습하기 위하여 머신 판독 알고리즘에 입력하기에 적절한 형태인지를 결정할 수 있다. 콘텐츠가 머신 판독가능하지 않고 머신 학습을 위한 후보가 아니라는 것을 프로세서가 결정하면(즉, 결정 블록(504)에서 "아니오"이면), 프로세서는 블록(506)에서, 수신된 데이터를 폐기할 수 있거나 또는 선택적으로 블록(510)에서 데이터를 인덱싱 및 저장할 수 있다. 만일 콘텐츠가 머신 학습을 위한 후보라는 것으로 프로세서가 결정하면(즉, 결정 블록(504)에서 "예" 이면), 블록(508)에서, 머신 학습은 수신된 콘텐츠로부터, 웹 페이지 엘리먼트 정보와 상관되는 레이아웃 독립성의 패턴들을 검출하도록 수행될 수 있다. 블록(510)에서, 임의의 인식된 패턴들은 분류자를 트레이닝할때 사용하기에 적절한 방식으로 또는 스케줄링 알고리즘에 의해 액세스되기에 적절한 방식으로 메모리에 저장될 수 있다.
웹 페이지 엘리먼트 정보와 상관되는 레이아웃 독립성의 패턴들을 관찰하고 병렬 프로세싱을 사용하여 웹 페이지를 렌더링하기 위한 머신 학습 분석을 위한 일 양상의 방법(600)이 도 6에 예시된다. 방법(600)의 블록(602)에서, 컴퓨팅 디바이스는 하나 이상의 웹 페이지들로부터 콘텐츠를 요청할 수 있으며, 블록(604)에서 콘텐츠를 수신할 수 있다. 결정 블록(606)에서, 프로세서 구현 방법(600)은 웹 콘텐츠를 분석함으로써 수신된 콘텐츠가 머신 학습 프로세싱을 위한 후보인지를 결정할 수 있다. 만일 콘텐츠가 머신 학습을 위한 후보가 아니라는 것을 프로세서가 결정하면(즉, 결정 블록(606)에서 "아니오"이면), 블록(608)에서, 수신된 콘텐츠는 폐기될 수 있다. 만일 콘텐츠가 머신 학습을 위한 후보라는 것을 프로세서가 결정하면(즉, 결정 블록(606)에서 "예"이면), 프로세서는 패턴들을 식별하여 레이아웃 독립성에 상관시키기 위하여 웹 페이지 엘리먼트 정보의 머신 학습 분석을 수행할 수 있다. 블록(612)에서, 식별된 패턴들이 메모리에 저장될 수 있다. 블록(614)에서, 패턴들은 독립적인 서브-트리들을 동시에 프로세싱하고 새로운 웹 페이지를 렌더링하기 위하여 참조될 수 있다.
조건부 독립적인 서브-트리들을 식별하기 위한 일 양상의 방법(700)이 도 7에 예시된다. 방법(700)의 블록(702)에서, DOM 트리(38)의 의미론으로(semantically) 종속적인 서브-트리들이 수신될 수 있다. 의미론적으로 종속적인 서브-트리들은 이전에 검출된 패턴들로부터 추론되거나 또는 실제 서브-트리 또는 DOM 트리(38)로부터 판독될 수 있다. 결정 블록(704)에서, 프로세서 구현 방법(700)은 수신된 서브-트리의 종속성이 분석될 수 있는지의 여부를 결정할 수 있다. 만일 서브-트리가 분석될 수 있다는 것으로 프로세서가 결정하면(즉, 결정 블록(704)에서 "예"이면), 블록(706)에서, 프로세서는 블록(706)에서 종속성을 제거할 태스크를 스케줄링할 수 있다. 종속성을 제거할 이러한 태스크는 서브-트리가 동시에 프로세싱되도록 하기 위하여 신속하게 발생하도록 스케줄링될 수 있다. 블록(714)에서, 분석된 종속성을 가진 서브-트리는 웹 페이지를 렌더링하기 위하여 웹 페이지 프로세싱의 다른 부분들과 함께 동시에 프로세싱될 수 있다.
만일 서브-트리의 종속성이 분석될 수 없다고 프로세서가 결정하면(즉, 결정 블록(704)에서 "아니오"이면), 프로세서 구현 방법(700)은 결정 블록(708)에서 종속성이 예측될 수 있는지의 여부를 결정할 수 있다. 만일 종속성이 예측될 수 있다고 프로세서가 결정하면(즉, 결정 블록(708)에서 "예"이면), 블록(712)에서, 프로세서는 특정 서브-트리를 독립적인 것으로 렌더링하기 위하여 노드들의 종속성을 제거하는데 필요한 정보를 예측할 수 있어서 추측(즉, 종속성을 제거하는 정보에 대한 추측)에 기초하여 동시 프로세싱을 가능하게 할 수 있다. 블록(714)에서, 서브-트리는 웹 페이지를 렌더링하기 위하여 웹 페이지의 다른 부분들과 동시에 추론에 기초하여 동시에 프로세싱될 수 있다. 그러나, 만일 종속성이 예측될 수 없다고 프로세서가 결정하면(즉, 결정 블록(708)에서 "예"이면), 수신된 데이터는 블록(710)에서 페이지를 렌더링하기 위하여 표준 직렬 방식(standard series fashion)으로 프로세싱될 수 있다.
도 8은 웹 서버 및 데이터 서버로부터 콘텐츠 제공자를 통해 수신되는 웹 페이지들과 같은 페이지들을 렌더링하는 장치(예를들어, 컴퓨팅 디바이스)(800)의 컴포넌트들을 예시한다. 장치(800)는 소프트웨어 및/또는 펌웨어로 구성되는 프로세서의 형태의 기능 컴포넌트들을 포함할 수 있다. 장치(800)는 페이지에 대응하는 웹 자원들 및 데이터를 수신하는 것 및 페이지의 인스턴스를 렌더링하는 것을 용이하게 하는 전기 컴포넌트들의 논리 그룹핑(802)을 포함할 수 있다. 전기 컴포넌트들의 논리 그룹핑(802)은 예를들어 컴퓨팅 디바이스에서 페이지의 요청된 인스턴스에 대한 요청을 수신하기 위한 수단(804)을 포함할 수 있다. 게다가, 전기 컴포넌트들의 논리 그룹핑(802)은 페이지의 요청된 인스턴스가 메모리에 저장된 예측된 서브-트리 독립성에 대한 문서 객체 모델(DOM) 패턴들에 대응하는지를 결정하기 위한 수단(806)을 포함할 수 있으며, 메모리에 저장된 패턴들은 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측한다.
또한, 전기 컴포넌트들의 논리 그룹핑(802)은 메모리에 저장된 예측된 서브-트리 독립성을 참조(reference)하기 위한 수단(808)을 포함할 수 있다. 부가적으로, 전기 컴포넌트들의 논리 그룹핑(802)은 요청된 페이지의 문서 객체 모델(38)과 참조된 예측된 서브-트리 독립성을 비교하기 위한 수단을 포함할 수 있다. 선택적으로, 전기 컴포넌트들의 논리 그룹핑(802)은 페이지의 요청된 인스턴스를 렌더링하고 요청된 페이지의 DOM의 독립적인 서브-트리 부분들을 동시에 프로세싱하기 위한 수단(812)을 포함할 수 있다. 따라서, 장치(800)는 패턴들로부터 학습된 예측된 서브-트리 독립성을 효율적으로 사용하여 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하고 고속 방식으로 웹 페이지를 렌더링할 수 있다.
부가적으로, 장치(800)는 전기 컴포넌트들(804, 806, 808, 810) 및 선택적으로 컴포넌트(812)와 연관된 기능들을 실행하기 위한 명령들을 보유하는 메모리(814)를 포함할 수 있다. 메모리(814) 외부에 있는 것으로 도시된 반면에, 전기 컴포넌트들(804, 806, 808, 810) 및 선택적으로 컴포넌트(812)가 메모리(814)의 부분들 내에 존재하거나 또는 메모리(814)의 부분들을 포함할 수 있다는 것이 이해된다.
다양한 양상들에서, 특정 서브-트리들은 독립적인 것으로 식별되거나 또는 예측되는 반면에, 다른 서브-트리들은 종속적인 것으로 예측될 수 있으며 또 다른 것들은 조건부 독립적인 것으로 예측될 수 있다. 따라서, 머신 학습 분석을 사용하여 패턴들을 식별하면, 특정 서브-트리들은 독립적인 것으로 예측되어 동시에 프로세싱될 수 있다. 다른 조건부 독립성 서브-트리들은 독립적인 서브-트리들인 것으로 만들어질 수 있다. 이는 서브-트리들을 동시에 또는 병렬로 프로세싱함으로써 더 고속인 방식으로 DOM 트리(38)의 프로세싱을 가능하게 할 수 있다. 일 양상에서, 제 1 프로세서는 제 1 독립적인 서브-트리를 프로세싱할 수 있으며, 제 2 프로세서는 복수의 계산적인 스레드들의 실행을 가능하게 하기 위하여 제 2 독립적인 서브-트리 또는 DOM 트리를 동시에 프로세싱할 수 있다.
도 9는 브라우저의 제 1 실행시에 또는 식별되지 않은 DOM 구조를 가진 특정 웹 페이지의 제 1 해석시에 DOM 트리를 프로세싱하기 위한 일 양상의 방법(900)을 예시한다. 방법(900)에서, 브라우저는, 블록(902)에서, 원하는 웹 페이지에 대응하는 원격 또는 로컬 서버로부터 HTML 코드를 수신할 수 있다. 브라우저는, 블록(904)에서, 수신된 HTML을 파싱하고 DOM 트리를 생성할 수 있다. 블록(906)에서, 브라우저는 적어도 하나의 서브-트리가 독립적으로 프로세싱될 수 있는지를 결정하기 위하여 DOM 트리를 분석할 수 있다. 블록(908)에서, 브라우저는 머신 학습되며 참조를 용이하게 하기 위하여 인덱스 등으로 제공되는 복수의 패턴들을 참조할 수 있다. 블록(910)에서, DOM 트리의 식별된 독립적인 서브-트리들은 동시에 프로세싱될 수 있으며, 디스플레이에 출력하기 위한 HTML 코드가 구성된다. 블록(912)에서, 브라우저는 브라우저가 실행중인 컴퓨팅 디바이스의 전자 디스플레이상에서 모든 연관된 이미지들 및 파일들과 함께, 구성된 그리고 프로세싱된 HTML 코드를 디스플레이할 수 있다.
DOM 트리를 프로세싱하기 위한 일 양상의 방법(1000)은 추가적인 기능 세부사항들 및 특이성과 함께 도 10에 예시된다. 방법(1000)의 블록(1002)에서, 컴퓨팅 디바이스의 프로세서는 서버로부터 웹 브라우저 애플리케이션 HTML 코드를 수신할 수 있으며 그리고/또는 캐시 메모리로부터 HTML 코드를 재호출할 수 있다. 블록(1004)에서, 브라우저는 HTML 코드를 파싱하고, 수신된 HTML 코드에 대한 DOM 트리의 적어도 일부분을 생성할 수 있다.
결정 블록(1006)에서, 프로세서는 DOM 트리의 적어도 하나의 서브-트리가 자신이 독립적으로 프로세싱될 수 있다는 것을 표시하는 임의의 머신 학습된 패턴들과 매칭되는지의 여부를 결정할 수 있다. 다양한 양상들에서, 프로세서는 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하는 분류자 모듈의 출력을 평가함으로써 이러한 결정을 수행할 수 있다. 다양한 양상들에서, 프로세서는 생성된 DOM 트리의 부분들이 머신 학습 알고리즘으로부터 메모리에 저장된 패턴들 중 임의의 패턴과 매칭되는지를 결정하기 위하여 하나 이상의 알고리즘들을 실행하거나 또는 이러한 하나 이상의 알고리즘들의 실행을 개시할 수 있다. 결정 블록(1006)에서, 프로세서는 생성된 DOM 트리의 일부분들이 메모리에 저장되는 독립적인 DOM 서브-트리들의 패턴들과 구조적으로 동일하고 그리고/또는 구조적으로 유사한지를 결정할 수 있다. 결정 블록(1806)에서, 프로세서는 어느 서브-트리들이 독립적으로 프로세싱될 수 있는지를 결정하기 위하여 노드들 및 노드 관계들을 추가로 검사할 수 있다.
만일 DOM 서브-트리의 부분이 메모리에 저장된 패턴들 중 임의의 패턴의 구조와 매칭되지 않는다는 것으로 프로세서가 결정하면(즉, 결정 블록(1006)에서 "아니오"이면), 블록(1008)에서, 프로세서는 DOM 트리의 생성된 부분을 프로세싱할 수 있으며, 연관된 계산들을 수행할 수 있다(예를들어, 엘리먼트들의 절대 위치들, 스타일들을 계산하고, CSS 매칭을 수행할 수 있는 식이다). 블록(1010)에서, 프로세서는 DOM 트리의 실행된 부분들에 인덱싱된 결과들과 함께 계산 결과들을 저장할 수 있다.
만일 DOM 트리의 적어도 하나의 서브-트리들이 메모리에 저장된 패턴들과 구조적으로 동일하고 그리고/또는 구조적으로 유사한지를 프로세서가 결정하면(즉, 결정 블록(1006)에서 "예"이면), 블록(1012)에서, 머신 트레이닝된 분류자 모듈은 동시에 프로세싱될 수 있는 서브-트리들을 예측하기 위하여 사용될 수 있다.
결정 블록(1014)에서, 프로세서는 서브-트리를 독립적인 것으로 만들기 위하여 정보가 추론되어 서브-트리에 제공되는 경우에 서브-트리가 동시에 프로세싱될 수 있는지를 결정할 수 있다. 만일 그렇다면(즉, 결정 블록(1014)에서 "예"이면), 프로세서는 블록(1016)에서 필요한 정보를 추론할 것이며, 프로세싱은 서브-트리의 동시 프로세싱을 위하여 블록(1008)으로 리턴된다.
만일 서브-트리가 추론된 정보를 사용하여 동시에 프로세싱될 수 없다고 프로세서가 결정하면(즉, 결정 블록(1014)에서 "아니오"이면), 프로세서는 결정 블록(1018)에서, 추측에 기초하여 정보가 예측되거나 또는 공급되는 경우에 서브-트리가 독립적인 것으로 렌더링되어 동시에 프로세싱될 수 있는지를 결정할 수 있다. 만일 그렇다면(즉, 결정 블록(1018)에서 "예"이면), 필요한 정보는 블록(1020)에서 추측에 기초하여 공급되며 프로세싱은 서브-트리의 동시 프로세싱을 위하여 블록(1008)으로 리턴된다.
만일 서브-트리가 추측된 정보를 사용하여 동시에 프로세싱될 수 없다고 프로세서가 결정하면(즉, 결정 블록(1018)에서 "아니오"이면), 결정 블록(1022)에서, 프로세서는 서브-트리를 독립적인 것으로 렌더링할 계산들을 실행함으로써 정보가 획득될 수 있는 경우에 서브-트리가 동시에 프로세싱될 수 있는지를 결정할 수 있다. 이러한 계산은 태스크에서 인캡슐레이트(encapsulate)될 수 있으며(즉, 결정 블록(1022)에서 "예"이며), 프로세서는 블록(1024)에서 필요한 계산 태스크를 스케줄링할 수 있으며 블록(1026)에서 필요한 정보를 수신할 수 있다. 이 지점에서, 프로세싱은 서브-트리의 동시 프로세싱을 위한 블록(1008)으로 리턴한다.
DOM 트리의 프로세싱 및 계산들이 블록(1008)에서 완료될때, 블록(1010)에서, 결과적인 계산들은 메모리에 저장된다. 결정 블록(1028)에서, 프로세서는 모든 필요한 계산들이 계산되었는지를 결정할 수 있다. 만일 모든 계산들이 완료되지 않으면(즉, 결정 블록(1028)에서 "아니오"이면), 브라우저는 블록(1004)으로 리턴함으로써 DOM 트리의 추가 부분들을 생성하기 위하여 HTML 코드의 또 다른 섹션을 파싱할 수 있다. 만일 모든 계산들이 완료되면(즉, 결정 블록(1028)에서 "예"이면), 브라우저는 데이터를 유효하게 할 수 있으며 블록(1030)에서, 렌더링을 위한 페이지를 구성할 수 있으며, 블록(1032)에서, 컴퓨팅 디바이스의 전자 디스플레이상에 페이지를 디스플레이할 수 있다.
DOM 트리의 부분들을 프로세싱하기 위한 대안 양상의 방법(1100)이 도 11에 예시된다. 양상의 방법(1100)에서, 머신 트레이닝된 분류자는 새로운 수집된 웹 엘리먼트 정보 등에 기초하여 서브-트리 독립성 예측의 정확도를 개선하기 위하여 추가 패턴들을 인식하도록 업데이트될 수 있다. 방법(1100)의 블록(1102)에서, 브라우저 애플리케이션을 동작시키는 프로세서는 캐시 메모리 및/또는 원격 서버로부터 HTML 코드를 수신할 수 있다. 블록(1104)에서, 프로세서는 수신된 HTML을 파싱할 수 있으며, 수신된 HTML에 기초하여 DOM 트리의 하나 이상의 부분들을 생성할 수 있다. 블록(1108)에서, 프로세서는 패턴들을 프로세싱하여 렌더링될 DOM 트리와 비교할 수 있다. 결정 블록(1110)에서, 프로세서는 DOM 트리가 메모리의 어느 패턴들과 매칭되는지를 결정할 수 있다. 만일 DOM 트리의 부분들이 메모리의 패턴들 중 어느 패턴과도 매칭되지 않는다고 프로세서가 결정하면(즉, 결정 블록(1110)에서 "아니오"이면), 브라우저는 DOM 트리를 횡단할 수 있으며 블록(1120)에서 정상 방식으로 DOM 트리를 렌더링하기 위하여 연관된 계산들을 수행할 수 있다.
만일 DOM 트리의 부분들이 하나 이상의 패턴들 및 메모리와 매칭된다고 프로세서가 결정하면(즉, 결정 블록(1110)에서 "예"이면), 프로세서는 서브-트리들이 독립적이거나 또는 조건부 독립적이라는 것을 결정할 수 있다. 블록(1112)에서, 프로세서는 스케줄링 알고리즘을 사용하여 동시에 프로세싱될 수 있는 DOM 서브-트리들을 식별할 수 있다. 결정 블록(1114)에서, 프로세서는 예를들어 메모리에 저장된 패턴들과 서브-트리들을 비교하는 것에 기초하여 조건부 독립적 서브-트리들을 식별할 수 있다. 만일 그렇다면(즉, 결정 블록(1114)에서 "예"이면), 조건부 독립적인 서브-트리들은 추측, 예측, 추론에 의해 또는 조건부 독립적인 서브-트리들을 독립적인 것으로 만들기 위한 정보를 결정함으로써 독립적인 것으로 렌더링될 수 있다.
만일 조건부 독립적인 서브-트리들이 식별되지 않으면(즉, 결정 블록(1114)에서 "아니오"이면), 브라우저는, 블록(1120)에서, DOM 트리를 횡단하고 앞서 설명된 것과 같은 연관된 계산들을 수행함으로써 HTML 계산들의 생성된 부분들을 프로세싱할 수 있다. 만일 조건부 독립적인 서브-트리들이 렌더링되면(즉, 결정 블록(1114)에서 "예"이면), 브라우저는 블록(1116)에서 페이지를 구성할 수 있으며, 블록(1118)에서 전자 디스플레이상에서 결과적인 HTML 웹 페이지를 디스플레이할 수 있다.
블록(1108)에서의 동작들 동안, 프로세서는 블록(1106)에서 머신 학습 알고리즘 및 분류자에 액세스할 수 있다. 일 양상에서, 분류자는 미리 결정된 기간 이후에, 또는 동적 방식으로 또는 서버, 브라우저 또는 사용자의 요청시에 업데이트될 수 있는 복수의 정적 패턴들을 가질 수 있다. 결정 블록(1105)에서, 프로세서는 머신 트레이닝된 알고리즘 및 분류자가 업데이트되어야 하는지를 결정할 수 있다. 만일 그렇다면(즉, 결정 블록(1105)에서 "예"이면), 프로세서는 복수의 웹 페이지들로부터 웹 페이지 엘리먼트 정보를 수신하여 수집할 수 있으며, 블록(1104)에서 서브-트리 독립성을 예측하는 패턴들을 인식하기 위하여 머신 학습 분석을 수행할 수 있다. 예를들어, 분류자(1106)는 패턴들의 제 1 세트를 가질 수 있으며, 제 1 세트를 보충하기 위하여 패턴들의 제 2 세트로 업데이트될 수 있다. 다른 양상에서, 제 2 세트는 제 1 세트를 대체할 수 있다. 블록(1103)에서, 프로세서는 인식된 패턴들을 저장할 수 있으며, 인식된 패턴들은 새로운 DOM 트리와 비교하기 위하여 블록(1108)에서 업데이트되어 사용될 수 있다.
대안 양상에서, 패턴들은 동적, 자동 및/또는 주기적 방식으로 업데이트될 수 있다. 웹 페이지들은 프로세싱될 수 있으며, 웹 페이지 엘리먼트 정보는 웹 페이지 엘리먼트 정보와 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여 머신 학습 분석을 수행하기 위하여 수집될 수 있다. 웹 페이지들이 시간에 따라 진화할 수 있으며 웹 페이지 엘리먼트 정보가 새로운 패턴들의 관찰에 기초하여 변화하고 진화할 수 있으며 머신 학습 분석이 새로운 데이터의 패턴들을 캡처할 것이라는 것이 인식되어야 한다.
앞서 논의된 바와같이, 일부 양상들에서, 웹페이지 정보에 머신 학습 알고리즘의 적용은 여러 컴퓨팅 디바이스들의 웹페이지 프로세싱이 광범위하게 다양한 인터넷 웹페이지들에 대한 패턴 정보를 생성하기 위하여 사용될 수 있도록 중앙집중 서버에서 달성될 수 있다. 중앙 서버에서 웹페이지 프로세싱 정보를 분석하기 위한 일 양상의 방법(1200)은 도 12에 예시된다. 방법(1200)의 블록(1202)에서, 인터넷과 같은 통신 네트워크에 커플링된 서버는 네트워크에 커플링되는 복수의 컴퓨팅 디바이스들상에서, 계장화된 웹 브라우저들에 의해 보고되는 웹페이지 프로세싱 데이터를 수신할 수 있다. 웹페이지 프로세싱 데이터의 잘못된 보고는 인터넷 통신 기술분야에서 잘 알려진 다양한 데이터 구조들 및 데이터 보고 방법들 중 임의의 것을 사용할 수 있다. 수신된 웹페이지 프로세싱 데이터는 분석을 위한 프로세싱 데이터의 데이터베이스를 빌드 업(build up)하기 위하여 서버내에 저장될 수 있다. 블록(1204)에서, 서버는 수신된 웹 프로세싱 데이터에 머신 학습 알고리즘들을 적용할 수 있다. 앞서 논의된 바와같이, 이러한 알고리즘들은 서브-트리들의 독립성 또는 조건부 독립성에 상관되는 패턴들을 웹페이지 스크립트들 또는 다운 트리들 내에서 식별하도록 구성될 수 있다. 블록(206)에서, 서버는 데이터베이스에 저장된 다른 머신 학습된 패턴 데이터와, 수신된 웹 프로세싱 데이터를 프로세싱하는 것에 의해 식별된 패턴 데이터를 통합시킬 수 있다. 이러한 동작에서, 이전에 생성된 패턴 데이터는 현재의 패턴 데이터와 결합되거나 또는 융합되어 패턴들의 업데이트된 또는 교체된 데이터 세트를 초래할 수 있다. 블록(1208)에서, 결과적인 패턴 데이터는 컴퓨팅 디바이스 웹 브라우저 애플리케이션들내에 포함된 트레이닝가능 분류자와 같은, 컴퓨팅 디바이스 웹 브라우저들을 트레이닝하기에 적절한 트레이닝 데이터 또는 패턴들을 생성하기 위하여 사용될 수 있다. 블록(1210)에서, 이러한 생성된 트레이닝 데이터는 예를들어 인터넷과 같은 통신 네트워크를 통해 컴퓨팅 디바이스들에 전송될 수 있다. 이러한 전송 또는 트레이닝 데이터는 서비스 또는 가입으로서 제공될 수 있으며 따라서 서버와 계약된(sign up with) 컴퓨팅 디바이스들만이 이러한 정보를 수신한다. 추가 양상에서, 트레이닝 또는 패턴 데이터는 정보가 웹 호스팅 회사들의 웹페이지 HTML 스크립트들에서 메타데이터로서 포함될 수 있도록 웹 호스팅 회사들에 제공될 수 있다. 양상의 방법(1200)은 수천개의 컴퓨팅 디바이스들이 아닐지라도 중앙 서버가 수백개의 웹페이지 브래트 렌더링 동작(webpage brat rendering operation)들로부터 장점을 획득하도록 하며, 따라서 인터넷상에서 이용가능한 웹페이지들의 넓은 단면과 관련된 데이터 세트들을 트레이닝하는 것과 패턴 인식을 발전시킬 수 있다.
전술한 설명들로부터 알 수 있는 바와같이, 웹 페이지 렌더링에 대한 정보를 수집하는 것, 웹 페이지 렌더링 정보로부터 엘리먼트 데이터를 생성하는 것, 엘리먼트 데이터에 대하여 머신 학습 분석들을 수행하는 것 및 머신 학습 분석의 결과들을 사용할 브라우저를 트레이닝하는 것에 대한 동작들은 다양한 구현들에서 상이한 컴퓨팅 디바이스들에서 달성될 수 있다. 예를들어, 양상들은 오직 단일 컴퓨팅 디바이스 브라우저(예를들어, 계장화 브라우저)내에서만 구현될 수 있으며, 복수의 컴퓨팅 디바이스들 및 하나 이상의 서버들내에서 부분적으로 구현될 수 있으며, 실질적으로 복수의 컴퓨팅 디바이스들로부터 웹 페이지 렌더링 정보를 수신하는 하나 이상의 서버들내에서 구현될 수 있다. 특히, 다양한 양상들은 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것, 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 것, 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 것, 및 예측된 서브-트리 독립성을 사용하여 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하는 것에 대한 동작들을 포함하는 방법(방법을 수행하기 위하여 실행가능한 명령들로 구성된 컴퓨팅 디바이스내에서 구현될 수 있음)을 포함한다.
제 1 예시적인 양상에서, 이러한 방법은 단일 컴퓨팅 디바이스내에서 구현될 수 있는데, 여기서 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것은 단일 컴퓨팅 디바이스상에서 동작하는 계장화 브라우저에서 달성되고 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 것은 동일한 컴퓨팅 디바이스에서 달성된다.
제 2 예시적인 양상에서, 이러한 방법은 서버 및 컴퓨팅 디바이스들의 네트워크에서 구현될 수 있는데, 여기서 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것은, 복수의 컴퓨팅 디바이스들에서 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것, 수집된 웹 페이지 정보를 복수의 컴퓨팅 디바이스들 각각으로부터 서버에 전송하는 것, 집합화된 웹 페이지 엘리먼트 정보를 생성하기 위하여, 복수의 컴퓨팅 디바이스들에 의해 전송되는 웹 페이지 정보를 서버에서 수신하여 집합화하는 것, 복수의 컴퓨팅 디바이스들 중 적어도 하나에, 집합화된 웹 페이지 엘리먼트 정보를 전송하는 것, 및 전송한 집합화된 웹 페이지 엘리먼트 정보를 복수의 컴퓨팅 디바이스들 중 적어도 하나에서 수신하는 것을 포함한다. 또한, 이러한 양상에서, 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 것은 수신된 집합화된 웹 페이지 엘리먼트 정보에 대하여 복수의 컴퓨팅 디바이스들 중 적어도 하나에서 달성되며, 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 것은 수신된 집합화된 웹 페이지 엘리먼트 정보에 대하여 수행되는 머신 학습 분석에 기초하여 서브-트리 독립성을 예측하기 위하여 복수의 컴퓨팅 디바이스들 중 적어도 하나에서 동작하는 분류자를 트레이닝하는 것을 포함한다.
제 3 예시적인 양상에서, 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것은 복수의 컴퓨팅 디바이스들에서 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것, 수집된 웹 페이지 정보를 (예를들어, 인터넷을 통해) 복수의 컴퓨팅 디바이스들 각각으로부터 서버에 전송하는 것, 및 집합화된 웹 페이지 엘리먼트 정보를 생성하기 위하여, 복수의 컴퓨팅 디바이스들에 의해 전송되는 웹 페이지 정보를 서버에서 수신하는 것을 포함할 수 있다. 이러한 제 3 예시적인 양상에서, 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보에 대하여 머신 학습 분석을 수행하는 것은 레이아웃 독립성의 패턴들을 식별하기 위하여 복수의 컴퓨팅 디바이스들에 의해 전송되는 수신된 웹 페이지 정보에 대하여 서버에서 달성될 수 있으며, 본 방법은 서버로부터 복수의 컴퓨팅 디바이스들 중 적어도 하나로 (예를들어, 인터넷을 통해) 식별된 레이아웃 독립성의 패턴들을 전송하는 것, 및 복수의 컴퓨팅 디바이스들 중 적어도 하나에서, 식별된 레이아웃 독립성의 패턴들을 수신하는 것을 추가로 포함할 수 있다. 추가로, 이러한 양상에서, 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 것은 수신된 식별된 레이아웃 독립성의 패턴들에 기초하여 서브-트리 독립성을 예측하기 위하여 복수의 컴퓨팅 디바이스들 중 적어도 하나에서 동작하는 분류자를 트레이닝하는 것을 포함할 수 있다.
도 13은 양상들 중 임의의 양상에 사용하기에 적절한 모바일 컴퓨팅 디바이스의 시스템 블록도이다. 통상적인 모바일 컴퓨팅 디바이스(1300)는 내부 메모리(1302)에 커플링된 프로세서(1301), 디스플레이(1303) 및 스피커(1354)를 포함할 수 있다. 프로세서(1301)는 웹 페이지의 부분들을 동시에 프로세싱하기 위하여 모바일 컴퓨팅 디바이스(1300)내에 포함될 수 있는 멀티-코어 프로세서 또는 2개 이상의 프로세서일 수 있다. 부가적으로, 모바일 컴퓨팅 디바이스(1300)는 무선 데이터 링크에 접속될 수 있는, 전자기 방사를 송신 및 수신하기 위한 안테나(1304) 및/또는 프로세서(1301)에 커플링되는 셀룰라 전화 트랜시버(1305) 및 프로세서(1301)에 커플링되는 모바일 컴퓨팅 디바이스(1324)를 포함할 수 있다. 모바일 컴퓨팅 디바이스(1300)는 또한 통상적으로 사용자 입력들을 수신하기 위한 메뉴 선택 버튼들 또는 로커 스위치들(1308)을 포함한다.
앞서 설명된 양상들은 또한 도 15에 예시된 바와같이 랩탑 컴퓨터(1400)와 같은 다양한 컴퓨팅 디바이스들내에서 구현될 수 있다. 많은 랩탑 컴퓨터들은 컴퓨터의 포인팅 디바이스의 역할을 하는 터치 패드 터치 표면(touch pad touch surface)을 포함하며, 따라서 터치 스크린 디스플레이를 갖춘 모바일 컴퓨팅 디바이스들상에서 구현되는 것들과 유사한 드래그, 스크롤 및 플릭 제스처(flick gesture)들을 수신할 수 있다. 랩탑 컴퓨터(1400)는 통상적으로 휘발성 메모리(1402) 및 디스크 드라이브(1403)와 같은 대용량 비휘발성 메모리에 커플링된 프로세서(1401)를 포함할 것이다. 프로세서(1401)는 웹 페이지의 부분들을 동시에 프로세싱하기 위하여 컴퓨터(1400)에 포함될 수 있는 멀티-코어 프로세서 또는 2개 이상의 프로세서일 수 있다. 컴퓨터(1400)는 또한 프로세서(1401)에 커플링된 컴팩트 디스크(CD) 드라이브(1405) 및 플로피 디스크 드라이브(1404)를 포함할 수 있다. 컴퓨팅 디바이스(1400)는 또한 데이터 접속들을 설정하거나 또는 USB 또는 FireWire® 커넥터 소켓들과 같은 외부 메모리 디바이스들을 수용하기 위하여 프로세서(1401)에 커플링된 복수의 커넥터 포트들 또는 프로세서(1401)를 네트워크에 커플링하기 위한 다른 네트워크 접속 회로들(1406)을 포함할 수 있다. 노트북 구성에서, 컴퓨터 하우징은 터치패드(1407), 키보드(1408) 및 디스플레이(1409)를 포함하며, 이들은 모두 프로세서(1401)에 커플링된다. 컴퓨팅 디바이스의 다른 구성들은 잘 알려진, (예를들어, USB 입력을 통해) 프로세서에 커플링된 트랙볼 또는 컴퓨터 마우스를 포함할 수 있다.
프로세서들(1301, 1401)은 이하에서 설명된 다양한 양상들의 기능들을 포함하는 다양한 기능들을 수행하기 위하여 소프트웨어 명령들(애플리케이션들)에 의해 구성될 수 있는 임의의 프로그램가능 마이크로프로세서, 마이크로컴퓨터 또는 다중 프로세서 칩 또는 칩들일 수 있다. 앞서 언급된 바와같이, 프로세서들(1301, 1401)은 멀티-코어 프로세서들일 수 있거나 또는 웹 페이지들을 동시에 프로세싱하기 위하여 동일한 컴퓨팅 디바이스 내의 복수의 프로세스들과 작용하도록 구성될 수 있다. 일부 모바일 수신기 디바이스들에서, 복수의 프로세서들(1401)이 제공될 수 있으며, 이들 중 하나의 프로세서는 무선 통신 기능들에 전용되며 하나의 프로세서는 다른 애플리케이션들을 실행하는 것에 전용된다. 통상적으로, 소프트웨어 애플리케이션들은 그들이 액세스되고 프로세서(1301, 1401)에 로드되기전에 내부 메모리(1302, 1402, 1403)에 저장될 수 있다. 프로세서(1301, 1401)는 애플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수 있다.
전술한 방법 설명들 및 프로세스 흐름도들은 단순히 예시적인 예들로서 제공되며, 다양한 양상들의 단계들이 제시된 순서로 수행되어야 한다는 것을 요구하거나 또는 의미하는 것으로 의도되지 않는다. 당업자에 의해 인식되는 바와같이, 전술한 양상들에서의 단계들의 순서는 임의의 순서로 수행될 수 있다. "이후", "그 다음", "다음" 등과 같은 용어들은 단계들의 순서를 제한하는 것으로 의도되지 않으며, 이들 용어들은 단순히 방법들의 설명을 통해 읽는 사람을 안내하기 위하여 사용된다. 게다가, 예를들어 관사들을 사용하여 단수로 엘리먼트들을 청구하는 임의의 참조는 엘리먼트를 단수로 제한하는 것으로 해석되지 않아야 한다.
여기에 개시된 양상들과 관련하여 설명되는 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합으로서 구현될 수 있다. 하드웨어와 소프트웨어의 이러한 상호 호환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 일반적으로 이들의 기능적 관점에서 전술되었다. 이러한 기능이 하드웨어로 구현되는지, 또는 소프트웨어로 구현되는지는 특정 애플리케이션 및 전체 시스템에 대해 부과된 설계 제약들에 의존한다. 당업자들은 설명된 기능을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 이러한 구현 결정들이 본 발명의 범위를 벗어나게 하는 것으로 해석되어서는 안 된다.
여기에 개시된 양상들과 관련하여 설명되는 다양한 예시적인 로직들, 논리 블록들, 모듈들, 및 회로들을 구현하기 위하여 사용되는 하드웨어는 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA) 또는 다른 프로그램가능 논리 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들 또는 여기에 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를들어 DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다. 대안적으로, 일부 단계들 또는 방법들은 주어진 기능에 특정한 회로소자에 의해 수행될 수 있다.
하나 이상의 예시적인 양상들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 상기 기능들은 컴퓨터-판독가능 매체 상의 하나 이상의 명령들 또는 코드로서 저장되거나 또는 이들을 통해 전송될 수 있다. 여기에 개시된 알고리즘 또는 방법의 단계들은 탠저블 비-일시적 컴퓨터-판독가능 저장 매체상에 상주할 수 있는 프로세서-실행가능 소프트웨어 모듈로 구현될 수 있다. 탠저블 비-일시적 컴퓨터-판독가능 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능 매체일 수 있다. 제한이 아닌 예로서, 이러한 비-일시적 컴퓨터-판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장소, 자기 디스크 저장 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 저장하기 위해 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 여기에서 사용되는 디스크(disk) 및 디스크(disc)는 컴팩트 디스크(CD: compact disc), 레이저 디스크(laser disc), 광학 디스크(optical disc), 디지털 다기능 디스크(DVD: digital versatile disc), 플로피 디스크(floppy disk) 및 블루-레이 디스크(blu-ray disc)를 포함하며, 여기서 디스크(disk)들은 통상적으로 자기적으로 데이터를 재생하는 반면에 디스크(disc)들은 레이저들을 통해 데이터를 광학적으로 재생한다. 위의 것들의 조합은 또한 비-일시적 컴퓨터-판독가능 매체의 범위 내에 포함되어야 한다. 부가적으로, 알고리즘 또는 방법의 동작들은 컴퓨터 프로그램 물건내에 통합될 수 있는 탠저블 비-일시적 머신 판독가능 매체 및/또는 컴퓨터-판독가능 매체상에 코드를 및/또는 명령들 중 하나 또는 임의의 조합 또는 세트로서 상주할 수 있다.
개시된 양상들의 전술한 설명은 당업자가 본 발명을 이용하거나 또는 실시할 수 있도록 제공된다. 이들 양상들에 대한 다양한 수정들은 당업자들에게 쉽게 명백할 것이며, 여기에서 정의된 일반적인 원리들은 본 발명의 사상 또는 범위로부터 벗어남이 없이 다른 양상들에 적용될 수 있다. 따라서, 본 발명은 여기에서 제시된 양상들로 제한되는 것으로 의도되지 않고, 여기에서 개시된 원리들 및 신규한 특징들 및 이하의 청구항들과 부합하는 가장 넓은 범위에 따른다.

Claims (88)

  1. 웹 페이지 렌더링(rendering)을 가속화하기 위한 방법으로서,
    복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 단계;
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 단계;
    웹 페이지의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 단계; 및
    렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하는 단계를 포함하는, 웹 페이지 렌더링을 가속화하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하는 단계는,
    상기 웹 페이지의 웹 페이지 엘리먼트 정보에 기초하여 서브-트리가 선험으로 독립적임(a priori independent)을 예측하는 단계; 및
    DOM 트리의 선험적 독립적인 부분의 외부에 태스크(task)를 형성하는 단계를 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  3. 제 1 항에 있어서,
    특정 정보가 결정되는 경우에 서브-트리가 조건부 독립적임을 상기 웹 페이지의 엘리먼트 정보에 기초하여 예측하는 단계;
    상기 특정 정보를 획득하기 위하여 태스크를 수행하는 단계; 및
    획득된 특정 정보를 사용하여 DOM 트리의 조건부 독립적 부분의 외부에 태스크를 형성하는 단계를 더 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  4. 제 3 항에 있어서,
    상기 특정 정보를 획득하기 위하여 태스크를 수행하는 단계는, 상기 특정 정보를 계산하는 단계를 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  5. 제 3 항에 있어서,
    상기 특정 정보를 획득하기 위하여 태스크를 수행하는 단계는, 추측(speculation)에 기초하여 상기 특정 정보를 결정하는 단계를 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  6. 제 1 항에 있어서,
    웹 페이지 엘리먼트 레이아웃 크기, 위치, CSS 스타일 속성들(attributes), 서브-트리 크기, HTML 태그, 부모(parent) HTML 태그 및 웹 페이지 특징 정보(web page feature information) 중 적어도 하나를 포함하는 웹 페이지 엘리먼트 정보를 수집하는 단계를 더 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  7. 제 1 항에 있어서,
    상기 웹 페이지의 DOM 트리의 서브-트리가 독립적이지 않음을 그리고 상기 서브-트리가 동시에 프로세싱될 수 없음을 결정하기 위하여, 예측된 서브-트리 독립성을 사용하는 단계를 더 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  8. 제 1 항에 있어서,
    상기 머신 학습 분석을 수행하고 서브-트리 독립성을 예측하여 상기 웹 페이지의 부분들을 동시에 프로세싱하기 위하여 단일 웹 브라우저를 사용하는 단계를 더 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  9. 제 1 항에 있어서,
    제 1 프로세서를 사용하여 제 1 컴퓨팅 디바이스에서 머신 학습 분석을 수행하는 단계; 및
    제 2 프로세서를 사용하여 제 2 상이한 컴퓨팅 디바이스에서 상기 웹 페이지의 부분들을 동시에 프로세싱하기 위하여 서브-트리 독립성을 예측하는 단계를 더 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  10. 제 1 항에 있어서,
    복수의 업데이트된 웹 페이지들을 프로세싱함으로써 상기 분류자를 업데이트하는 단계, 업데이트된 웹 페이지 엘리먼트 정보를 수집하는 단계, 및 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 추가 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 단계를 더 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  11. 제 1 항에 있어서,
    컴퓨팅 디바이스상에서 동작하는 계장화 브라우저(instrumented browser)를 사용하여 웹 페이지 엘리먼트 정보를 수집하는 단계를 더 포함하며;
    상기 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 단계는 상기 계장화 브라우저에서 달성되며; 그리고
    상기 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 단계는 동일한 출력 디바이스에서 달성되는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  12. 제 1 항에 있어서,
    상기 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 단계는,
    복수의 컴퓨팅 디바이스들에서, 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 단계;
    수집된 웹 페이지 정보를 상기 복수의 컴퓨팅 디바이스들 각각으로부터 서버에 전송하는 단계;
    집합화된(aggregated) 웹 페이지 엘리먼트 정보를 생성하기 위하여, 상기 복수의 컴퓨팅 디바이스들에 의해 전송되는 상기 웹 페이지 정보를 상기 서버에서 수신하여 집합화하는 단계;
    상기 복수의 컴퓨팅 디바이스들 중 적어도 하나에, 집합화된 웹 페이지 엘리먼트 정보를 전송하는 단계; 및
    전송한 집합화된 웹 페이지 엘리먼트 정보를 상기 복수의 컴퓨팅 디바이스들 중 상기 적어도 하나에서 수신하는 단계를 포함하며;
    상기 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 단계는, 수신된 집합화된 웹 페이지 엘리먼트 정보에 대하여 상기 복수의 컴퓨팅 디바이스들 중 상기 적어도 하나에서 달성되며; 그리고
    상기 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 단계는, 수신된 집합화된 웹 페이지 엘리먼트 정보 상에서 수행되는 머신 학습 분석에 기초하여 서브-트리 독립성을 예측하기 위하여 상기 복수의 컴퓨팅 디바이스들 중 상기 적어도 하나에서 동작하는 분류자를 트레이닝하는 단계를 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  13. 제 1 항에 있어서,
    상기 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 단계는,
    복수의 컴퓨팅 디바이스들에서, 복수의 웹 페이지들을 프로세싱하며 웹 페이지 엘리먼트 정보를 수집하는 단계;
    수집된 웹 페이지 정보를 상기 복수의 컴퓨팅 디바이스들 각각으로부터 서버에 전송하는 단계; 및
    집합화된 웹 페이지 엘리먼트 정보를 생성하기 위하여 상기 복수의 컴퓨팅 디바이스들에 의해 전송되는 웹 페이지 정보를 상기 서버에서 수신하는 단계를 포함하며;
    상기 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 단계는, 레이아웃 독립성의 패턴들을 식별하기 위하여 상기 복수의 컴퓨팅 디바이스들에 의해 전송되는 수신된 웹 페이지 정보에 대하여 상기 서버에서 머신 학습 분석을 수행하는 단계를 포함하며;
    상기 방법은,
    식별된 레이아웃 독립성의 패턴들을 상기 서버로부터 상기 복수의 컴퓨팅 디바이스들 중 적어도 하나에 전송하는 단계; 및
    상기 식별된 레이아웃 독립성의 패턴들을 상기 복수의 컴퓨팅 디바이스들 중 상기 적어도 하나에서 수신하는 단계를 더 포함하며;
    상기 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 단계는, 수신된 식별된 레이아웃 독립성의 패턴들에 기초하여 서브-트리 독립성을 예측하기 위하여 상기 복수의 컴퓨팅 디바이스들 중 상기 적어도 하나에서 동작하는 분류자를 트레이닝하는 단계를 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  14. 제 1 항에 있어서,
    상기 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하는 분류자를 더 포함하며; 상기 분류자는 스케줄링 알고리즘에 서브-트리 독립성 데이터를 제공하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  15. 제 14 항에 있어서,
    상기 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 상기 예측된 서브-트리 독립성을 사용하는 상기 스케줄링 알고리즘을 더 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  16. 제 1 항에 있어서,
    미리 결정된 스타일 시트(sheet) 언어 코딩의 프리젠테이션 시맨틱스(presentation semantics)에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 단계를 더 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  17. 제 1 항에 있어서,
    DOM 트리의 제 1 독립적인 서브-트리를 상기 DOM 트리의 제 2 종속적인 서브-트리를 렌더링하기 전에 렌더링하기 위하여, 예측된 서브-트리 독립성을 사용하는 단계를 더 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  18. 제 1 항에 있어서,
    인터넷(Internet)으로부터의 복수의 웹 페이지들을 연속적으로 프로세싱하며 웹 페이지 엘리먼트 정보를 수집하는 단계;
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 연속적으로 수행하는 단계; 및
    식별된 패턴들 및 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 상기 분류자를 업데이트하는 단계를 더 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  19. 제 1 항에 있어서,
    웹 페이지들의 제 1 세트를 프로세싱하며, 상기 웹 페이지의 제 1 세트와 연관된 웹 페이지 엘리먼트 정보를 수집하며, 그리고 패턴들의 제 1 세트를 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 단계;
    렌더링될 부분들을 동시에 프로세싱하기 위하여, 상기 웹 페이지들의 제 1 세트의 예측된 서브-트리 독립성과 상기 연관된 패턴들의 제 1 세트를 사용하는 단계; 및
    추가적인 웹 페이지 엘리먼트 정보를 수집하고 연속 방식으로 상기 패턴들의 제 1 세트를 보충할 추가 패턴들을 식별할 머신 분석을 수행함으로써, 동적 방식으로 상기 패턴들의 제 1 세트를 연속적으로 업데이트하는 단계를 더 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  20. 제 19 항에 있어서,
    패턴들의 제 2 세트를 식별하기 위하여 웹 페이지들의 제 2 세트를 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 단계, 및 상기 패턴들의 제 1 세트를 업데이트하기 위하여 상기 패턴들의 제 2 세트를 사용하는 단계를 더 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  21. 제 1 항에 있어서,
    HTML 코딩에서 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 단계를 더 포함하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  22. 제 21 항에 있어서,
    HTML 코딩은 병렬 프로세싱 능력을 표시하는 DOM 트리의 제 1 서브-트리를 포함하며; HTML 코딩은 또한 제 2 서브-트리의 병렬 프로세싱 능력에 대하여 침묵하는(silent) 제 2 서브-트리를 포함하며, 상기 분류자는 상기 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 웹 페이지 엘리먼트들의 제 2 서브-트리의 서브-트리 독립성을 예측하는,
    웹 페이지 렌더링을 가속화하기 위한 방법.
  23. 컴퓨팅 디바이스로서,
    디스플레이;
    내부 메모리; 및
    상기 내부 메모리 및 상기 디스플레이에 커플링된 프로세서를 포함하며;
    상기 프로세서는 프로세서-실행가능 명령들로 구성되며;
    상기 프로세서-실행가능 명령들은,
    복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것;
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것;
    웹 페이지의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 것; 및
    렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하는 것을 포함하는 동작들 수행하는,
    컴퓨팅 디바이스.
  24. 제 23 항에 있어서,
    상기 프로세서는, 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하는 것이,
    상기 웹 페이지의 웹 페이지 엘리먼트 정보에 기초하여 서브-트리가 선험으로 독립적임을 예측하는 것; 및
    DOM 트리의 선험적 독립적인 부분의 외부에 태스크를 형성하는 것을 포함하도록 하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  25. 제 23 항에 있어서,
    상기 프로세서는,
    특정 정보가 결정되는 경우에 서브-트리가 조건부 독립적임을 상기 웹 페이지의 엘리먼트 정보에 기초하여 예측하는 것;
    상기 특정 정보를 획득하기 위하여 태스크를 수행하는 것; 및
    획득된 특정 정보를 사용하여 DOM 트리의 조건부 독립적 부분의 외부의 태스크를 수행하는 것을 추가로 포함하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  26. 제 25 항에 있어서,
    상기 프로세서는, 상기 특정 정보를 획득하기 위하여 태스크를 수행하는 것이, 상기 특정 정보를 계산하는 것을 포함하도록 하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  27. 제 25 항에 있어서,
    상기 프로세서는, 상기 특정 정보를 획득하기 위하여 태스크를 수행하는 것이, 추측에 기초하여 상기 특정 정보를 결정하는 것을 포함하도록 하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  28. 제 23 항에 있어서,
    상기 프로세서는, 웹 페이지 엘리먼트 레이아웃 크기, 위치, CSS 스타일 속성들, 서브-트리 크기, HTML 태그, 부모 HTML 태그 및 웹 페이지 특징 정보 중 적어도 하나를 포함하는 웹 페이지 엘리먼트 정보를 수집하는 것을 추가로 포함하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  29. 제 23 항에 있어서,
    상기 프로세서는, 상기 웹 페이지의 DOM 트리의 서브-트리가 독립적이지 않음을 그리고 상기 서브-트리가 동시에 프로세싱될 수 없음을 결정하기 위하여, 예측된 서브-트리 독립성을 사용하는 것을 더 포함하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  30. 제 23 항에 있어서,
    상기 프로세서는, 상기 머신 학습 분석을 수행하고 서브-트리 독립성을 예측하여 상기 웹 페이지의 부분들을 동시에 프로세싱하기 위하여 단일 웹 브라우저를 사용하는 것을 더 포함하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  31. 제 23 항에 있어서,
    상기 프로세서는,
    복수의 업데이트된 웹 페이지들을 프로세싱함으로써 상기 분류자를 업데이트하는 것;
    업데이트된 웹 페이지 엘리먼트 정보를 수집하는 것; 및
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 추가 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것을 더 포함하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  32. 제 23 항에 있어서,
    상기 프로세서는, 복수의 웹 페이지들을 프로세싱하는 것 및 웹 페이지 엘리먼트 정보를 수집하는 것이 상기 컴퓨팅 디바이스상에서 동작하는 계장화 브라우저에서 달성되도록 하는 동작들을 수행하는 프로세서 실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  33. 제 23 항에 있어서,
    상기 프로세서는, 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하는 것이 상기 분류자에 의해 수행되도록 하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되며, 상기 분류자는 스케줄링 알고리즘에 서브-트리 독립성 데이터를 제공하는,
    컴퓨팅 디바이스.
  34. 제 33 항에 있어서,
    상기 프로세서는, 상기 스케줄링 알고리즘이 상기 웹 페이지의 부분들을 동시에 프로세싱하기 위하여 예측된 서브-트리 독립성을 사용하도록 하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  35. 제 23 항에 있어서,
    상기 프로세서는, 미리 결정된 스타일 시트 언어 코딩의 프리젠테이션 시맨틱스에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것을 더 포함하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  36. 제 23 항에 있어서,
    상기 프로세서는, DOM 트리의 제 1 독립적인 서브-트리를 상기 DOM 트리의 제 2 종속적인 서브-트리를 렌더링하기 전에 렌더링하기 위하여, 상기 예측된 서브-트리 독립성을 사용하는 것을 더 포함하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  37. 제 23 항에 있어서,
    상기 프로세서는,
    인터넷으로부터의 복수의 웹 페이지들을 연속적으로 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것;
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 연속적으로 수행하는 것; 및
    식별된 패턴들 및 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 상기 분류자를 업데이트하는 것을 더 포함하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  38. 제 23 항에 있어서,
    상기 프로세서는,
    웹 페이지들의 제 1 세트를 프로세싱하며 상기 웹 페이지의 제 1 세트와 연관된 웹 페이지 엘리먼트 정보를 수집하는 것, 및 패턴들의 제 1 세트를 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것;
    렌더링될 부분들을 동시에 프로세싱하기 위하여, 상기 웹 페이지들의 제 1 세트의 예측된 서브-트리 독립성과 연관된 상기 패턴들의 제 1 세트를 사용하는 것; 및
    추가적인 웹 페이지 엘리먼트 정보를 수집하고 연속 방식으로 상기 패턴들의 제 1 세트를 보충할 추가 패턴들을 식별할 머신 분석을 수행함으로써, 동적 방식으로 상기 패턴들의 제 1 세트를 연속적으로 업데이트하는 것을 더 포함하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  39. 제 38 항에 있어서,
    상기 프로세서는, 패턴들의 제 2 세트를 식별하기 위하여 웹 페이지들의 제 2 세트를 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것, 및 상기 패턴들의 제 1 세트를 업데이트하기 위하여 상기 패턴들의 제 2 세트를 사용하는 것을 더 포함하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  40. 제 23 항에 있어서,
    상기 프로세서는, HTML 코딩에서 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것을 더 포함하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    컴퓨팅 디바이스.
  41. 제 40 항에 있어서,
    HTML 코딩은 병렬 프로세싱 능력을 표시하는 DOM 트리의 제 1 서브-트리를 포함하며; HTML 코딩은 또한 제 2 서브-트리의 병렬 프로세싱 능력에 대하여 침묵하는 제 2 서브-트리를 포함하며, 상기 분류자는 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 웹 페이지 엘리먼트들의 제 2 서브-트리의 서브-트리 독립성을 예측하는,
    컴퓨팅 디바이스.
  42. 서버로서,
    통신 네트워크에 상호 접속된 네트워크 인터페이스;
    내부 메모리; 및
    상기 네트워크 인터페이스 및 상기 내부 메모리에 커플링된 프로세서를 포함하며;
    상기 프로세서는,
    상기 통신 네트워크에 접속된 적어도 하나의 컴퓨팅 디바이스로부터 웹 페이지 엘리먼트 정보를 수신하는 것 ― 상기 웹 페이지 엘리먼트 정보는 복수의 웹 페이지들을 프로세싱하는 동안 상기 적어도 하나의 컴퓨팅 디바이스에 의해 수집됨 ―;
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것; 및
    상기 적어도 하나의 컴퓨팅 디바이스로 하여금 웹 페이지의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하도록 하고, 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여 예측된 서브-트리 독립성을 사용하도록 하는 포맷에서, 상기 적어도 하나의 컴퓨팅 디바이스에 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 식별된 패턴들에 관한 정보를 전송하는 것을 포함하는 동작들을 수행하는 프로세서-실행가능 명령들로 구성되는,
    서버.
  43. 통신 시스템으로서,
    통신 네트워크에 커플링된 복수의 컴퓨팅 디바이스들; 및
    상기 통신 네트워크에 커플링된 서버를 포함하며;
    상기 복수의 컴퓨팅 디바이스들 각각은
    복수의 웹 페이지들을 프로세싱하며 웹 페이지 엘리먼트 정보를 수집하는 것; 및
    수집된 웹 페이지 엘리먼트 정보를 상기 서버에 전송하는 것을 포함하는 동작들을 수행하도록 구성되는 프로세서를 포함하며;
    상기 서버는,
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것; 및
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 식별된 패턴들에 관한 정보를 상기 복수의 컴퓨팅 디바이스들에 전송하는 것을 포함하는 동작들을 수행하도록 구성되는 프로세서를 포함하며;
    상기 복수의 컴퓨팅 디바이스들 각각의 프로세서는,
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 식별된 패턴들에 관한 정보를 상기 서버로부터 수신하는 것;
    웹 페이지의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하도록 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 식별된 패턴들에 관한 정보를 사용하는 것; 및
    렌더링될 웹페이지의 부분들을 동시에 프로세싱하기 위하여 예측된 서브-트리 독립성을 사용하는 것을 포함하는 동작들을 수행하도록 추가로 구성되는,
    통신 시스템.
  44. 제 43 항에 있어서,
    상기 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것은, 집합화된 웹 페이지 엘리먼트 정보를 상기 서버에서 생성하는 것을 포함하는,
    통신 시스템.
  45. 제 43 항에 있어서,
    상기 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 것은, 수신된 집합화된 웹 페이지 엘리먼트 정보 상에서 수행되는 머신 학습 분석에 기초하여 서브-트리 독립성을 예측하기 위하여 상기 복수의 컴퓨팅 디바이스들에서 동작하는 분류자를 트레이닝하는 것을 포함하는,
    통신 시스템.
  46. 컴퓨팅 디바이스로서,
    복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하기 위한 수단;
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하기 위한 수단;
    웹 페이지의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하기 위한 수단; 및
    렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하기 위한 수단을 포함하는,
    컴퓨팅 디바이스.
  47. 제 46 항에 있어서,
    상기 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하기 위한 수단은,
    상기 웹 페이지의 웹 페이지 엘리먼트 정보에 기초하여 서브-트리가 선험으로 독립적임을 예측하기 위한 수단; 및
    DOM 트리의 선험적 독립적인 부분의 외부에 태스크를 형성하기 위한 수단을 포함하는,
    컴퓨팅 디바이스.
  48. 제 46 항에 있어서,
    특정 정보가 결정되는 경우에 서브-트리가 조건부 독립적임을 상기 웹 페이지의 엘리먼트 정보에 기초하여 예측하기 위한 수단;
    상기 특정 정보를 획득하기 위하여 태스크를 수행하기 위한 수단; 및
    획득된 특정 정보를 사용하여 DOM 트리의 조건부 독립적인 부분의 외부의 태스크를 수행하기 위한 수단을 더 포함하는,
    컴퓨팅 디바이스.
  49. 제 48 항에 있어서,
    상기 특정 정보를 획득하기 위하여 태스크를 수행하기 위한 수단은, 상기 특정 정보를 계산하기 위한 수단을 포함하는,
    컴퓨팅 디바이스.
  50. 제 48 항에 있어서,
    상기 특정 정보를 획득하기 위하여 태스크를 수행하기 위한 수단은, 추측에 기초하여 상기 특정 정보를 결정하기 위한 수단을 포함하는,
    컴퓨팅 디바이스.
  51. 제 46 항에 있어서,
    웹 페이지 엘리먼트 레이아웃 크기, 위치, CSS 스타일 속성들, 서브-트리 크기, HTML 태그, 부모 HTML 태그 및 웹 페이지 특징 정보 중 적어도 하나를 포함하는 웹 페이지 엘리먼트 정보를 수집하기 위한 수단을 더 포함하는,
    컴퓨팅 디바이스.
  52. 제 46 항에 있어서,
    상기 웹 페이지의 DOM 트리의 서브-트리가 독립적이지 않음을 그리고 상기 서브-트리가 동시에 프로세싱될 수 없음을 결정하기 위하여, 예측된 서브-트리 독립성을 사용하기 위한 수단을 더 포함하는,
    컴퓨팅 디바이스.
  53. 제 46 항에 있어서,
    상기 머신 학습 분석을 수행하고 서브-트리 독립성을 예측하여 상기 웹 페이지의 부분들을 동시에 프로세싱하기 위하여 단일 웹 브라우저를 사용하기 위한 수단을 더 포함하는,
    컴퓨팅 디바이스.
  54. 제 46 항에 있어서,
    상기 분류자를 업데이트하기 위한 수단을 더 포함하며;
    상기 분류자를 업데이트하기 위한 수단은,
    복수의 업데이트된 웹 페이지들을 프로세싱하기 위한 수단;
    업데이트된 웹 페이지 엘리먼트 정보를 수집하기 위한 수단; 및
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 추가 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하기 위한 수단을 포함하는,
    컴퓨팅 디바이스.
  55. 제 46 항에 있어서,
    상기 복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하기 위한 수단은, 상기 컴퓨팅 디바이스상에서 동작하는 계장화 브라우저를 사용하기 위한 수단을 포함하는,
    컴퓨팅 디바이스.
  56. 제 46 항에 있어서,
    스케줄링 알고리즘에 서브-트리 독립성 데이터를 제공하기 위한 수단을 더 포함하며;
    상기 서브-트리 독립성 데이터를 제공하기 위한 수단은, 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위한 수단을 포함하는,
    컴퓨팅 디바이스.
  57. 제 56 항에 있어서,
    상기 스케줄링 알고리즘은 상기 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하는,
    컴퓨팅 디바이스.
  58. 제 46 항에 있어서,
    미리 결정된 스타일 시트 언어 코딩의 프리젠테이션 시맨틱스에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하기 위한 수단을 더 포함하는,
    컴퓨팅 디바이스.
  59. 제 46 항에 있어서,
    DOM 트리의 제 1 독립적인 서브-트리를 상기 DOM 트리의 제 2 종속적인 서브-트리를 렌더링하기 전에 렌더링하기 위하여, 예측된 서브-트리 독립성을 사용하기 위한 수단을 더 포함하는,
    컴퓨팅 디바이스.
  60. 제 46 항에 있어서,
    인터넷으로부터의 복수의 웹 페이지들을 연속적으로 프로세싱하며 웹 페이지 엘리먼트 정보를 수집하기 위한 수단;
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 연속적으로 수행하기 위한 수단; 및
    식별된 패턴들 및 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 상기 분류자를 업데이트하기 위한 수단을 더 포함하는,
    컴퓨팅 디바이스.
  61. 제 46 항에 있어서,
    웹 페이지들의 제 1 세트를 프로세싱하며, 상기 웹 페이지의 제 1 세트와 연관된 웹 페이지 엘리먼트 정보를 수집하고, 패턴들의 제 1 세트를 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하기 위한 수단;
    렌더링될 부분들을 동시에 프로세싱하기 위하여, 상기 웹 페이지들의 제 1 세트의 예측된 서브-트리 독립성과 연관된 상기 패턴들의 제 1 세트를 사용하기 위한 수단; 및
    추가적인 웹 페이지 엘리먼트 정보를 수집하고 연속 방식으로 상기 패턴들의 제 1 세트를 보충할 추가 패턴들을 식별할 머신 분석을 수행함으로써, 동적 방식으로 상기 패턴들의 제 1 세트를 연속적으로 업데이트하기 위한 수단을 더 포함하는,
    컴퓨팅 디바이스.
  62. 제 61 항에 있어서,
    패턴들의 제 2 세트를 식별하기 위하여 웹 페이지들의 제 2 세트를 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하며, 상기 패턴들의 제 1 세트를 업데이트하기 위하여 상기 패턴들의 제 2 세트를 사용하기 위한 수단을 더 포함하는,
    컴퓨팅 디바이스.
  63. 제 46 항에 있어서,
    HTML 코딩에서 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하기 위한 수단을 더 포함하는,
    컴퓨팅 디바이스.
  64. 제 63 항에 있어서,
    HTML 코딩은 병렬 프로세싱 능력을 표시하는 DOM 트리의 제 1 서브-트리를 포함하며; HTML 코딩은 또한 제 2 서브-트리의 병렬 프로세싱 능력에 대하여 침묵하는 제 2 서브-트리를 포함하며, 상기 분류자는 상기 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 웹 페이지 엘리먼트들의 제 2 서브-트리의 서브-트리 독립성을 예측하는,
    컴퓨팅 디바이스.
  65. 서버로서,
    통신 네트워크에 접속된 적어도 하나의 컴퓨팅 디바이스로부터 웹 페이지 엘리먼트 정보를 수신하기 위한 수단 ― 상기 웹 페이지 엘리먼트 정보는 복수의 웹 페이지들을 프로세싱하는 동안 상기 적어도 하나의 컴퓨팅 디바이스에 의해 수집됨 ―;
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하기 위한 수단; 및
    상기 적어도 하나의 컴퓨팅 디바이스로 하여금 웹 페이지의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하도록 하고, 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여 예측된 서브-트리 독립성을 사용하도록 하는 포맷에서, 상기 적어도 하나의 컴퓨팅 디바이스에 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 식별된 패턴들에 관한 정보를 전송하기 위한 수단을 포함하는,
    서버.
  66. 웹페이지들을 수신하여 렌더링하기 위한 통신 시스템으로서,
    통신 네트워크에 커플링된 복수의 컴퓨팅 디바이스들; 및
    상기 통신 네트워크에 커플링된 서버를 포함하며;
    상기 복수의 컴퓨팅 디바이스들 각각은,
    복수의 웹 페이지들을 프로세싱하며 웹 페이지 엘리먼트 정보를 수집하기 위한 수단; 및
    수집된 웹 페이지 엘리먼트 정보를 상기 서버에 전송하기 위한 수단 포함하며;
    상기 서버는,
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하기 위한 수단; 및
    웹 페이지 엘리먼트 정보에 상관되는 식별된 레이아웃 독립성의 패턴들에 관한 정보를 상기 복수의 컴퓨팅 디바이스들에 전송하기 위한 수단을 포함하며;
    상기 복수의 컴퓨팅 디바이스들은,
    웹 페이지 엘리먼트 정보에 상관되는 식별된 레이아웃 독립성의 패턴들에 관한 정보를 상기 서버로부터 수신하기 위한 수단;
    웹 페이지의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하기 위하여 웹 페이지 엘리먼트에 상관되는 식별된 레이아웃 독립성의 패턴들에 관한 정보를 사용하기 위한 수단; 및
    렌더링될 웹페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하기 위한 수단을 포함하는,
    통신 시스템.
  67. 제 66 항에 있어서,
    상기 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하기 위한 수단은, 집합화된 웹 페이지 엘리먼트 정보를 상기 서버에서 생성하기 위한 수단을 포함하는,
    통신 시스템.
  68. 제 66 항에 있어서,
    상기 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하기 위한 수단은, 수신된 집합화된 웹 페이지 엘리먼트 정보 상에서 수행되는 머신 학습 분석에 기초하여 서브-트리 독립성을 예측하기 위하여 상기 복수의 컴퓨팅 디바이스들에서 동작하는 분류자를 트레이닝하기 위한 수단을 포함하는,
    통신 시스템.
  69. 프로세서-실행가능 명령들을 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 프로세서-실행가능 명령들은, 프로세서로 하여금,
    복수의 웹 페이지들을 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것;
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것;
    웹 페이지의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하는 것; 및
    렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하는 것을 포함하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  70. 제 69 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 프로세서로 하여금, 상기 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여, 예측된 서브-트리 독립성을 사용하는 것이,
    상기 웹 페이지의 웹 페이지 엘리먼트 정보에 기초하여 서브-트리가 선험으로 독립적임을 예측하는 것; 및
    DOM 트리의 선험적 독립적인 부분의 외부에 태스크를 형성하는 것을 포함하도록 하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  71. 제 69 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 프로세서로 하여금,
    특정 정보가 결정되는 경우에 서브-트리가 조건부 독립적임을 상기 웹 페이지의 엘리먼트 정보에 기초하여 예측하는 것;
    상기 특정 정보를 획득하기 위하여 태스크를 수행하는 것; 및
    획득된 특정 정보를 사용하여 DOM 트리의 조건부 독립적인 부분의 외부의 태스크를 수행하는 것을 더 포함하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  72. 제 71 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 프로세서로 하여금, 상기 특정 정보를 획득하기 위하여 태스크를 수행하는 것이 상기 특정 정보를 계산하는 것을 포함하도록 하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  73. 제 71 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 프로세서로 하여금, 상기 특정 정보를 획득하기 위하여 태스크를 수행하는 것이 추측에 기초하여 상기 특정 정보를 결정하는 것을 포함하도록 하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  74. 제 69 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 프로세서로 하여금, 웹 페이지 엘리먼트 레이아웃 크기, 위치, CSS 스타일 속성들, 서브-트리 크기, HTML 태그, 부모 HTML 태그 및 웹 페이지 특징 정보 중 적어도 하나를 포함하는 웹 페이지 엘리먼트 정보를 수집하는 것을 더 포함하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  75. 제 69 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 프로세서로 하여금, 상기 웹 페이지의 DOM 트리의 서브-트리가 독립적이지 않음을 그리고 상기 서브-트리가 동시에 프로세싱될 수 없음을 결정하기 위하여, 예측된 서브-트리 독립성을 사용하는 것을 더 포함하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  76. 제 69 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 프로세서로 하여금, 상기 머신 학습 분석을 수행하고 서브-트리 독립성을 예측하여 상기 웹 페이지의 부분들을 동시에 프로세싱하기 위하여 단일 웹 브라우저를 사용하는 것을 더 포함하는 동작들을 수행하도록 구성되는, 컴퓨터 판독가능 저장 매체.
  77. 제 69 항에 있어서, 저장된 프로세서-실행가능 명령들은, 프로세서로 하여금, 복수의 업데이트된 웹 페이지들을 프로세싱함으로써 상기 분류자를 업데이트하는 것; 업데이트된 웹 페이지 엘리먼트 정보를 수집하는 것; 및 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 추가 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것을 더 포함하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  78. 제 69 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 프로세서로 하여금, 복수의 웹 페이지들을 프로세싱하는 것 및 웹 페이지 엘리먼트 정보를 수집하는 것이 컴퓨팅 디바이스상에서 동작하는 계장화 브라우저에서 달성되도록 하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  79. 제 69 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 프로세서로 하여금, 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하는 것이, 상기 분류자에 의해 수행되도록 하는 동작들을 수행하도록 구성되며, 상기 분류자는 스케줄링 알고리즘에 서브-트리 독립성 데이터를 제공하는,
    컴퓨터 판독가능 저장 매체.
  80. 제 79 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 상기 스케줄링 알고리즘이 상기 웹 페이지의 부분들을 동시에 프로세싱하기 위하여 예측된 서브-트리 독립성을 사용하도록 하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  81. 제 69 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 프로세서로 하여금, 미리 결정된 스타일 시트 언어 코딩의 프리젠테이션 시맨틱스에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것을 더 포함하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  82. 제 69 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 프로세서로 하여금, DOM 트리의 제 1 독립적인 서브-트리를 상기 DOM 트리의 제 2 종속적인 서브-트리를 렌더링하기 전에 렌더링하기 위하여, 예측된 서브-트리 독립성을 사용하는 것을 더 포함하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  83. 제 69 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 프로세서로 하여금,
    인터넷으로부터 복수의 웹 페이지들을 연속적으로 프로세싱하며 웹 페이지 엘리먼트 정보를 수집하는 것;
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 연속적으로 수행하는 것; 및
    식별된 패턴들 및 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 상기 분류자를 업데이트하는 것을 더 포함하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  84. 제 69 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 프로세서로 하여금,
    웹 페이지들의 제 1 세트를 프로세싱하며 상기 웹 페이지의 제 1 세트와 연관된 웹 페이지 엘리먼트 정보를 수집하는 것 및 패턴들의 제 1 세트를 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것;
    렌더링될 부분들을 동시에 프로세싱하기 위하여, 상기 웹 페이지들의 제 1 세트의 예측된 서브-트리 독립성과 연관된 상기 패턴들의 제 1 세트를 사용하는 것; 및
    추가적인 웹 페이지 엘리먼트 정보를 수집하고 연속 방식으로 상기 패턴들의 제 1 세트를 보충할 추가 패턴들을 식별할 머신 분석을 수행함으로써, 동적 방식으로 상기 패턴들의 제 1 세트를 연속적으로 업데이트하는 것을 더 포함하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  85. 제 84 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 프로세서로 하여금, 패턴들의 제 2 세트를 식별하기 위하여 웹 페이지들의 제 2 세트를 프로세싱하고 웹 페이지 엘리먼트 정보를 수집하는 것, 및 상기 패턴들의 제 1 세트를 업데이트하기 위하여 상기 패턴들의 제 2 세트를 사용하는 것을 더 포함하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  86. 제 69 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 프로세서로 하여금, HTML 코딩에서 웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것을 더 포함하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
  87. 제 86 항에 있어서,
    저장된 프로세서-실행가능 명령들은, 프로세서로 하여금, HTML 코딩이 병렬 프로세싱 능력을 표시하는 DOM 트리의 제 1 서브-트리를 포함하도록 하는 동작들을 수행하도록 구성되며;
    HTML 코딩은 또한 제 2 서브-트리의 병렬 프로세싱 능력에 대하여 침묵하는 제 2 서브-트리를 포함하며, 상기 분류자는 웹 페이지 스크립트의 엘리먼트 정보에 기초하여 상기 웹 페이지 엘리먼트들의 제 2 서브-트리의 서브-트리 독립성을 예측하는,
    컴퓨터 판독가능 저장 매체.
  88. 프로세서-실행가능 명령들을 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 프로세서-실행가능 명령들은 네트워크에 커플링되는 프로세서 서버로 하여금,
    통신 네트워크에 접속된 복수의 컴퓨팅 디바이스들로부터 웹 페이지 엘리먼트 정보를 수신하는 것 ― 상기 웹 페이지 엘리먼트 정보는 복수의 웹 페이지들을 프로세싱하는 동안 상기 복수의 컴퓨팅 디바이스들에 의해 수집됨 ―;
    웹 페이지 엘리먼트 정보에 상관되는 레이아웃 독립성의 패턴들을 식별하기 위하여, 수집된 웹 페이지 엘리먼트 정보 상에서 머신 학습 분석을 수행하는 것; 및
    적어도 하나의 컴퓨팅 디바이스로 하여금 웹 페이지의 엘리먼트 정보에 기초하여 서브-트리 독립성을 예측하기 위하여 분류자를 트레이닝하고, 렌더링될 웹 페이지의 부분들을 동시에 프로세싱하기 위하여 예측된 서브-트리 독립성을 사용하도록 하는 포맷에서, 상기 적어도 하나의 컴퓨팅 디바이스에 웹 페이지 엘리먼트 정보에 상관되는 식별된 레이아웃 독립성의 패턴들에 관한 정보를 전송하는 것을 포함하는 동작들을 수행하도록 구성되는,
    컴퓨터 판독가능 저장 매체.
KR1020137027188A 2011-03-15 2012-03-12 웹 브라우저들에서 병렬 레이아웃에 대한 독립적인 태스크들을 식별하기 위한 머신 학습 방법 KR101657578B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161452694P 2011-03-15 2011-03-15
US61/452,694 2011-03-15
US13/182,244 2011-07-13
US13/182,244 US8510237B2 (en) 2011-03-15 2011-07-13 Machine learning method to identify independent tasks for parallel layout in web browsers
PCT/US2012/028780 WO2012125568A1 (en) 2011-03-15 2012-03-12 Machine learning method to identify independent tasks for parallel layout in web browsers

Publications (2)

Publication Number Publication Date
KR20130143718A KR20130143718A (ko) 2013-12-31
KR101657578B1 true KR101657578B1 (ko) 2016-09-19

Family

ID=46829276

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137027188A KR101657578B1 (ko) 2011-03-15 2012-03-12 웹 브라우저들에서 병렬 레이아웃에 대한 독립적인 태스크들을 식별하기 위한 머신 학습 방법

Country Status (6)

Country Link
US (1) US8510237B2 (ko)
EP (1) EP2686780A1 (ko)
JP (1) JP5819995B2 (ko)
KR (1) KR101657578B1 (ko)
CN (1) CN103443786B (ko)
WO (1) WO2012125568A1 (ko)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008047351A2 (en) 2006-10-19 2008-04-24 Checkmarx Ltd. Locating security vulnerabilities in source code
US9785700B2 (en) 2008-02-11 2017-10-10 Nuix Pty Ltd Systems and methods for load-balancing by secondary processors in parallelized indexing
WO2009102765A2 (en) 2008-02-11 2009-08-20 Nuix North America Inc. Parallelization of electronic discovery document indexing
US9928260B2 (en) 2008-02-11 2018-03-27 Nuix Pty Ltd Systems and methods for scalable delocalized information governance
EP2609506B1 (en) * 2010-08-24 2019-01-16 Checkmarx Ltd. Mining source code for violations of programming rules
US9912718B1 (en) 2011-04-11 2018-03-06 Viasat, Inc. Progressive prefetching
US8438474B1 (en) * 2011-04-27 2013-05-07 Google Inc. Speculative rendering during cache revalidation
US8839245B1 (en) 2012-06-18 2014-09-16 Bromium, Inc. Transferring files using a virtualized application
US9146909B2 (en) * 2011-07-27 2015-09-29 Qualcomm Incorporated Web browsing enhanced by cloud computing
US10630751B2 (en) 2016-12-30 2020-04-21 Google Llc Sequence dependent data message consolidation in a voice activated computer network environment
US10956485B2 (en) 2011-08-31 2021-03-23 Google Llc Retargeting in a search environment
US8650188B1 (en) 2011-08-31 2014-02-11 Google Inc. Retargeting in a search environment
KR101340588B1 (ko) * 2012-02-29 2013-12-11 주식회사 팬택 웹페이지 구성방법 및 그 장치
US9734131B1 (en) * 2012-06-18 2017-08-15 Bromium, Inc. Synchronizing history data across a virtualized web browser
US11023088B2 (en) 2012-06-18 2021-06-01 Hewlett-Packard Development Company, L.P. Composing the display of a virtualized web browser
US9201850B1 (en) * 2012-06-18 2015-12-01 Bromium, Inc. Composing the display of a virtualized web browser
US10095662B1 (en) 2012-06-18 2018-10-09 Bromium, Inc. Synchronizing resources of a virtualized browser
US9727534B1 (en) * 2012-06-18 2017-08-08 Bromium, Inc. Synchronizing cookie data using a virtualized browser
US9348936B2 (en) * 2012-07-25 2016-05-24 Oracle International Corporation Heuristic caching to personalize applications
US9898445B2 (en) * 2012-08-16 2018-02-20 Qualcomm Incorporated Resource prefetching via sandboxed execution
US20140053064A1 (en) * 2012-08-16 2014-02-20 Qualcomm Incorporated Predicting the usage of document resources
US10261938B1 (en) * 2012-08-31 2019-04-16 Amazon Technologies, Inc. Content preloading using predictive models
US20150067475A1 (en) * 2013-08-30 2015-03-05 Wal-Mart Stores, Inc. Web Application Framework
US9311422B2 (en) * 2013-09-12 2016-04-12 Adobe Systems Incorporated Dynamic simulation of a responsive web page
US9703757B2 (en) 2013-09-30 2017-07-11 Google Inc. Automatically determining a size for a content item for a web page
US10431209B2 (en) 2016-12-30 2019-10-01 Google Llc Feedback controller for data transmissions
US10614153B2 (en) 2013-09-30 2020-04-07 Google Llc Resource size-based content item selection
US20150135061A1 (en) * 2013-11-08 2015-05-14 Qualcomm Incorporated Systems and methods for parallel traversal of document object model tree
CN107077541B (zh) * 2014-03-24 2020-01-03 华为技术有限公司 应用于动态自适应流媒体的部分url签名系统和方法
US10855797B2 (en) 2014-06-03 2020-12-01 Viasat, Inc. Server-machine-driven hint generation for improved web page loading using client-machine-driven feedback
CN104063488B (zh) * 2014-07-07 2017-09-01 成都安恒信息技术有限公司 一种半自动化学习式的表单特征提取方法
US10826930B2 (en) 2014-07-22 2020-11-03 Nuix Pty Ltd Systems and methods for parallelized custom data-processing and search
WO2016040784A2 (en) 2014-09-11 2016-03-17 The Medical College Of Wisconsin, Inc. Systems and methods for estimating histological features from medical images using a trained model
US20160103799A1 (en) * 2014-10-08 2016-04-14 Connotate, Inc. Methods and systems for automated detection of pagination
JP6575099B2 (ja) * 2015-03-24 2019-09-18 富士通株式会社 運用操作管理プログラム、運用操作管理装置および運用操作管理方法
US11159603B2 (en) 2015-04-15 2021-10-26 Hyland Switzerland Sàrl Cross-platform module for loading across a plurality of device types
US11200249B2 (en) 2015-04-16 2021-12-14 Nuix Limited Systems and methods for data indexing with user-side scripting
RU2632149C2 (ru) * 2015-05-06 2017-10-02 Общество С Ограниченной Ответственностью "Яндекс" Система, способ и постоянный машиночитаемый носитель для проверки веб-страниц
US10769351B2 (en) * 2015-05-08 2020-09-08 Citrix Systems, Inc. Rendering based on a document object model
US9965451B2 (en) 2015-06-09 2018-05-08 International Business Machines Corporation Optimization for rendering web pages
US10425427B2 (en) 2015-06-19 2019-09-24 Futurewei Technologies, Inc. Template uniform resource locator signing
RU2638015C2 (ru) * 2015-06-30 2017-12-08 Общество С Ограниченной Ответственностью "Яндекс" Способ идентификации целевого объекта на веб-странице
EP3341854B1 (en) 2015-09-14 2018-12-19 ViaSat, Inc. Machine-driven crowd-disambiguation of data resources
US10296580B1 (en) 2015-09-18 2019-05-21 Amazon Technologies, Inc. Delivering parsed content items
US10127210B1 (en) * 2015-09-25 2018-11-13 Amazon Technologies, Inc. Content rendering
US10601894B1 (en) 2015-09-28 2020-03-24 Amazon Technologies, Inc. Vector-based encoding for content rendering
US10691750B1 (en) 2015-09-28 2020-06-23 Amazon Technologies, Inc. Browser configured to efficiently store browsing session state
US10241983B1 (en) 2015-09-28 2019-03-26 Amazon Technologies, Inc. Vector-based encoding for content rendering
CN116610884A (zh) 2015-10-20 2023-08-18 维尔塞特公司 使用自动浏览群集更新提示模型
US11870836B2 (en) 2015-12-04 2024-01-09 Viasat, Inc. Accelerating connections to a host server
US10341345B1 (en) 2015-12-15 2019-07-02 Amazon Technologies, Inc. Network browser configuration
US10348797B1 (en) 2015-12-15 2019-07-09 Amazon Technologies, Inc. Network browser configuration
US20170185898A1 (en) * 2015-12-26 2017-06-29 Arnab Paul Technologies for distributed machine learning
US11775850B2 (en) 2016-01-27 2023-10-03 Microsoft Technology Licensing, Llc Artificial intelligence engine having various algorithms to build different concepts contained within a same AI model
US11120299B2 (en) 2016-01-27 2021-09-14 Microsoft Technology Licensing, Llc Installation and operation of different processes of an AI engine adapted to different configurations of hardware located on-premises and in hybrid environments
US10586173B2 (en) 2016-01-27 2020-03-10 Bonsai AI, Inc. Searchable database of trained artificial intelligence objects that can be reused, reconfigured, and recomposed, into one or more subsequent artificial intelligence models
US11841789B2 (en) 2016-01-27 2023-12-12 Microsoft Technology Licensing, Llc Visual aids for debugging
US11868896B2 (en) 2016-01-27 2024-01-09 Microsoft Technology Licensing, Llc Interface for working with simulations on premises
CN107368487B (zh) * 2016-05-12 2020-09-29 阿里巴巴集团控股有限公司 一种页面组件动态布局方法、装置及客户端
CA3024078C (en) * 2016-05-29 2024-04-09 Wix.Com Ltd. Creation and update of hierarchical websites based on collected business knowledge
GB2558870A (en) * 2016-10-25 2018-07-25 Parrotplay As Internet browsing
CN108228641A (zh) * 2016-12-21 2018-06-29 中国移动通信集团辽宁有限公司 网页数据分析的方法、设备和系统
US11087002B2 (en) 2017-05-10 2021-08-10 Checkmarx Ltd. Using the same query language for static and dynamic application security testing tools
WO2018236674A1 (en) * 2017-06-23 2018-12-27 Bonsai Al, Inc. HIERARCHICAL DECOMPOSITION DEEPENING REINFORCEMENT LEARNING FOR A MODEL OF ARTIFICIAL INTELLIGENCE
US10460018B1 (en) * 2017-07-31 2019-10-29 Amazon Technologies, Inc. System for determining layouts of webpages
US11481640B2 (en) * 2017-09-29 2022-10-25 Oracle International Corporation Directed trajectories through communication decision tree using iterative artificial intelligence
US11321614B2 (en) 2017-09-29 2022-05-03 Oracle International Corporation Directed trajectories through communication decision tree using iterative artificial intelligence
US10459609B2 (en) * 2018-04-03 2019-10-29 Palantir Technologies Inc. Multi-stage data page rendering
CN112470154B (zh) * 2018-08-17 2024-03-05 华为云计算技术有限公司 检测web网页安全性的方法和装置
KR102643444B1 (ko) 2018-09-27 2024-03-06 구글 엘엘씨 자동 내비게이션을 용이하게 하기 위한 웹 페이지 분석
WO2020167066A1 (en) * 2019-02-15 2020-08-20 Samsung Electronics Co., Ltd. Method and electronic device for machine learning based prediction of subsequent user interface layouts
CN110018869B (zh) 2019-02-20 2021-02-05 创新先进技术有限公司 通过强化学习向用户展示页面的方法及装置
EP3973419A4 (en) * 2019-05-20 2023-03-29 Wix.com Ltd. SYSTEM AND METHOD FOR PROVIDING RESPONSIVE EDIT AND VIEWING, INTEGRATE HIERARCHICAL FLUID COMPONENTS AND DYNAMIC LAYOUT
CN111985637A (zh) * 2019-05-21 2020-11-24 苹果公司 具有多个处理任务的条件执行的机器学习模型
CN110309462B (zh) * 2019-07-10 2023-05-16 腾讯科技(深圳)有限公司 数据展示方法及系统
US10936807B1 (en) * 2019-10-16 2021-03-02 Capital One Services, Llc Systems and methods for displaying effects of code changes
US10922476B1 (en) * 2019-12-13 2021-02-16 Microsoft Technology Licensing, Llc Resource-efficient generation of visual layout information associated with network-accessible documents
US11443241B2 (en) * 2020-03-26 2022-09-13 Wipro Limited Method and system for automating repetitive task on user interface
EP3945441A1 (en) 2020-07-28 2022-02-02 Checkmarx Ltd. Detecting exploitable paths in application software that uses third-party libraries
CN112417345B (zh) * 2021-01-25 2021-04-13 北京小米移动软件有限公司 渲染方法、装置、电子设备及存储介质
US11528289B2 (en) * 2021-02-26 2022-12-13 At&T Intellectual Property I, L.P. Security mechanisms for content delivery networks
US11429406B1 (en) 2021-03-08 2022-08-30 Bank Of America Corporation System for implementing auto didactic content generation using reinforcement learning
US11727084B1 (en) * 2022-05-23 2023-08-15 Salesforce, Inc. Techniques for automatically configuring web components
CN115756449B (zh) * 2022-12-02 2023-06-06 之江实验室 一种页面复用方法、装置、存储介质及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007096844A (ja) 2005-09-29 2007-04-12 Nec Personal Products Co Ltd 文書表示方法及び文書表示装置
WO2010117748A2 (en) 2009-03-31 2010-10-14 Qualcomm Incorporated Apparatus and methods for rendering a page

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719291B2 (en) * 2007-04-24 2014-05-06 Lixto Software Gmbh Information extraction using spatial reasoning on the CSS2 visual box model
CN101329665A (zh) 2007-06-18 2008-12-24 国际商业机器公司 解析标记语言文档的方法和解析器
US20090248707A1 (en) 2008-03-25 2009-10-01 Yahoo! Inc. Site-specific information-type detection methods and systems
US7974934B2 (en) 2008-03-28 2011-07-05 Yahoo! Inc. Method for segmenting webpages by parsing webpages into document object modules (DOMs) and creating weighted graphs
CN101763357B (zh) * 2008-11-13 2016-09-14 北京搜狗科技发展有限公司 一种用于浏览器加载互联网资源的方法及系统
US8990289B2 (en) * 2009-02-27 2015-03-24 Oracle America, Inc. Server based framework for improving Ajax performance

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007096844A (ja) 2005-09-29 2007-04-12 Nec Personal Products Co Ltd 文書表示方法及び文書表示装置
WO2010117748A2 (en) 2009-03-31 2010-10-14 Qualcomm Incorporated Apparatus and methods for rendering a page

Also Published As

Publication number Publication date
KR20130143718A (ko) 2013-12-31
CN103443786A (zh) 2013-12-11
US8510237B2 (en) 2013-08-13
CN103443786B (zh) 2016-08-31
EP2686780A1 (en) 2014-01-22
WO2012125568A1 (en) 2012-09-20
JP5819995B2 (ja) 2015-11-24
US20120239598A1 (en) 2012-09-20
JP2014514634A (ja) 2014-06-19

Similar Documents

Publication Publication Date Title
KR101657578B1 (ko) 웹 브라우저들에서 병렬 레이아웃에 대한 독립적인 태스크들을 식별하기 위한 머신 학습 방법
KR102128571B1 (ko) 실시간 데이터플로우 프로그래밍을 위한 효율적인 상태 머신
US20200125482A1 (en) Code examples sandbox
US11163617B2 (en) Proactive notification of relevant feature suggestions based on contextual analysis
US11507677B2 (en) Image classification modeling while maintaining data privacy compliance
KR20150043475A (ko) 문서 자원들의 사용 예측
CN104583949A (zh) Web浏览器中的脚本的预处理
WO2020060640A1 (en) Relevance ranking of productivity features for determined context
WO2015066375A1 (en) Style sheet speculative preloading
CN112417133A (zh) 排序模型的训练方法和装置
US10891514B2 (en) Image classification pipeline
CN105094363A (zh) 表情符号的处理方法及装置
Zambre Adaptive Parallelism in Browsers
Han et al. Practice and evaluation of pagelet-based client-side rendering mechanism
Huang Research on Web front-end performance optimization of campus portal websites
CN117215947A (zh) 一种页面白屏检测方法、装置、计算机设备及存储介质
WO2022212445A1 (en) Advanced application of model operations in energy
Kohan et al. Automated Dataset Construction from Web Resources with Tool Kayur

Legal Events

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