When looking at GTMetrix, all of the content from server A downloads simultaneously. When the content switches to another server, such as Google analytics or Google Tag Manager, it waits to download the content from Server A, before starting to download Google Tag Manager even though the JavaScript code is async.

Note that in the image, content on the same server downloads async, but downloading appears to be synchronous when you switch between servers.

Clarification: HTTP 2.0 allows for multiple simultaneous sockets. The question is, "does that mean multiple sockets from multiple IP addresses simultaneously or only from a single IP address?" The waterfall diagram appears to say only from a single IP address at a time.

Additional info: All of the fonts are downloaded simultaneously, even though they come from two different servers. I've even verified that the request start time since beginning matches. See the three lines above the image section.

Waterfall: Waterfall image

  • Which of these items is the original page load? Do some of these items call other items? For example Google Tag Manager typically then loads other 3rd party javascript. – Stephen Ostermiller Jul 21 '20 at 15:13
  • @StephenOstermiller, the initiating page is off of the edge of the screenshot. The trsg-... is the CDN. GTM includes the analytics trigger/tag combo, so GTM is the one requesting Google Analytics. – Trebor Jul 21 '20 at 15:18
  • 2
    Well that explains why the analytics is in a waterfall after GTM. I suspect some of the first four are CSS files that subsequently call the fonts, so the fonts can't download until after the CSS is finished processing. It would help if you could provide more information about each file: What is its full name, what is its purpose, what is its mime-type, which one triggered the other. – Stephen Ostermiller Jul 21 '20 at 15:21
  • @StephenOstermiller, I swapped the image with a more complete pictures. The order of the download makes sense to me. Initial page and then CSS and then JS. Next is GTM, then any fonts. All of the images are lazyloaded so, they're almost the last to load. Finally, we load "analytic" Javascript files from two other sources. Since HTTP is an upper layer protocol, maybe there's no ability for it to initiate simultaneous IP connections at the lower OSI layers. I just assumed that when we added multiple sockets to HTTP, we were taking advantage of lower level abilities to multiplex. – Trebor Jul 21 '20 at 15:45

No. One connection is established and it is through this one connection that all transfers are made from your IP address. The other sites are different IP addresses and will get their own, different connection.

  • 1
    I don't see how this can be correct. If your page is using resources from multiple 3rd party sites, the browser is going to need at minimum one connection to each of them. How can you say there is only one connection for all transfers? – Stephen Ostermiller Jul 21 '20 at 11:47
  • @StephenOstermiller All transfers from one IP address. The other sites are different connections. I'll clarify that. – Rob Jul 21 '20 at 11:50
  • 1
    He is asking about different connections such as google analytics and google tag manager – Stephen Ostermiller Jul 21 '20 at 11:51
  • @StephenOstermiller I'm basing my answer off his last sentence. I do not understand what he means by "download GTM" but I'm ignoring that. – Rob Jul 21 '20 at 11:55
  • 1
    Rob, wouldn't multiple sockets imply multiple connections? That's supposed to be the big improvement in HTTP 2.0. – Trebor Jul 21 '20 at 14:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.