Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add information about render-blocking resources #37

Open
rockeynebhwani opened this issue Mar 25, 2017 · 8 comments
Open

Add information about render-blocking resources #37

rockeynebhwani opened this issue Mar 25, 2017 · 8 comments

Comments

@rockeynebhwani
Copy link

I think we should have a graph to show critical blocking resources (mainly CSS/JS). A graph like seen below along with links to specific tests as requested in another enhancement (#36), can be very useful in quickly spotting the delays introduced on sites.

image

@eduardoboucas
Copy link
Member

Currently we're relying on WebPageTest as a source of data. Is this something we can extract from there? If not, what other tool would you recommend?

@rockeynebhwani
Copy link
Author

Hi @eduardoboucas,

You may want to check this - http://stackoverflow.com/questions/34179483/how-to-find-resourcescss-js-etc-that-are-blocking-in-chrome

Paid offerings like speedcurve also use webpagetest in background and are able to figure this out so I am sure based on above thread on stackoverflow, there is a way to figure this out.

Rockey

@eduardoboucas
Copy link
Member

Where would we display this information? In the same graph as the content breakdown (requests)? I'm not sure it's a good idea to add yet another chart, as we'll end up with too much information.

What do you think?

@eduardoboucas eduardoboucas changed the title Enhancement - Critical Blocking Resources Graph Add information about render-blocking resources Apr 1, 2017
@rockeynebhwani
Copy link
Author

I think it's ok if you want to add this to content breakdown (requests) graph. I would like to see two metrics (Critical blocking CSS and Critical Blocking JS).

@eduardoboucas
Copy link
Member

eduardoboucas commented Apr 1, 2017

In that case a separate graph with render-blocking CSS and JS would probably make sense.

I just wonder if the method of determining whether a resource is render-blocking that you linked to is really accurate. If you have a bunch of scripts with defer, the browser could technically start retrieving them before the first paint time and yet they're not render-blocking?

@rockeynebhwani
Copy link
Author

Good point..

I think this is how speedcurve has done this ..https://speedcurve.com/blog/critical-blocking-resources/

I guess this is the key part from above link


Not all scripts and stylesheets necessarily have a big impact on performance, so it's important to be able to tell the blocking requests when trying to improve the user experience. In the waterfall above we see that there's an early script (request #6, "lazysizes.js") that is not marked as a critical resource. That's because this script is loaded asynchronously and thus doesn't block rendering of the page. Since we only want to highlight resources that block rendering, asynchronous scripts are not highlighted.

Similarly, in some cases it's possible to have stylesheets that don't block rendering of the main page. This typically happens with third party widgets that are loaded in an iframe, like the Twitter widget. Since stylesheets in iframes do not block the main page from rendering, they're not marked as critical resources.


@rockeynebhwani
Copy link
Author

You should also check this - https://speedcurve.com/blog/measuring-blocking-resources/

I think this can get complicated. I wish if this information was available from WebPageTest as standard metric.

Not sure if you want to take speedtracker this far and start to build all this logic.

@eduardoboucas
Copy link
Member

So I suppose we'd need to actually download the HTML page for the given URL and inspect the DOM look for scripts and stylesheets, taking into account their attributes and position in the document.

I agree that the information is very useful, I just wonder if building (and maintaining) this is viable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants