There is already some amount of code that's involved with prioritizing subresource loads. See http://trac.webkit.org/browser/trunk/Source/WebCore/loader/ResourceLoadScheduler.h and http://trac.webkit.org/browser/trunk/Source/WebCore/loader/cache/CachedResourceLoader.h.
I suspect the prioritization algorithm could be improved. A good first step is to create a benchmark illustrating the performance issues and then write patches that optimize the benchmark. Please consider putting your performance test in http://trac.webkit.org/browser/trunk/PerformanceTests/ so that it's easy for others to work on as well. Adam On Mon, Feb 7, 2011 at 11:23 AM, Silvio Ventres <silvio.vent...@gmail.com> wrote: > Hello. > > Can someone point where in the source code is the implementation of > the subresources loading and some documentation regarding its > implementation - as a queue or just child-threads or async functions? > > The reason is that the current subresource loading seems to lack any > prioritization and it often occurs that some external "1x1 pixel > tracker" or other similarly unimportant page resources block the > rendering of the page completely, and the user is left starting at > "contacting ads.doubleclick.com" with a blank page. This is very > frustrating as the page render as a whole then depends on the slowest > part and cannot be possibly done faster by any optimizations in > hardware or software on the part of the page owner. > > Thus, the proposition is this: > 1. Render should only wait for the main HTML/CSS to load from the main > page domain (a page in tumblr.com domain should wait for html/css > files from *.tumblr.com, but not from *.doubleclick.com). > 2. Other content load except HTML/CSS should be prioritized as > follows, with placeholders shown until the load is complete - possibly > adding one or more extra render passes, but increasing interactivity. > > So, basic priorities: > > 10 = Highest: HTML/CSS from main domain (sites.tumblr.com/some_site.html) > 9: JS/XHR from main domain > 8: HTML/CSS/JS from subdomains in the same domain (ads.tumblr.com/ad_serve.js) > > 7. <Reserved for future use> > > 6. IMG/media from main domain (sites.tubmlr.com/header.png) > 5. IMG/media from subdomains in the same domain (ads.tubmlr.com/banner1.png) > > 4. <Optional*> HTML/CSS/JS (text) from CDNs > 3. <Optional*> IMG/media from CDNs > > 2. HTML/CSS/JS from other domains > (*.doubleclick.com/link_210986cv3.php?refer=2323424) > 1=Lowest. IMG from other domains (*.doublclick.com/images/track_1x1.gif) > > *4 and 3 are optional and would need some kind of a whitelist of > well-known CDN domains. > > This prioritization will reduce the latency between the page load > start and a usable render, so even if some external-domain subresource > is nonresponsive, interactivity will not suffer. > Maybe the priorities should be moved to a user-controllable setting, > where more fine-grained rules can be defined. Otherwise, maybe HTML > standard can be extended to provide hints to the browser regarding the > preferred subresource loading order, which should of course be > user-overridable. > > Thank you for reading. > This might be a big undertaking but the benefit for the user will be > seen instantly. > > -- > silvio > _______________________________________________ > webkit-dev mailing list > webkit-dev@lists.webkit.org > http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev > _______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev