Fiddler Logo Fiddler book image Get the NEW book!
RSS Icon download iconGet Fiddler! Addons Help & Documentation Developer Info Discuss Contact

Fiddler icon Fiddler's Streaming Mode

Introduction

By default, Fiddler operates in Buffering Mode for most responses.  In Buffering Mode, Fiddler buffers HTTP(S) responses completely before returning them to the client.  This gives the Fiddler user the opportunity to modify the response before the client receives it.

What is streaming mode?

When in streaming mode, Fiddler will return response bytes to the client immediately, as it reads them from the remote server.  This is primarily important for low-level network timing scenarios, because most web browsers (Internet Explorer, Firefox, etc) will parse partially-downloaded HTML pages and begin downloading needed resources (e.g. CSS, JS, etc) in parallel, even before the remote server has finished delivering the HTML.  In some cases, this leads to a measurable performance improvement.

Timeline screenshots

Streaming mode is also useful in some other cases, particularly when visiting Internet Radio sites that deliver a never-ending stream of MP3 data.  An audio stream, by definition, is never complete, so Fiddler's attempt to buffer it completely will always fail.

Automatic Streaming Mode

Fiddler will automatically stream responses of video/* or audio/* types.  You can control this option by clicking Tools | Fiddler Options, then unchecking the "Automatically stream audio and video" option at the bottom of the list.

Enabling Streaming Mode

You can configure Fiddler to stream all HTTP(S) responses. Simply click the "Streaming" button in the Fiddler toolbar:

Streaming Toolbar button

Alternatively, you can enable streaming on a per-session basis by setting the bBufferResponse property to false on the Session object.  Note that you must set this property in FiddlerScript's OnBeforeRequest handler or IFiddlerExtension's IAutoTamper.AutoTamperRequestBefore or IAutoTamper.AutoTamperRequestAfter handler.

Session handling in Streaming Mode

For sessions in streaming mode, response breakpoints will not be triggered, and changes to the response headers or body will not be seen by the client.

Note to Extension Developers: IAutoTamper::AutoTamperResponseBefore is the last event that fires on a streamed session, after the response data has already been returned to the client. 

Note to FiddlerCore Developers:When the bBufferResponse property on a session is set to false, that session's response is streamed to the client as it is being read from the server. As a consequence, the client has already received the response before the BeforeResponse event has fired. In contrast, if that property is set to true, that Session's response will be buffered until complete, then the BeforeResponse event fires, then the response is sent to the client. The last event guaranteed to fire before the client starts getting response bytes is FiddlerApplication.ResponseHeadersAvailable. You can use that event handler to set the bBufferResponse property if you need to modify the response bytes before the client receives them.


< Back to Help Homepage



©2018 Eric Lawrence