Website Download Speed research

Updated Jun 1, 2022

Website Download Speed research Everyone uses the apps on their phone. They work very fast, and users get used to this speed. This creates certain expectations for the speed of loading sites. While loading a web page within 2 seconds is considered acceptable, ideally it should be as fast as the apps on the phone.

We studied the download speed of 10,000 of the most popular sites on the Internet to understand what time indicators we should strive for.

Testing conditions

We took the list of the most popular domains from the Alexa rating. It is available for download [here](https://s3.amazonaws.com/alexa-static/top-1m.csv .zip) or we have.

Equipment and software:

  • Chrome browser 94.
  • VPS server for 2 cores 4 threads Intel Xeon Processor (Skylake, IBRS) 2294.640 MHz
  • Connection speed of 10 gigabits.
  • The minimum ping to any of the sites was 53 milliseconds.

Methodology:

  • Pages are loaded alternately.
  • When calculating the page load time, we use the following formula: the page load time by the browser is (ping to the site is the minimum possible ping time for our server) × 2. This allows you to compare sites located on distant servers with “close” sites.
  • We take a screenshot to check the correctness of the loaded page.
This is the language selection page. It is difficult to judge the speed of the site by it.
This is the language selection page. It is difficult to judge the speed of the site by it.

Analysis and conclusions

What we learned:

  • The weighted average page loading time (50% of sites on both sides) is 2 seconds.
  • The fastest sites are sites on 1 screen ya.ru , google.com
  • In the period from 1 to 3 seconds, 51.5% of the sites studied are loaded.
  • In 1 second or less, 21.7% of pages are loaded and they produce an average of 37 files.

How to speed up a page to 1 second?

The key indicator that allows you to achieve a minimum download time is to reduce the number of files.

You can almost always limit yourself to 6 files:

  • HTML code of the page.
  • Logo image.
  • Cross-page JavaScript. Group all the code responsible for the operation of the end-to-end page elements: menus, form validations, frameworks (jQuery, etc.). For page-specific functions, paste the code directly into the HTML page.
  • Cross-page CSS. By analogy with the previous paragraph.
  • 2 font files: plain text and title. No more is needed. Be sure to optimize in [our tool] (/tools/web-font-optimizer).

Only images remain. It is better to load them using lazy loading. Thus, the user will receive a fully functional and ready-to-use page, and the images will be loaded as needed. At the same time, it is better to store icons in CSS files in the form of SVG.

Description of the received data

We received data consisting of 2 tables: domains and `check’. You can download a copy here.

Description of domains table fields:

  • id - the serial number of the record.
  • domain - the original domain from the Alexa rating.
  • link - a real working link. Some sites open only via http or redirect to a domain with the www prefix.
  • status - depending on the results of the download, we assign a status.

Statuses of the domains.status field:

  • end - successful completion. Only these sites participate in the statistics. 7623 sites received this status.
  • access_denied - access is denied. Most likely, they did not pass DDOS protection.
  • trival_page - the site shows a trivial page: authorization form, language selection, age confirmation, stub page, etc.
  • error - error. Our system could not correctly determine the moment when the page was fully loaded, and in the screenshot we saw either an empty or partially loaded page, or a loading bar, which means launching a deliberate page loading process, or a 404 page.

Description of the fields in the ‘check` table:

  • id - the serial number of the record.
  • domain_id - link to the field domains.id.
  • ping - the delay time to the server. Sometimes it may be empty if the server of the analyzed site blocks this function.
  • html_received - the time when the HTML code of the page was received.
  • first_paint - the display time of the first content.
  • end_of_loading - final loading.
  • number_of_files - the number of files that make up the page.
  • check_date - the date the page was loaded.
  • performance - the browser log that can be obtained by executing the code window.performance.getEntries();. As files, we take into account when the EntryType of the record is equal to resource.
We use cookies. By continuing to use the site, you agree to the processing of personal data in accordance with privacy policy. I agree