


A brief analysis of the black box of browser loading, rendering and parsing processes_javascript skills
Use Fiddler to monitor. Under IE6, the resource download order is:
Obviously, the download order is from top to bottom, and the resources that appear first in the document stream are downloaded first. It is similar in IE8, Safari, Chrome and other browsers.
Firefox has optimized the download order:
Firefox will download js, css in advance, and delay downloading of images and other resources until later.
For rendering, use Fiddler to slow down the network speed. You can see that the css will be rendered to the page immediately after downloading, and the rendering and downloading will be performed simultaneously. The parsing and running of js are also similar.
Special testing has been done for js running and triggering of page loading related events. Under Firefox, open the test page:
[22:13:32.947] HTML Start[22:13:32.947] normal inline script run time[22:13:34.904] normal external script run time[22:13:35.775] [body] normal external script run time[22:13:35.789] [body end] normal external script run time[22:13:35.789] HTML End[22:13:35.791] deferred inline script run time[22:13:35.791] deferred external script run time[22:13:35.793] DOMContentLoaded[22:13:38.144] images[0] onload[22:13:38.328] images[1] onload[22:13:39.105] images[2] onload[22:13:39.105] images[3] onload[22:13:39.106] window.onload
Obviously, JS runs strictly in the order in the document flow. The deferred script will be run at the end (Note: Firefox 3.5 starts to support defer, and the support is perfect).
Look at IE8 again, the results are as follows:
[22:33:56.806] HTML Start[22:33:56.826] normal inline script run time[22:33:57.786] normal external script run time[22:33:57.812] deferred inline script run time[22:33:57.816] document.readyState = interactive[22:33:57.934] [body] normal external script run time[22:33:58.310] [body end] normal external script run time[22:33:58.310] HTML End[22:33:58.346] deferred external script run time[22:33:58.346] images[0].readyState = loading[22:33:58.346] images[0].readyState = complete[22:33:58.346] images[0] onload[22:33:58.361] doScroll[22:33:58.451] images[1].readyState = loading[22:33:58.479] images[1].readyState = complete[22:33:58.479] images[1] onload[22:33:58.794] images[2].readyState = loading[22:33:58.854] images[2].readyState = complete[22:33:58.854] images[2] onload[22:33:58.876] images[3].readyState = loading[22:33:58.876] images[3].readyState = complete[22:33:58.876] images[3] onload[22:33:58.887] document.readyState = complete[22:33:58.888] window.onload
It can be seen that under IE8, defer is only valid for external scripts and not for inline scripts. In addition, the closest thing to DOMContentLoaded is doScroll. This is why doScroll is widely used to simulate DOMContentLoaded. Caution: This is just a simulation and is not equivalent in detail.
You can also get a somewhat unexpected result: the script placed before the end of the body is still best placed in the domready event when executed. Whether under Firefox or IE, parsing to HTML End does not mean that the DOM can be operated safely, especially when the page is complex.
From the above data, we can also see the basis for YSlow performance optimization rules, which recommend placing styles at the top and scripts at the bottom.
Those who are interested can further test the situation of dynamically adding styles and scripts. It will be slightly different, but there is no special surprise.
Final summary:
The download order of page resources is from top to bottom, and the resources that appear first in the document flow are downloaded first (Note: There is concurrency, please refer to UA Profiler for details). When a certain style is downloaded, it will be rendered to the page immediately (reflecting the meaning of cascading in rendering in cascading style sheets). When a script is downloaded, it will be parsed and run immediately. Scripts are run strictly in the order in the document flow, and deferred scripts are run after normal scripts (under Firefox and IE).
Special attention should be paid to: when a script is running, the download of all resources under the script will be suspended (because the script may change the document flow or even jump to the page, the browser's pause policy is reasonable). Be careful with inline scripts, which can often block subsequent downloads.
Okay, no more nonsense. It is recommended that you test the above results yourself, test repeatedly, and test like crazy until you are dazzled, confused, and suddenly realize that you continue to be confused...

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



1. First open the design plan to be rendered in Kujiale. 2. Then open top view rendering under the rendering menu. 3. Then click Orthogonal in the parameter settings in the top view rendering interface. 4. Finally, after adjusting the model angle, click Render Now to render the orthogonal top view.

Vue page rendering is asynchronous. Vue uses asynchronous rendering, which can improve performance; if asynchronous updates are not used, the current component will be re-rendered every time the data is updated. For performance reasons, Vue will asynchronously update the view after this round of data updates.

Vue error: v-html cannot be used correctly to render dynamic HTML code. How to solve it? Introduction: In Vue development, we often need to dynamically render HTML code to display rich text content or dynamically generated user input. Vue provides the v-html directive to implement this function. However, sometimes we may encounter problems that cannot correctly render dynamic HTML code using v-html. This article will explore the causes of this problem and provide solutions. Problem description: In Vue, when we use v

Vue error: Unable to correctly use v-html to render HTML code, how to solve it? Vue is a popular JavaScript framework that can help us build interactive user interfaces. In Vue, we can use the v-html directive to render HTML code into templates. However, sometimes we may encounter a problem: the HTML code cannot be rendered correctly using v-html. This article will describe some common causes and solutions to help you solve this problem. The first possible reason is that the

In Vue3, v-for is considered the best way to render list data. v-for is a directive in Vue that allows developers to iterate through an array or object and generate a piece of HTML code for each item. The v-for directive is one of the most powerful template directives available to developers. In Vue3, the v-for instruction has been further optimized, making it easier to use and more flexible. The biggest change of the v-for directive in Vue3 is the binding of elements. In Vue2, use the v-for directive

How to use Vue to achieve image grading and rendering processing? Overview In the development of modern web applications, image processing is a very common requirement. Using Vue.js, a popular JavaScript framework, it becomes very simple and efficient to implement image grading and rendering processing. This article will show how to implement image grading and rendering processing through Vue.js, and comes with code examples. Step 1: Create a Vue instance First, we need to create a Vue instance to manage the data and logic of the image. in HT

The impact of redraw and reflow on the rendering phase: who is more important? When a web page is rendered, the browser performs a series of operations in a certain order to display the page content. Among them, redrawing and reflow are two important steps in the rendering process. This article will explore the impact of redraw and reflow on the rendering phase and analyze their importance. The meaning and difference of redraw and reflow Before understanding the impact of redraw and reflow on rendering, let's first understand their meaning and difference. Repaint refers to when the style of an element changes, but it does not affect the

To understand the principles and implementation of Canvas rendering mode, specific code examples are needed. First, we need to make it clear that Canvas is the drawing API provided by HTML5, which allows us to use JavaScript in the browser to draw graphics, animations and other visual effects. Canvas can be drawn using two rendering modes: 2D rendering mode and WebGL rendering mode. 2D rendering mode is the default mode of Canvas. It uses the 2D context of the Canvas element in HTML5 to draw images.
