Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Webを支える技術

hondasports
September 02, 2024

 Webを支える技術

ブラウザにURLを入力してから表示されるまでの大きな流れを説明するスライドです。TCP/IP, DNS, HTTPの説明は薄く、主にブラウザがどのようにHTML, CSS, Javascriptを解釈し表示しているのかについてを濃いめに書いています。

hondasports

September 02, 2024
Tweet

More Decks by hondasports

Other Decks in Programming

Transcript

  1. (お断り) 今日話さないこと TCP, IP, DNS, HTTP, HTML, CSS, Javascript, ブラウザ(Chromiumな

    ど)の詳細仕様、歴史および最新の動向。 HTTPS, TLSなどセキュアなやり取りに関すること。 Vue, React, Angular, Svelteなどリアクティブプログラミングに関す ること。 本人もわからない所が多いので、是非教えて下さい Tatsuya Miyamoto
  2. 実際にtelnetを使って繋いでみます telnet xxx.xxx.xxx.xxx 3000 Trying xxx.xxx.xx.xxx... Connected to xxx. Escape

    character is '^]'. GET / HTTP/1.1 Host: xxx.xxx.xx.xxx HTTP/1.1 200 OK Content-Length: 232 Content-Disposition: inline; filename="index.html" Accept-Ranges: bytes ETag: "fa9b137e7a1d8c68e710ad1eaee6b99064333afb" Content-Type: text/html; charset=utf-8 Vary: Accept-Encoding Date: Fri, 30 Aug 2024 08:03:32 GMT Connection: keep-alive Keep-Alive: timeout=5 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>てすとです</title> </head> <body> HTMLだけのページです </body> </html>Connection closed by foreign host. Tatsuya Miyamoto
  3. Tokenizing (Characters -> Tokens) 文字列を一文字ずつ読取り以下のルールで塊に分けます。 < と > で囲まれているものはStartTag(開始タグ) </>

    と > で囲まれているものはEndTag(終了タグ) <!-- と --> で囲まれているものはComment(コメント) の W3C HTML5 standardのルールに従い、文字列を塊(トーク ン)に分け意味を与えます。 Tatsuya Miyamoto
  4. 基本的にHTMLとCSSのDOMツリーの構築にjavascriptの記述があ ると、DOMツリーの構築は停止します。(Parser blocking) ただし、最近のブラウザであれば <script> タグに defer や async な

    どのオプションを指定することで、DOMツリー構築を止めずに実 行することが可能です。 HTML script async, defer Tatsuya Miyamoto
  5. DOMとCSSOMを統合し、Render Treeが構築されます。 この時、ブラウザに表示するNodeのみで構築されます。 具体的な例として構築の対象から外れるのは、CSSで display: none が指定された要素や head のような要素です。 このRender

    Treeの構築はDOMとCSSOMの構築の完了後です。 CSSが巨大でDOMの構築は完了しているが、CSSOMの構築が完了 していない場合はレンダリングが遅れます。この事をRender blockingといいます。 レンダリング ブロック CSS Tatsuya Miyamoto
  6. 3. 受信したデータをブラウザに表示する Webブラウザのレンダリングの仕組みを理解する <script> タグに async / defer を付けた場合のタイミング ブラウザレンダリングの仕組み

    Webページがブラウザに表示されるまでに何が起こるのか? URLを打ち込んでEnterを押した時に何が起きているか_DNSによ る名前解決 『Webを支える技術』まとめ How Web Works オブジェクト モデルの構築 Tatsuya Miyamoto