IE8 speeds things up

March 10, 2008 9:30 am | 24 Comments

IE8 Beta 1 has several performance improvements listed in the release notes. Many of these improvements center around the DOM and JavaScript execution. And their announcement about stricter standards compliance is a great move forward. There are three changes that are big and relate to my performance best practices: 6 downloads per hostname, loading scripts in parallel (the biggest improvement!), and support for data: URIs.

Increasing parallel downloads makes pages load faster. (For users with slower CPUs or Internet connections it could possibly be worse, but for most users it’s faster.) The HTTP 1.1 spec recommends that browsers only download two items in parallel per hostname, but the spec was written in 1999. Today’s clients and servers can support more parallel downloads, so IE8 has increased the number of downloads per hostname from 2 to 6.

Increasing parallel downloads makes pages load faster, which is why downloading external scripts (.js files) is so painful. Firefox and IE7 and earlier won’t start any parallel downloads while downloading an external script. These days, with the greater adoption of Web 2.0 and DHTML, many sites contain multiple scripts which means those pages will have long periods where all other downloads are blocked. It’s understandable that these scripts need to executed sequentially (code dependencies) but there’s no reason they couldn’t be downloaded in parallel. And that’s exactly what IE8 has done. It’s the first browser I’ve seen that has implemented this critical improvement for load times. Facebook has got to be thankful for this. They have 17 external scripts on their page. In most browsers this causes the page to load slowly for users coming in with an empty cache. But for users coming in using IE8 the scripts load ~80% faster because they’re loaded in parallel. In this screenshot showing HTTP requests for Facebook we see parallel script loading, and we also see them loading 6 at-a-time. (Scripts are the icons that look like a scroll.) Both of these IE8 enhancements dramatically speed up pages.

The long awaited support for data: URIs in IE has arrived. data: URIs allow developers to embed resources (images, scripts, anything referenced via a URL) directly in the HTML document as described in the examples from the IE8 release notes. This is especially useful for CSS background images because you can embed the image’s data in the stylesheet which can then be cached.

Hats off to the IE team. I’m really psyched about their focus on performance and can’t wait for wide adoption of IE8.

-Steve

24 Responses to IE8 speeds things up

  1. […] Stream IE 8 Speeds Things UpMajor Update to PrismA quote from Mark Pilgrimsimonw: Suggestion for next SXSW: a design agency […]

  2. […] a recent post IE 8 Speeds Things Up by Steve Souders of YSlow! fame (and fellow SXSW 2008 attendee), it is pointed out that IE 8 is the […]

  3. […] Steve Souders has posted on IE 8 and performance improvements. […]

  4. […] IE8 speeds things up. Steve Souders notes that IE8 downloads script files in parallel before executing them sequentially, giving it a significant speed boost over other browsers that download sequentially. […]

  5. Presumably there’s an option (regedit, at the very least) for the user to throttle that back to anywhere from 2-6 parallel downloads to tune for a slower computer/connection?

  6. […] IE8 speeds things up — It’s not just Firefox that gets a speed […]

  7. […] Steve Souders has posted on IE 8 and performance improvements. […]

  8. @tinyhands:
    Yes, we allow users to control this behaviour. The regkey needed is documented here: http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&ReleaseId=581

  9. Facebook’s SCRIPT tags do not have the DEFER attribute or ASYNC attribute. How does IE8 deal with the possibility that the first script will document.write something that messes with parsing an makes the second SCRIPT tag not exist?

  10. Jesse: The scripts are _downloaded_ in parallel, but are _executed_ sequentially. Suppose you have scripts A, B, C in that order. Even if C downloads first, it won’t be executed until A and B are downloaded and executed. The nice thing is A, B, and C are downloaded in parallel in IE8, so hopefully when the first script is done executing the second script is queued up for execution, and so on.

  11. There’s still the problem that the execution of script A can effect how script B is downloaded — eg, script A could set a cookie, allowing the server to send different results when script B is requested. If a browser downloads B before executing A, it’s just broken this.

  12. Linkpost | 3.11.2008…

    • Wal-Mart Ends Test of Linux in Stores — But will continue to sell Everex’s gPC at Wal-mart.com. • IE8 speeds things up — It’s not just Firefox that gets a speed boost. • 10 Killer Firefox Extensions That You……

  13. Microsoft actually short-stopped the discussion on the HTTP WG by implementing this without waiting for the WG to amend the specification ( http://lists.w3.org/Archives/Public/ietf-http-wg/2008JanMar/0434.html ).

    I don’t think upping the 2-per-host connection limit is a bad thing in itself, just the fact that MS is doing this without any concensus in the WG and thus is basically making the decision.

    Although it may be true that Opera already for some time allows for 8 connections per host and Firefox does some throttling when queued requests have to wait for more than 10 seconds for a connection to become available it is somewhat different when a market-leader decides to take such step.

    I expect at least Firefox and maybe some other vendors to follow suit on this behaviour and start ignoring the SHOULD directive in RFC2616 completely, regardless of the HTTP WG’s outcome on this issue.

  14. […] Steve Souders wrote some thoughts on performance improvements happening in IE8, with their change to support 6 parallel downloads from the same hostname at the same time. […]

  15. Steve Souders measures IE 8 page load time improvements…

    From: High Performance Web Sites :: IE8 speeds things up . Lots of attention has been focused on the…

  16. Steve Souders measures IE 8 page load time improvements…

    From: High Performance Web Sites :: IE8 speeds things up . Lots of attention has been focused on the…

  17. […] Read more… © High Performance Web Sites blog, 10/03/08 […]

  18. […] IE8 提高单域名并发连接以提高性能, JS 也是并发下载(串行执行)”  […]

  19. […] IE8 speeds things up […]

  20. […] should be noted that IE8 promises a similar improvement to script load parallelization, as discussed by Steve Souders a few weeks back. I would guess that the underlying implementation […]

  21. Hello
    nice site

  22. I’ve just downloaded the Beta for IE8 and am expecting some great improvement on IE7 even at Beta stage. I’ve always been attached to IE but have been attached by a thin thread more recently.

  23. Steve

    I dont know what to say!
    I just d/l IE8 after reading reports in the news that the IE7 is vernurable to viral attacks etc.
    But I have major problems of speedy d/l esp on photo pages typically FAaceBook

    Any advice

    Jack

  24. IE8 seems to be very fast and reliable so far.