One of the comments on my Fiddler Performance
article wasUsing HTTP proxy for debugging sounds like 'destructive measurement': the measurement affects the results! IE sends different requests to proxies and to web servers directly.
This is partly true. One thing you might have noticed was that I didn't talk about using Fiddler to capture request timing: It's possible (via oSession["X-TTFB"] and oSession["X-TTLB"]) but it can be very misleading to measure this way. Why?
In Fiddler 0.9 and below, Fiddler never reuses sockets for anything, which may dramatically affect the performance of your site. Fiddler 0.9.9
(the latest beta) offers server-socket reuse, so the connection from Fiddler to the server is reused. Note that the socket between your browser and Fiddler is not
reused, but since this is a socket->socket connection on the same machine, there's not a significant performance hit for abandoning this socket.
So, Fiddler isn't suitable for timing. But this doesn't impact your ability to check compression, conditional requests, Expires headers, bytes-transferred, etc. Other than the actual timings, the browser does not behave much differently with Fiddler than without (and chances are good that your visitors are using some
type of proxy).
- The browser will often send Proxy-Connection: Keep-Alive; this isn't sent without a proxy.
- IE will send Pragma: no-cache if the user hits F5 or clicks the refresh button; without a proxy, you have to hit CTRL+F5 to send the No-Cache value.
- The fact that a client-socket is abandoned can lead to extra authentication roundtrips when using the NTLM connection-based authentication protocol.
I'll post any additional differences if I come across them, but in general, you should find that Fiddler is suitable for many types of performance investigations.