SlideShare a Scribd company logo
웹  브 라 우 저 는  
어 떻 게 동 작 하 나 ?(2)

          허 준 회  
  http://opensoftware.kr

        2011. 10/19
소 개

• 허 준 회 (joone@webkit.org, @joone_net)
• WebKit Committer
• WebKitGtk+, webkit-clutter 개 발 참 여




http://collabora.com
http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/
주 요   내 용

• DOM 트 리 & 렌 더      트 리
• Reflow & Repaint

Recommended for you

AWS 구축 겨���험 공유
AWS 구축 경험 공유AWS 구축 경험 공유
AWS 구축 경험 공유
aws chekit chekit.us cloud
Javascript and Web Performance
Javascript and Web PerformanceJavascript and Web Performance
Javascript and Web Performance

Javascript와 Web Performance에 대한 개략적인 소개 자료입니다. Web Performance와 Javascript 가속화에 대한 이슈들에 대해 정리해보았습니다.

accelerationjavascriptmeasuring
Jinyweb
JinywebJinyweb
Jinyweb

This is jinyweb presentation and education

jinyweb
주 요   실 행   흐 름
다 양 한     트 리    구 조     관 리




• 문 서  구 조
   o DOM 트 리 , Shadow DOM 트 리
• 레 이 아 웃
   o RenderObject 트 리
   o RenderStyle
   o RenderLayer 트 리
   o GraphicsLayer 트 리
•  문 자 열 레 이 아 웃
   o LineBox
DOM 트 리
<html>
  <body>
   <p> Hello World </p>
   <div style="position:absolute;
left:100px;top:150px">
  <img src="example.png"/></div>
  </body>
</html>
렌 더   트 리   (Render Tree)

 • 스 타 일 정 보 , 크 기 와 위 치 정 보 갖 고 있 음
 • Plug-in, 폰 트 , 이 미 지 , Shadow DOM 트 리 와   연
   결
 • 역 할
     o Layout
     o Painting
     o Hit Testing

Recommended for you

브라우저는 어떻게 동작하는가?
브라우저는 어떻게 동작하는가?브라우저는 어떻게 동작하는가?
브라우저는 어떻게 동작하는가?

브라우저의 동작원리에 대한 네이버 포스트를 요약하여 사내 스터디에서 발표한 자료

browserwebkitrendering engine
모듈시스템과 webpack
모듈시스템과 webpack모듈시스템과 webpack
모듈시스템과 webpack

모듈의 기원 모듈 시스템 번들러 Webpack

javascriptwebpack
크롬 확장 프로그램 만들기 - Qr code generator
크롬 확장 프로그램 만들기 - Qr code generator크롬 확장 프로그램 만들기 - Qr code generator
크롬 확장 프로그램 만들기 - Qr code generator

JSLounge 두 번째 세미나에서 사용한 발표 자료입니다. 구글 크롬에서 QR code를 만드는 확장 프로그램을 만드는 방법에 대한 내용입니다.

extensionjsloungechrome
렌 더 트 리   생 성
RenderLayer 트 리
다 음     조 건 에 서   생 성 됨
     웹 페 이 지 루 트 (RenderView)
     CSS position 이 명 확 한 경 우 (relative, absolute, fixed)
     CSS transform 이 적 용 된 경 우
     투 명 도 가 적 용 된 경 우 (CSS opacity)
     overflow, alpha mask, reflection 이 적 용 된 경 우
     3D context 는 가 진 <canvas> 엘 리 먼 트
     <video> 엘 리 먼 트
RenderStyle 트 리

• 모 든 CSS Style 정 보 갖 고 있 음
• 렌 더 트 리 가 소 유 함
• RenderObject 는 Style 을 공 유 함
RenderLayer

Recommended for you

킴스큐Rb 설치
킴스큐Rb 설치킴스큐Rb 설치
킴스큐Rb 설치
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기

Talk about H/W acc. and rendering performance of chrome, and one more short talk about ServiceWorker.

