HTTP Performance


The information published in this post is now out-of-date and one or more links are invalid.

—IEBlog Editor, 21 August 2012

Before I joined the Internet Explorer team, I worked on the
Microsoft Office Online website.  Handling massive amounts of traffic, we
faced some performance challenges that forced me to dig into the guts of HTTP
performance.  The output of that effort was twofold:
Microsoft Fiddler, and documentation of some best practices for web
performance optimization.  The latter has been summarized into a new MSDN
article which discusses Internet Explorer’s support for caching and compression,
and how to use Fiddler to explore site efficiency.  You can read the new article
here:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebgen/html/ie_introfiddler2.asp?frame=true

I hope the web developers in the audience will find these tips informative.

 -Eric Lawrence

Comments (49)

  1. Anonymous says:

    Why does it just apply to IE when HTTP is a global protocol for ALL browsers?

  2. Anonymous says:

    It doesn’t just apply to IE, but all HTTP traffic.

    So why don’t you go away?

  3. Maurits says:

    Fiddler looks interesting. I currently use the LiveHTTPHeaders extension for Firefox, but I’m trying to switch back over to a 50/50 IE/Firefox usage pattern. (LiveHTTPHeaders IS browser-specific, doesn’t work for IE at all.)

  4. Anonymous says:

    I’m assuming they mean it’ll only work in IE since it’s the only browser they have listed in the "Applies to" section.

    Maybe they can say "All browsers that support the HTTP protocol"? From here, it looks like they’re making HTTP proprietary…

  5. Anonymous says:

    "I’m assuming they mean it’ll only work in IE"

    You know what they say happens when you "assume".

  6. Dean Harding says:

    Next to OutputDebugString, Fiddler has got to be one of my favourite debugging tools…

  7. Anonymous says:

    Most of the section titled "Conditional Requests and the WinInet Cache" is IE only. The rest applies to all current browsers.

    Fiddler is a great tool. I hope you keep working on it. :)

  8. Anonymous says:

    This looks like pretty helpful information. Thanks Microsoft!

  9. PatriotB says:

    I’ve always been curious as to why there’s two "separate" Office web sites — office.microsoft.com, and the other one (the orange one). Why weren’t they combined into one?

  10. Anonymous says:

    Really interresting. But, when are you going to talk about CSS support? I know this question is asked continuously but this is important for a lot of web developper. I think a screenshot with the acid2 test displayed perfectly will has his "little" effect.

  11. Anonymous says:

    * sigh *

    http://validator.w3.org/check?uri=http://www.fiddlertool.com/fiddler/

    I think the IE team would be well served to take a break for a week or so, and try and update all their associated websites to rudimentary standards(no doctype? c’mon). At least make a feeble attempt to walk the walk. Who knows, you may even grok the frustrations of the blog commentators.

  12. Anonymous says:

    <<I think the IE team would be well served to take a break for a week or so, and try and update all their associated websites>>

    Let’s take a poll– Who thinks this is a good use of my time, vs. working on IE7 and improving Fiddler?

    The site seems to render just fine in the browsers I use (IE, Firefox, Opera, Netscape, and AOLExplorer), so I’m not sure standards-for-standards sake is a good allocation of my time.

  13. Anonymous says:

    Finally! Good comeback, Eric!!

    Stop taking the crap from these pathetic children that hang out on your blog!

    James

  14. Anonymous says:

    *claps for Eric*

    I’d prefer a balance of Fiddler and IE7.

    BTW, I think this is the first time in a long time that the IE team asked for our opinions.

  15. Anonymous says:

    Nice to see an article about this, however, as I noticed on my own blog a week or 2 ago, using compression and caching *at the same time* is still not possible under IE.

    According to the Channel 9, you are aware of this. Is this something that will get fixed ?

    See http://jpdeckers.blogspot.com/2005/05/ie-still-broken-with-gzipped-content.html

  16. Anonymous says:

    Hi, I’m Patrick Mann, a security tester on the IE team. It’s a big week for me and a few other folks…

  17. Anonymous says:

    Thanks for the great program, Eric. Very handy indeed.

  18. Anonymous says:

    > The site seems to render just fine in the browsers I use (IE, Firefox, Opera, Netscape, and AOLExplorer), so I’m not sure standards-for-standards sake is a good allocation of my time.

    Here’s a more real-world problem:

    Try using the site with the browser’s default colours set to white text on black.

  19. Anonymous says:

    Fiddler is an awesome tool and I thought I knew my way around it…. wrong.

    A second great article on…

  20. Maurits says:

    <<Who thinks this is a good use of my time, vs. working on IE7 and improving Fiddler?>>

    /me raises hand

    "Know your customers" and all that. I would even say that it falls under the umbrella of "working on IE7".

  21. Anonymous says:

    I personally always find the posts of Eric Lawrence the most interesting on this blog mainly because they go into detail on various aspects of HTTP.

    It’s a bit unfair someone criticising the article that is linked to because it doesn’t mention Firefox in the products it applies to. I’d assume that the fact is that MS documentation refers to MS products and can’t claim to represent anyone else, for someone to claim that this was to say they were trying to make HTTP proprietary is rediculous.

    I can’t and therefore don’t use IE 6 due to owning a Mac and a Linux PC, there’s a lot of things we can fault IE on but all this bashing for bashings sake just makes users of other systems look like idiots. Please be civil and appreciate a decent article when it becomes available.

    As I can’t try fiddler myself (not on Windows like I mentioned earlier) I’ll stick with the Firefox Live HTTP Headers extension which is good enough for my needs but the fiddler tool does look impressive (although could do with a better name) and has features that Live HTTP headers does not offer.

    Anyway, if you keep up with quality tools like this then IE will be a lot more developer friendly and I think for that we’ll be all happy.

  22. Anonymous says:

    There’s a ‘Run As’ command in Windows XP which I find very handy, it means I can right click on an executable and run it as administrator, useful for installing applications without having to log out.

    However, I don’t seem to be able to run IE as Administrator, the context menu entry is different for this than it is normal apps.

    Now why would I like to run IE as administrator? Simple, to run Windows Update.

    Also I’d like as a special security measure for it to be obvious when an IE Window is running as administrator so I don’t mistakenly visit an untrusted site with escalated permissions, is this possible at the moment?

  23. Anonymous says:

    John:

    The IE icon on the desktop is a shell extension, so it gets it’s own context menu.

    However, if you navigate to the actual iexplore.exe executable (in {Program filesInternet Explorer) you can get the "Run as…" option on the context menu.

    If you want it on the desktop, just create your own shortcut to iexplore.exe there.

  24. Maurits says:

    Two thoughts…

    Could you make a .url file for windowsupdate.microsoft.com? If so, do you get a "Run As…" command on documents?

    I recall a KB article that showed how to use Content Restriction to lock down IE to a particular site. I wonder if you could do that to lock the Administrator account down to Windows Update (or now, Microsoft Update)

  25. Anonymous says:

    Ooh Eric.. Controversial statement there!!

    I raise an objection.

    If we go by your logic then why the heck use standards?

    Oh well, why not all of us renege ourselves to the proprietary-browser-extensions days??

    Agreed you have other important tools to develop, but do not brush the standards issue aside and really it would be well worth it if you made your own pages standards compliant.

    Atleast by doing that, IE team may realise what the standards really are!!

    How can I trust my pages in your browser, when your own website shows up with 17 deviations on the standards page??

    *sigh* I will have to ask users to use other browsers than IE on my site. :-(

    Please do not mistake me for yet another FF/Opera/Open Source evangelist, I love IE and that is why it pains me a lot to see my favourite browser going to the trash bin.

  26. Anonymous says:

    James wrote:

    "Stop taking the crap from these pathetic children that hang out on your blog!"

    Actually an old man. I’ve been working on systems since the 70s at the Pentagon, EPA, Chase, GE and others. I may be mistaken but according your blog you are still a student?

    While in the past Microsoft has been able to disregard standards due to their monopoly position, that is no longer the case.

    Short cuts make for long delays. In their hurry to get "something" out to compete, they will only hurt themselves if they don’t grok standards.

    Do you vote whether you want to obey traffic laws?

  27. Anonymous says:

    Excellent reply Eric. I’m sick and tired of people with nothing better to do than validate their sites 24/7 telling me I should use standards when all browsers render my work properly =)

  28. Maurits says:

    OK, here’s my take on standards.

    You can either spend your life testing every page you write on every new browser that comes out…

    Or you can write pages that follow the standards.

    Then, if a bug in the browser causes the page to fail, you make a judgment call – either fix the bug, or recommend another browser.

    My policy is:

    1. CODE TO STANDARDS

    This gives every browser a fighting chance.

    2. WORK AROUND BUGS IN MAJOR BROWSERS

    If a browser has > 5% market share, code workarounds for any bugs that break standard code.

    3. IGNORE BUGS IN MINOR BROWSERS

    If you’re gonna use an off-market browser, it had better be good if you want my support.

    To the last poster… really? EVERY browser? What about IE 7?

  29. PatriotB says:

    You can right click the Windows Update shortcut in the Start menu, and use Run As. Or you can run wupdmgr.exe from an administrator command prompt.

    However I’ve found that all updates fail when I use Run As (since XP SP2). They only succeed when I’m actually logged in as an admin.

  30. Anonymous says:

    <<using compression and caching *at the same time* is still not possible under IE. >>

    The bug with ETAGs is interesting and I’ll ensure that we’re looking at it. But we shouldn’t equate ETAGs and caching– Office Online uses both caching and compression for JS files, despite this ETAG issue.

  31. Anonymous says:

    Nice tool, Eric. I’ve used two other tools for this type of HTTP debugging, as well:

    Charles Proxy

    http://www.xk72.com/charles/

    HTTP Analyzer

    http://www.ieinspector.com/httpanalyzer/index.html

    Of course, yours is the only FREE tool.

  32. Anonymous says:

    … just a slight ad-on though…

    What would be your view on adding (a) header(s) which detail the users display device a little more also, including the basics like screen res, colour quality, etc?

    As a user of an 800 x 600 screen, I find that some sites are targeting the higher res screen, which produces a horizontal scroll bar, something which I personally find unusable in a web site. If a screen size header were included, it could allow developers to target their audience more accurately, rather than settling for the perceived ‘most popular’.

    Also, something which popped into my head when looking at this web site (http://colorfilter.wickline.org/), how about a header which identifies colour-blindness? Where by the users selects the option relevant to their type of colour-blindness, allowing for developers to again target their audience so as not to present a poor rendering web site?

    Again, just a couple of idea’s really, and I thought better to pop them down rather than keep them to myself.

  33. Anonymous says:

    <<I’ve used two other tools for this type of HTTP debugging>>

    Hehe… The truth is that had I known about the alternatives, I’d never have started Fiddler in the first place. Once I finally came across some such tools, I already had the foundation of Fiddler built and I couldn’t bear to abandon it… So I added in the tampering support, scripting support, etc. :-)

  34. Anonymous says:

    Eric, thank you for this article, I will certainly make good use of the information presented, and thank you for taking the time to write it.

  35. Anonymous says:

    Completely Offtopic:

    It’s great that you all are going to support compression (gz?), but really, why not work on other things. Honestly, the only thing keeping me from using FF as my primary browser is that IE is simply faster, and on both my computers.

    Speed isn’t the issue, it’s compatibility. Now that you have speed and your other extensions why not make it easier on web designers and not require those interested in standard compliance to have to resort to hacks just for IE? (most notably http://dean.edwards.name/IE7/ ).

    Now that you’re writing IE7, please, keep your ears open for those of us interested in pure development that would not have to constantly tinker with the design.

  36. IMarvinTPA says:

    I think you should have several versions of the page for Fiddler. One that is as it is now. Another that is fully standards compliant.

    This way you have something of your own to see how well IE does or does not handle improper pages as well one to see how it does on standards compliant pages.

    If you aren’t involved in the rendering aspects of IE 7, then it is mostly academic to you in either case.

    There are two types of dogfood for IE. The person using IE as a browser, in which IE is the dog food and the person designing a web page, in which the web page is the dog food.

    If you don’t clean up your pages, you’re feeding yourself rotten kibble.

    Fiddler appears to be an excellent tool. I find that excellent tools evolve when the developer is the in-need user. If the developer is not the in-need user, development usually stops at "good enough".

    If you wish IE to be excellent rather than good enough, you should find a way to make yourself the in-need user, both as a web viewing person and as a web page developer.

    (This advice really applies to any sort of design activity.)

    IMarv

  37. Anonymous says:

    Two clarifications:

    1> IE supports GZIP and Deflate today. These are not IE7 features.

    2> I have nothing at all to do with CSS/HTML rendering. I own aspects of the HTTP stack and assorted security features, and both of these keep me plenty busy.

    Thanks for the feedback.

  38. Anonymous says:

    Completely Offtopic… (Take it with a pinch of salt!)

    Q: Why is IE7 taking such a long time?

    Ans: Coz the number "7" isn’t rendering correctly yet.

    :)

  39. Anonymous says:

    Sorry for offtopic, but you’ve said that

    tabs will be in IE6 with MSN Toolbar.

    It is released today, but only for 2K/XP.

    And what about 98/ME?!

  40. Anonymous says:

    This may be off topic as well, but I was wondering if IE would still support Javascript in CSS in version 7. If you guys don’t decide to support the min/max-width/height properties in IE7, taking away js support in css would absolutely kill a couple of my designs. Plus, I kind of like dynamic CSS :-).

  41. Anonymous says:

    And how about HTTP Pipelining to increase performance? It’s the great advantage I see in Firefox today (security it’s not better than IE and the other features I have with some free add-ons like Avant or Maxthon).

  42. Anonymous says:

    Most webservers other than Apache and IIS reject all pipelined requests. Some servers reply with "HTTP/1.1 OK" but don’t support HTTP 1.1. This really breaks compatibility (images, embedded objects, scripts, stylesheets not loading).

    Some server detection would be good, for example send one pipelined request, if the server doesn’t accept it, then fallback to normal connection without pipelining.

    We have to wait next 10 years, maybe people will upgrade their servers.

  43. Anonymous says:

    AA,

    95% of all web servers are either Apache or IIS.

    IE should support pipelining and automatically enable and tune it if it could detect the server type would be a plus.

    It shouldn’t be enabled by default but it would be really good to have a way to activate it.

  44. Anonymous says:

    This may or may not be relevant to this topic, so I apologise if isn’t.

    But, as more and more people turn to broadband, it seems that more developers are forgetting about the many who still use dial-up to access the web. When creating web sites, it can be so easy to forget how a page will load for a 56k modem user if you, the developer, have a 1/2/4/8MB connection.

    For those who do try and cater for slower connections, it can be difficult to estimate how a page would load if you’re on broadband and don’t have access to a dial-up account – or costly (as well as inconvenient) if you do (BB + dial-up charges).

    Would it be possible to implement a method of adjusting the stream IE accepts data at, as an advanced feature? For example, a simple radio list to select weather to accept data as it comes (as usual) or to let it flow in at a 56k level so that developers can get a better view as to how a modem user would see their pages progress.

    While on the subject; I’m not sure how the W3C HTTP spec states how new headers can be added, but how about users being able to select their Internet connection speed from a radio list, and have that info passed as a HTTP_SPEED header, which some content providers could use to target their audience better (such as offer larger video / sound clips to faster connections, smaller ones to 56’ers).

    Just a suggestion or two, keep up the great work.

  45. Anonymous says:

    Fiddler has a way to slow down traffic for simulation purposes. You can set the x-entity-delay flag on the Session object to delay by a calculated number of milliseconds.

    In terms of bandwidth "announcement"– IE had a mechanism by which to do this (it’s a behavior, I think) but it never really took off and never really worked quite right. It’s particularly hard because throughput depends on the entire pipe– If I’m surfing my company extranet, I get extremely high bandwidth, but if I’m communicating to a site that happens to be behind a radio-link to some island, even if I’m sitting on a T3, my bandwidth to that site will be extremely low.

    Overall, this is probably a good area to engage the standards bodies on.

  46. subbu.org says:

    Internet Explorer 7 is supposed to support gzip and deflate encoding. Right? Despite the support advertised via the Accept-Encoding header, I noticed it does only support gzip encoding, but not deflate….