2016년 5월 13일 금요일

WebEngine Preload


https://webkit.org/blog/166/optimizing-page-loading-in-web-browser/
http://ariya.ofilabs.com/2013/04/css-preload-scanner-in-webkit.html

ResourceFetcher를 보면 preloading을 구별하고 있다.
third_party/WebKit/Source/core/html/parser/HTMLPreloadScanner.cpp

1. HTMLDocumentParser는 근본적으로는 One time pass through 방식으로 동작한다.
    HTML 페이지를 Top에서 Bottom까지 한번에 읽고 넘어가지, 다시 뒤로 돌아가지 않는다.

2. 그런데 javascript는 HTML을 생산할 수 있다.

3. javascript가 HTML을 생산하고, HTMLDocumentParser가 다시 뒤로 돌아가기를 하지 않으려면,
    결국 javascript가 download 되고(별도 파일이라면), 실행완료 되기를 기다릴 수 밖에 없다.

4. 이 기다림이 동안 페이지 로딩 지연이 발생하게 된다.

5. 때문에 blocking 동안, 별도의 scanner를 돌려서, img, css 등 리소스 파일을 다운받게 한다.
    그게 HTMLPreloadScanner이다.

6. 실제 preloading은 ResourceFetcher가 담당한다.

댓글 없음:

댓글 쓰기