gdgdevfairperformancegdgkorea
Sever Side Rendering - 2019 Zeropage Devil's Camp
Sever Side Rendering - 2019 Zeropage Devil's CampSever Side Rendering - 2019 Zeropage Devil's Camp
Sever Side Rendering - 2019 Zeropage Devil's Camp

2019 Zeropage Devil's Camp

HW 가 속
Reflow 와   Repaint




           http://www.flickr.com/photos/robtrent/2243025112/in/photostream/
Main Thread 의   역 할
Reflow(Layout) & Repaint

• Reflow
  o각 엘 리 먼 트 를     화 면 에   배 치 하 기    위 해    위 치 와   크 기
    를 갖 도 록 하 과     정
• Repaint
  o Reflow 에 인 해   웹 페 이 지 전 체       또 는    일 부   영 역 을
    새 로 또 는 다 시    그 리 는 과 정

Recommended for you

Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles

Presentation of Social Tutorial Platform "Webbles" for Software Maestro First Stage Evaluation by TEAM BULLBACK (https://webbles.net)

webservicetutorialdevelopment
우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구

크롬 개발자 도구들의 다양한 기능들을 살펴봅니다.

chrome devtools
iOS9 소개
iOS9 소개iOS9 소개
iOS9 소개

iOS9에 새롭게 추가된 기능과 변화 등에 대한 소개

ipadiphoneios9
Reflow 예




           http://www.youtube.com/watch?v=nJtBUHyNBxs
iPhone 예

Reflow vs. Repaint
Reflow 발 생

•   DOM 트 리 수 정
•   Stylesheet 추 가
•   Style Property 수 정
•   브 라 우 저 창 크 기 조 정
•   편 집 ( 입 력 , ContentEditable)
Reflow 발 생




             http://www.phpied.com/rendering-repaint-reflowrelayout-restyle/

Recommended for you

Mean stack Start
Mean stack StartMean stack Start
Mean stack Start
mean
웹표준의 이해
웹표준의 이해웹표준의 이해
웹표준의 이해

웹사이트 개발을 중심으로 본 웹표준에 대한 이해

....?....?....?
JavaScript MEAN 스택
JavaScript MEAN 스택JavaScript MEAN 스택
JavaScript MEAN 스택
전 략   : DOM Tree, Render Tree 한 꺼 번 에   변 경
Reflow 발 생      최 소 화

• DOM, CSS 여 러 번 나 누 어 변 경 하 지 말 고 한 꺼 번 에   변
• InnerHTML vs. DOM API 성 능 과 비 교 와 유 사
Don't change individual styles




             http://www.phpied.com/rendering-repaint-reflowrelayout-restyle/
Batch DOM changes and perform them
"offline". 

• 임 시 변 경 을 저 장 하 기 위 해 documentFragment 사 용
• element.cloneNode 이 용
• display: none (1 reflow, repaint) 속 성 으 로 element 갖
  추 기

Recommended for you

Html5 ie9
Html5 ie9Html5 ie9
Html5 ie9

REMIX10에서 있었던 HTML5와 IE9 세션 발표자료입니다.

html5 ie9 remix 10
HTML과 CSS
HTML과 CSSHTML과 CSS
HTML과 CSS

HTML과 CSS

스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용

This document discusses Spring Core and bean configuration in Spring. It covers defining beans through XML, Java configuration using annotations, and Groovy bean configuration. It also discusses the Spring IoC container and different types of ApplicationContext, and how to define bean dependencies through constructor injection, setter injection, and method injection using the @Bean annotation in Java configuration.

springframework java spring javaconfig
Don't ask for computed styles excessively. 




                            http://www.phpied.com/rendering-repaint-reflowrelayout-restyle/
WebKit 내 부 에 서 는           ?

Element::clientHeight()
  Document::updateLayoutIgnorePendingStylesheets()
    Document::updateLayout();
      Document::updateStyleIfNeeded()
          Document::recalcStyle(NoChange);
      FrameView::layout(bool allowSubtree = true);
Reflow 가         발 생 하 는                DOM API (1)

ElementclientHeight, clientLeft, clientTop, clientWidth, focus(),
getBoundingClientRect(), getClientRects(), innerText,
offsetHeight, offsetLeft, offsetParent, offsetTop, offsetWidth,
outerText, scrollByLines(), scrollByPages(), scrollHeight,
scrollIntoView(), scrollIntoViewIfNeeded(), scrollLeft, scrollTop,
scrollWidth
Frame, Imageheight, width
RangegetBoundingClientRect(), getClientRects()




                 http://gent.ilcore.com/2011/03/how-not-to-trigger-layout-in-
Reflow 가       발 생 하 는                DOM API (1)

SVGLocatablecomputeCTM(), getBBox()
SVGTextContentgetCharNumAtPosition(),
getComputedTextLength(), getEndPositionOfChar(),
getExtentOfChar(), getNumberOfChars(), getRotationOfChar(),
getStartPositionOfChar(), getSubStringLength(),
selectSubString()
SVGUseinstanceRoot
windowgetComputedStyle(), scrollBy(), scrollTo(), scrollX,
scrollY, webkitConvertPointFromNodeToPage(),
webkitConvertPointFromPageToNode()



               http://gent.ilcore.com/2011/03/how-not-to-trigger-layout-in-webkit.html

Recommended for you

스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기

2015/4/23일 OKKY 정기 모임에서 발표한 자료입니다. 클린코드 11장과 12장의 내용을 기본 틀로 해서 내용을 구성해 봤습니다. 스프링을 이용해서 생성과 이용의 관심사 분리, 횡적 관심사 분리를 하게 되면 지속적으로 SW를 개선할 수 있다는 내용입니다.

spring자바객체지향
Lan architecture
Lan architectureLan architecture
Lan architecture

LAN architecture includes hardware, software, topology and MAC protocols. The three main components are the MAC protocol, network topology, and network operating system software. Common MAC protocols are CSMA/CD and token passing. Common topologies are bus, star, and ring. LAN architecture defines how devices connect and communicate on a local network.

Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)

