Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Describe the page rendering process in a browser?

First of all, I am not interested in the entire request-response process as addressed by this question

What is the complete process from entering a url to the browser's address bar to get the rendered page in browser?

I want to know what goes on inside a browser, once it receives the html response from the server. The intent behind asking this question is to understand the inner details of client side scripting. Also it would be beneficial if you can explain in abstract concepts what a web browser comprises of. You may call them as CSS engine, javascript engine etc.The goal is to precisely visualize the web development I am doing.

Unfortunately, I did not find any web resources addressing this issue. Please forgive me if there are resources out there which explain these concepts. You may point to the resources (books, etc) if this question is too exhaustive to answer.

like image 961
pphanireddy Avatar asked Sep 22 '11 13:09

pphanireddy


People also ask

How does browser render a page?

When a web page is loaded, the browser first reads the HTML text and constructs DOM Tree from it. Then it processes the CSS whether that is inline, embedded, or external CSS and constructs the CSSOM Tree from it. After these trees are constructed, then it constructs the Render-Tree from it.

What is rendering in browser?

Rendering is a process used in web development that turns website code into the interactive pages users see when they visit a website. The term generally refers to the use of HTML, CSS, and JavaScript codes. The process is completed by a rendering engine, the software used by a web browser to render a web page.

What is meant by page rendering?

What does webpage rendering mean? Rendering a webpage is the process of turning HTML, CSS, and JavaScript code into an interactive page that website visitors expect to see when clicking on a link. Every website page is designed with the end user in mind.

How does the browser rendering engine work?

The rendering engine parses the chunks of HTML document and convert the elements to DOM nodes in a tree called the “content tree” or the “DOM tree”. It also parses both the external CSS files as well in style elements. While the DOM tree is being constructed, the browser constructs another tree, the render tree.


2 Answers

Please go through below steps and you should be clear with request lifecycle and how response is rendered.

  1. You type an URL into address bar in your preferred browser.

  2. The browser parses the URL to find the protocol, host, port,and path.

  3. It forms a HTTP request (that was most likely the protocol)

  4. To reach the host, it first needs to translate the human readable host into an IP number, and it does this by doing a DNS lookup on the host

  5. Then a socket needs to be opened from the user’s computer to that IP number, on the port specified (most often port 80)

  6. When a connection is open, the HTTP request is sent to the host The host forwards the request to the server software (most often Apache) configured to listen on the specified port

  7. The server inspects the request (most often only the path), and launches the server plugin needed to handle the request (corresponding to the server language you use, PHP, Java, .NET, Python?)

  8. The plugin gets access to the full request, and starts to prepare a HTTP response.

  9. To construct the response a database is (most likely) accessed. A database search is made, based on parameters in the path (or data) of the request

  10. Data from the database, together with other information the plugin decides to add, is combined into a long string of text (probably HTML).

  11. The plugin combines that data with some meta data (in the form of HTTP headers), and sends the HTTP response back to the browser.

  12. The browser receives the response, and parses the HTML (which with 95% probability is broken) in the response

  13. A DOM tree is built out of the broken HTML

  14. New requests are made to the server for each new resource that is found in the HTML source (typically images, style sheets, and JavaScript files).

  15. Go back to step 3 and repeat for each resource.

  16. Stylesheets are parsed, and the rendering information in each gets attached to the matching node in the DOM tree

  17. JavaScript is parsed and executed, and DOM nodes are moved and style information is updated accordingly

  18. The browser renders the page on the screen according to the DOM tree and the style information for each node

  19. You see the page on the screen

  20. You get annoyed the whole process was too slow.

like image 145
Subhash Chandra Avatar answered Oct 08 '22 23:10

Subhash Chandra


An excellent talk by Mozilla's David Baron discusses this in detail. It's a video entitled Faster HTML and CSS: Layout Engine Internals for Web Developers, and it walks you through the five steps of rendering a DOM tree to the screen:

  1. Construct the DOM
  2. Calculate styles
  3. Construct the rendering tree
  4. Compute layout
  5. Paint
like image 34
Chris Calo Avatar answered Oct 08 '22 22:10

Chris Calo