The answer to your question is asyncronous url monikers.
I got the idea from Visual Studio. If you have ever used visual
studio help, you can see this in action. Bring up help and right
click on the page and bring up the properties: It uses help:\\. Now
try to go find the page referenced on your hard disk....
The browser actually does it's work via com monikers. There are
several installed as part of ie. For example, if you type
res:\\file.exe?foo.html, there is a res: com object that will open
file.exe and try to find a resource called foo.html and stream it
back to the browser.
I wrote a zip:\\ com object for the browser: Usage is
zip:\\file.zip?test.html. It opens the zip file, locates the file
and decompresses it back to the browswer.
I've also built thin thin clients that don't use a webserver using
this method. The com object does a standard three-tier client server
application, caching lots of information on the client and building
the html on the fly on the client. The only traffic to the server
was the database calls. Never have you seen webpages fly like this
(I had an application where the latency of the web was way too
slow!).
To write a com object to intercept calls between the server and
browser should be about 100 lines of code. You can write it an
managed or unmanaged code.