NOTES: Since Android 4.4, the Webview was chromium based. So, some of content in this presentation is either invalid or out of date.

chromiumbrowserandroid
Layout 요 청   처 리
참 고
• How Browsers Work
  o http://www.html5rocks.com/en/tutorials/interna
    ls/howbrowserswork/
• Rendering in WebKit,
  o http://www.youtube.com/watch?v=RVnARGhhs9w
• How (not) to trigger a layout in WebKit
  o http://gent.ilcore.com/2011/03/how-not-to-trigger-layout-
    in-webkit.html
• Rendering: repaint, reflow/relayout, restyle
  o http://www.phpied.com/rendering-repaint-reflowrelayout-
    restyle/

More Related Content

What's hot

Learning HTML5
Learning HTML5Learning HTML5
Learning HTML5
Jin Joong Kim
 
HTML5 & CSS 살펴보기
HTML5 & CSS  살펴보기HTML5 & CSS  살펴보기
HTML5 & CSS 살펴보기
Suan Lee
 
Single Page Web
Single Page WebSingle Page Web
Single Page Web
종복 박
 
AWS 구축 경험 공유
AWS 구축 경험 공유AWS 구축 경험 공유
AWS 구축 경험 공유
민태 김
 
Javascript and Web Performance
Javascript and Web PerformanceJavascript and Web Performance
Javascript and Web Performance
Jonathan Jeon
 
Jinyweb
JinywebJinyweb
Jinyweb
hojin lee
 
브라우저는 어떻게 동작하는가?
브라우저는 어떻게 동작하는가?브라우저는 어떻게 동작하는가?
브라우저는 어떻게 동작하는가?
Minseok Jang
 
모듈시스템과 webpack
모듈시스템과 webpack모듈시스템과 webpack
모듈시스템과 webpack
DataUs
 
