Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Chrome network Timing , how to improve Content Download

I was checking for XHR calls timing in Chrome DevTools to improve slow requests but I found out that 99% of the response time is wasted on content download even though the content size is less than 5 KB and the application is running on localhost(Working on my local machine so no Network issues).

But when replaying the call using Replay XHR menu, the Content download period drops dramatically from 2.13 s to 2.11 ms(as shown in the screen shots below). Data is not cached at browser level.

  • Example of Call Timing Example of Call Timing

  • Same Example Replayed Same Example Replayed

Can someone explain why the content download timing is slow and how to improve it?

The Application is an ASP.NET mvc 5 solution combined with angularJS.

The Web Server Details: - Windows Server 2012 R2 - IIS 8

Thank you in advance for your support!

like image 574
Maazaoui Mohamed Amine Avatar asked Oct 11 '17 13:10

Maazaoui Mohamed Amine


People also ask

How do I stop Chrome from stalling time?

The only fix is to close the tab, reopen another table and re-open dev tools. I've been working on this code base for over a year without this problem and there haven't been any changes that I believe would cause such a behavior on png files.

What is content download in browser?

"Content Download" measures how long it took to download the response to the HTTP request after the latency is over. There is more information available in the documentation.


2 Answers

I can't conclusively tell you the cause of this, but I can offer some variables that you can investigate, which might help you figure out what's going on.

Caching

I know you said that the data is not getting cached at the browser level, but I'd suggest checking that again. Because the fact that the initial request takes 2s, and then the repeat request only takes 2ms really does sound like caching.

How to check:

  1. Go to Network panel.
  2. Look at Size column for the request. If you see from memory or from disk cache, it was served from the cache.

size column

Slow development server or machine

My initial thought was that you're doing more work on your development machine than it can handle. Maybe the server requires more resources than your machine can handle. Maybe you have a lot of other programs running and your memory / CPU is getting maxed.

How to check:

  1. Run your app on a more powerful server and see if the pattern persists.

Frontend app is doing too much work

I'm not sure this last one actually makes sense, but it's worth a check. Perhaps your Angular app is doing a crazy amount of JS work during the initial request, and it's maxing out your CPU. So the entire browser is stalling when you make the initial request.

How to check:

  1. Go to Performance panel.
  2. Start recording.
  3. Do the action that causes your app to make the initial request.
  4. Stop recording.
  5. Check the CPU chart. If it's completely maxed out, then your app is indeed doing a bunch of work.

CPU chart

Please leave a comment and let me know if any of these helped.

like image 78
Kayce Basques Avatar answered Sep 19 '22 17:09

Kayce Basques


I have also been investigating this issue on Chrome (currently 91.0.4472.164) as the content download times appear to be vastly different based on the context of the download. When going directly to a resource or attempting to update rendered content as the result of a web call, the content download time can take up to 10x the duration when made from other client applications or when simply saving the data off as a variable in Chrome.

I created a quick, hacky Spring Boot web application that demonstrates the problem that I have made public on github: https://github.com/zielinskin/h2-training-simple

The steps in the readme should hopefully be sufficient to demonstrate the vast performance differences.

I believe that Chrome will need to resolve this performance issue as it has nothing to do with the webserver or ui framework being used.

like image 28
Taugenichts Avatar answered Sep 18 '22 17:09

Taugenichts