크롬 확장 프로그램 만들기 - Qr code generator
크롬 확장 프로그램 만들기 - Qr code generator크롬 확장 프로그램 만들기 - Qr code generator
크롬 확장 프로그램 만들기 - Qr code generator
JeongHwan Jang
 
킴스큐Rb 설치
킴스큐Rb 설치킴스큐Rb 설치
킴스큐Rb 설치
Gitaek kwon
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
Chang W. Doh
 
Sever Side Rendering - 2019 Zeropage Devil's Camp
Sever Side Rendering - 2019 Zeropage Devil's CampSever Side Rendering - 2019 Zeropage Devil's Camp
Sever Side Rendering - 2019 Zeropage Devil's Camp
MookeunJi
 
Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles
Wonkyung Lyu
 
우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구
Jae Sung Park
 
iOS9 소개
iOS9 소개iOS9 소개
iOS9 소개
Jae Sung Park
 
웹표준의 이해
웹표준의 이해웹표준의 이해
웹표준의 이해
Leehooan
 
JavaScript MEAN 스택
JavaScript MEAN 스택JavaScript MEAN 스택
JavaScript MEAN 스택
Tai Hoon KIM
 
Html5 ie9
Html5 ie9Html5 ie9
Html5 ie9
Reagan Hwang
 
HTML과 CSS
HTML과 CSSHTML과 CSS
HTML과 CSS
dgmong
 

What's hot (20)

Learning HTML5
Learning HTML5Learning HTML5
Learning HTML5
 
HTML5 & CSS 살펴보기
HTML5 & CSS  살펴보기HTML5 & CSS  살펴보기
HTML5 & CSS 살펴보기
 
Single Page Web
Single Page WebSingle Page Web
Single Page Web
 
AWS 구축 경험 공유
AWS 구축 경험 공유AWS 구축 경험 공유
AWS 구축 경험 공유
 
Javascript and Web Performance
Javascript and Web PerformanceJavascript and Web Performance
Javascript and Web Performance
 
Jinyweb
JinywebJinyweb
Jinyweb
 
브라우저는 어떻게 동작하는가?
브라우저는 어떻게 동작하는가?브라우저는 어떻게 동작하는가?
브라우저는 어떻게 동작하는가?
 
모듈시스템과 webpack
모듈시스템과 webpack모듈시스템과 webpack
모듈시스템과 webpack
 
크롬 확장 프로그램 만들기 - Qr code generator
크롬 확장 프로그램 만들기 - Qr code generator크롬 확장 프로그램 만들기 - Qr code generator
크롬 확장 프로그램 만들기 - Qr code generator
 
킴스큐Rb 설치
킴스큐Rb 설치킴스큐Rb 설치
킴스큐Rb 설치
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
 
Sever Side Rendering - 2019 Zeropage Devil's Camp
Sever Side Rendering - 2019 Zeropage Devil's CampSever Side Rendering - 2019 Zeropage Devil's Camp
Sever Side Rendering - 2019 Zeropage Devil's Camp
 
Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles
 
우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구
 
iOS9 소개
iOS9 소개iOS9 소개
iOS9 소개
 
Mean stack Start
Mean stack StartMean stack Start
Mean stack Start
 
웹표준의 이해
웹표준의 이해웹표준의 이해
웹표준의 이해
 
JavaScript MEAN 스택
JavaScript MEAN 스택JavaScript MEAN 스택
JavaScript MEAN 스택
 
Html5 ie9
Html5 ie9Html5 ie9
Html5 ie9
 
HTML과 CSS
HTML과 CSSHTML과 CSS
HTML과 CSS
 

Viewers also liked

스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
Sungchul Park
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기
Sungchul Park
 
Lan architecture
Lan architectureLan architecture
Lan architecture
Little Chixcath Guinet
 
Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)
Bin Chen
 
Webframeworks.kr의 소개
Webframeworks.kr의 소개Webframeworks.kr의 소개
Webframeworks.kr의 소개
WebFrameworks
 
3-1. css
3-1. css3-1. css
3-1. css
JinKyoungHeo
 
2016 W3C Conference #1 : 웹 개발의 현재와 미래
2016 W3C Conference #1 : 웹 개발의 현재와 미래2016 W3C Conference #1 : 웹 개발의 현재와 미래
2016 W3C Conference #1 : 웹 개발의 현재와 미래
양재동 코드랩
 
2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션
2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션
2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션
양재동 코드랩
 
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
Andrew J. Kim
 
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
JiandSon
 
사용자 경험 극대화를 위한 웹 서버 아키텍처
사용자 경험 극대화를 위한 웹 서버 아키텍처사용자 경험 극대화를 위한 웹 서버 아키텍처
사용자 경험 극대화를 위한 웹 서버 아키텍처
trustinlee
 
Lambda 란 무엇인가
Lambda 란 무엇인가Lambda 란 무엇인가
Lambda 란 무엇인가
Vong Sik Kong
 
어플리케이션 및 웹 개발
어플리케이션 및 웹 개발어플리케이션 및 웹 개발
어플리케이션 및 웹 개발
Leonardo Taehwan Kim
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
Sungchul Park
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
Sungchul Park
 
클라우드 어플리케이션의 필수조건
클라우드 어플리케이션의 필수조건클라우드 어플리케이션의 필수조건
클라우드 어플리케이션의 필수조건
Marcetto Co., Ltd
 
[133] 브라우저는 vsync를 어떻게 활용하고 있을까
[133] 브라우저는 vsync를 어떻게 활용하고 있을까[133] 브라우저는 vsync를 어떻게 활용하고 있을까
[133] 브라우저는 vsync를 어떻게 활용하고 있을까
NAVER D2
 
클라우드 도입 전략과 프로세스(강연자료)
클라우드 도입 전략과 프로세스(강연자료)클라우드 도입 전략과 프로세스(강연자료)
클라우드 도입 전략과 프로세스(강연자료)
Korea Advanced Institute of Science and Technology
 

Viewers also liked (20)

스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기
 
Lan architecture
Lan architectureLan architecture
Lan architecture
 
Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)
 
배포
배포배포
배포
 
발표자료
발표자료발표자료
발표자료
 
Webframeworks.kr의 소개
Webframeworks.kr의 소개Webframeworks.kr의 소개
Webframeworks.kr의 소개
 
3-1. css
3-1. css3-1. css
3-1. css
 
2016 W3C Conference #1 : 웹 개발의 현재와 미래
2016 W3C Conference #1 : 웹 개발의 현재와 미래2016 W3C Conference #1 : 웹 개발의 현재와 미래
2016 W3C Conference #1 : 웹 개발의 현재와 미래
 
2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션
2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션
2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션
 
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
 
2014.07.26 KSUG와 지앤선이 함께하는 ��크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
 
사용자 경험 극대화를 위한 웹 서버 아키텍처
사용자 경험 극대화를 위한 웹 서버 아키텍처사용자 경험 극대화를 위한 웹 서버 아키텍처
사용자 경험 극대화를 위한 웹 서버 아키텍처
 
Lambda 란 무엇인가
Lambda 란 무엇인가Lambda 란 무엇인가
Lambda 란 무엇인가
 
어플리케이션 및 웹 개발
어플리케이션 및 웹 개발어플리케이션 및 웹 개발
어플리케이션 및 웹 개발
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
 
클라우드 어플리케이션의 필수조건
클라우드 어플리케이션의 필수조건클라우드 어플리케이션의 필수조건
클라우드 어플리케이션의 필수조건
 
[133] 브라우저는 vsync를 어떻게 활용하고 있을까
[133] 브라우저는 vsync를 어떻게 활용하고 있을까[133] 브라우저는 vsync를 어떻게 활용하고 있을까
[133] 브라우저는 vsync를 어떻게 활용하고 있을까
 
클라우드 도입 전략과 프로세스(강연자료)
클라우드 도입 전략과 프로세스(강연자료)클라우드 도입 전략과 프로세스(강연자료)
클라우드 도입 전략과 프로세스(강연자료)
 

Similar to 웹 브라우저는 어떻게 동작하나? (2)

Reflow and repaint 성능 비용
Reflow and repaint 성능 비용Reflow and repaint 성능 비용
Reflow and repaint 성능 비용
Doo Sung Eom
 
ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기
Taegon Kim
 
React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기
WebFrameworks
 
HTML5 스펙 소개
HTML5 스펙 소개HTML5 스펙 소개
HTML5 스펙 소개
Toby Yun
 
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Sang Seok Lim
 
Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까?
Kim Hunmin
 
정해균 포트폴리오
정해균 포트폴리오정해균 포트폴리오
정해균 포트폴리오
Haegyun Jung
 
웹 표준의 미래- HTML5 (2006)
웹 표준의 미래- HTML5 (2006)웹 표준의 미래- HTML5 (2006)
웹 표준의 미래- HTML5 (2006)
Channy Yun
 
3.web의역사와browser
3.web의역사와browser3.web의역사와browser
3.web의역사와browser
cheonsu park
 
웹표준 (XHTML + CSS)
웹표준 (XHTML + CSS)웹표준 (XHTML + CSS)
웹표준 (XHTML + CSS)
ymtech
 
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
sung ki choi
 
웹표준(XHTML+CSS)
웹표준(XHTML+CSS)웹표준(XHTML+CSS)
웹표준(XHTML+CSS)
ymtech
 
좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON
Younghan Kim
 
2-2. html5
2-2. html52-2. html5
2-2. html5
JinKyoungHeo
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
중선 곽
 
Deview2013 track1 session7
Deview2013 track1 session7Deview2013 track1 session7
Deview2013 track1 session7
joshua wordsworth
 
Html5 소개 가이드
Html5 소개 가이드Html5 소개 가이드
Html5 소개 가이드
Jong-hyun Park
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
Terry Cho
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
SeungHyun Lee
 
20131217 html5
20131217 html520131217 html5
20131217 html5
DK Lee
 

Similar to 웹 브라우저는 어떻게 동작하나? (2) (20)

Reflow and repaint 성능 비용
Reflow and repaint 성능 비용Reflow and repaint 성능 비용
Reflow and repaint 성능 비용
 
ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기
 
React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기
 
HTML5 스펙 소개
HTML5 스펙 소개HTML5 스펙 소개
HTML5 스펙 소개
 
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
 
Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까?
 
정해균 포트폴리오
정해균 포트폴리오정해균 포트폴리오
정해균 포트폴리오
 
웹 표준의 미래- HTML5 (2006)
웹 표준의 미래- HTML5 (2006)웹 표준의 미래- HTML5 (2006)
웹 표준의 미래- HTML5 (2006)
 
3.web의역사와browser
3.web의역사와browser3.web의역사와browser
3.web의역사와browser
 
웹표준 (XHTML + CSS)
웹표준 (XHTML + CSS)웹표준 (XHTML + CSS)
웹표준 (XHTML + CSS)
 
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
 
웹표준(XHTML+CSS)
웹표준(XHTML+CSS)웹표준(XHTML+CSS)
웹표준(XHTML+CSS)
 
좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON
 
2-2. html5
2-2. html52-2. html5
2-2. html5
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
 
Deview2013 track1 session7
Deview2013 track1 session7Deview2013 track1 session7
Deview2013 track1 session7
 
Html5 소개 가이드
Html5 소개 가이드Html5 소개 가이드
Html5 소개 가이드
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
20131217 html5
20131217 html520131217 html5
20131217 html5
 

More from Joone Hur

Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Joone Hur
 
GNOME development on Tizen Mobile
GNOME development on Tizen MobileGNOME development on Tizen Mobile
GNOME development on Tizen Mobile
Joone Hur
 
How to use WebKitGtk+
How to use WebKitGtk+How to use WebKitGtk+
How to use WebKitGtk+
Joone Hur
 
WebKitGtk+ Project
WebKitGtk+ ProjectWebKitGtk+ Project
WebKitGtk+ Project
Joone Hur
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKit
Joone Hur
 
GNOME3 & 그놈 한국 공동체
GNOME3 & 그놈 한국 공동체GNOME3 & 그놈 한국 공동체
GNOME3 & 그놈 한국 공동체
Joone Hur
 
Web Standards Support in WebKit
Web Standards Support in WebKitWeb Standards Support in WebKit
Web Standards Support in WebKit
Joone Hur
 
WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010
Joone Hur
 
Fennec의 현재와 미래
Fennec의 현재와 미래Fennec의 현재와 미래
Fennec의 현재와 미래
Joone Hur
 

More from Joone Hur (9)

Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
 
GNOME development on Tizen Mobile
GNOME development on Tizen MobileGNOME development on Tizen Mobile
GNOME development on Tizen Mobile
 
How to use WebKitGtk+
How to use WebKitGtk+How to use WebKitGtk+
How to use WebKitGtk+
 
WebKitGtk+ Project
WebKitGtk+ ProjectWebKitGtk+ Project
WebKitGtk+ Project
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKit
 
GNOME3 & 그놈 한국 공동체
GNOME3 & 그놈 한국 공동체GNOME3 & 그놈 한국 공동체
GNOME3 & 그놈 한국 공동체
 
Web Standards Support in WebKit
Web Standards Support in WebKitWeb Standards Support in WebKit
Web Standards Support in WebKit
 
WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010
 
Fennec의 현재와 미래
Fennec의 현재와 미래Fennec의 현재와 미래
Fennec의 현재와 미래
 

웹 브라우저는 어떻게 동작하나? (2)

  • 1. 웹 브 라 우 저 는   어 떻 게 동 작 하 나 ?(2) 허 준 회   http://opensoftware.kr 2011. 10/19
  • 2. 소 개 • 허 준 회 (joone@webkit.org, @joone_net) • WebKit Committer • WebKitGtk+, webkit-clutter 개 발 참 여 http://collabora.com
  • 4. 주 요 내 용 • DOM 트 리 & 렌 더 트 리 • Reflow & Repaint
  • 5. 주 요 실 행 흐 름
  • 6. 다 양 한 트 리 구 조 관 리 • 문 서 구 조 o DOM 트 리 , Shadow DOM 트 리 • 레 이 아 웃 o RenderObject 트 리 o RenderStyle o RenderLayer 트 리 o GraphicsLayer 트 리 •  문 자 열 레 이 아 웃 o LineBox
  • 7. DOM 트 리 <html> <body> <p> Hello World </p> <div style="position:absolute; left:100px;top:150px"> <img src="example.png"/></div> </body> </html>
  • 8. 렌 더 트 리 (Render Tree) • 스 타 일 정 보 , 크 기 와 위 치 정 보 갖 고 있 음 • Plug-in, 폰 트 , 이 미 지 , Shadow DOM 트 리 와 연 결 • 역 할 o Layout o Painting o Hit Testing
  • 9. 렌 더 트 리 생 성
  • 10. RenderLayer 트 리 다 음 조 건 에 서 생 성 됨  웹 페 이 지 루 트 (RenderView)  CSS position 이 명 확 한 경 우 (relative, absolute, fixed)  CSS transform 이 적 용 된 경 우  투 명 도 가 적 용 된 경 우 (CSS opacity)  overflow, alpha mask, reflection 이 적 용 된 경 우  3D context 는 가 진 <canvas> 엘 리 먼 트  <video> 엘 리 먼 트
  • 11. RenderStyle 트 리 • 모 든 CSS Style 정 보 갖 고 있 음 • 렌 더 트 리 가 소 유 함 • RenderObject 는 Style 을 공 유 함
  • 14. Reflow 와 Repaint http://www.flickr.com/photos/robtrent/2243025112/in/photostream/
  • 15. Main Thread 의 역 할
  • 16. Reflow(Layout) & Repaint • Reflow o각 엘 리 먼 트 를 화 면 에 배 치 하 기 위 해 위 치 와 크 기 를 갖 도 록 하 과 정 • Repaint o Reflow 에 인 해 웹 페 이 지 전 체 또 는 일 부 영 역 을 새 로 또 는 다 시 그 리 는 과 정
  • 17. Reflow 예 http://www.youtube.com/watch?v=nJtBUHyNBxs
  • 19. Reflow 발 생 • DOM 트 리 수 정 • Stylesheet 추 가 • Style Property 수 정 • 브 라 우 저 창 크 기 조 정 • 편 집 ( 입 력 , ContentEditable)
  • 20. Reflow 발 생 http://www.phpied.com/rendering-repaint-reflowrelayout-restyle/
  • 21. 전 략 : DOM Tree, Render Tree 한 꺼 번 에 변 경
  • 22. Reflow 발 생 최 소 화 • DOM, CSS 여 러 번 나 누 어 변 경 하 지 말 고 한 꺼 번 에 변 • InnerHTML vs. DOM API 성 능 과 비 교 와 유 사
  • 23. Don't change individual styles http://www.phpied.com/rendering-repaint-reflowrelayout-restyle/
  • 24. Batch DOM changes and perform them "offline".  • 임 시 변 경 을 저 장 하 기 위 해 documentFragment 사 용 • element.cloneNode 이 용 • display: none (1 reflow, repaint) 속 성 으 로 element 갖 추 기
  • 25. Don't ask for computed styles excessively.  http://www.phpied.com/rendering-repaint-reflowrelayout-restyle/
  • 26. WebKit 내 부 에 서 는 ? Element::clientHeight()  Document::updateLayoutIgnorePendingStylesheets() Document::updateLayout(); Document::updateStyleIfNeeded() Document::recalcStyle(NoChange); FrameView::layout(bool allowSubtree = true);
  • 27. Reflow 가 발 생 하 는 DOM API (1) ElementclientHeight, clientLeft, clientTop, clientWidth, focus(), getBoundingClientRect(), getClientRects(), innerText, offsetHeight, offsetLeft, offsetParent, offsetTop, offsetWidth, outerText, scrollByLines(), scrollByPages(), scrollHeight, scrollIntoView(), scrollIntoViewIfNeeded(), scrollLeft, scrollTop, scrollWidth Frame, Imageheight, width RangegetBoundingClientRect(), getClientRects() http://gent.ilcore.com/2011/03/how-not-to-trigger-layout-in-
  • 28. Reflow 가 발 생 하 는 DOM API (1) SVGLocatablecomputeCTM(), getBBox() SVGTextContentgetCharNumAtPosition(), getComputedTextLength(), getEndPositionOfChar(), getExtentOfChar(), getNumberOfChars(), getRotationOfChar(), getStartPositionOfChar(), getSubStringLength(), selectSubString() SVGUseinstanceRoot windowgetComputedStyle(), scrollBy(), scrollTo(), scrollX, scrollY, webkitConvertPointFromNodeToPage(), webkitConvertPointFromPageToNode() http://gent.ilcore.com/2011/03/how-not-to-trigger-layout-in-webkit.html
  • 29. Layout 요 청 처 리
  • 30. 참 고 • How Browsers Work o http://www.html5rocks.com/en/tutorials/interna ls/howbrowserswork/ • Rendering in WebKit, o http://www.youtube.com/watch?v=RVnARGhhs9w • How (not) to trigger a layout in WebKit o http://gent.ilcore.com/2011/03/how-not-to-trigger-layout- in-webkit.html • Rendering: repaint, reflow/relayout, restyle o http://www.phpied.com/rendering-repaint-reflowrelayout- restyle/