Websites you visit more than once get cached anyway to a lesser or greater extent, cutting down on the waiting even more
Unless care is taken from the server to mark an expiry-date on all objects, all cached objects needs to query the server for updates. IE happily ignores this HTTP fact if you have "check for updates" to "automatic", which results in faster, but often incorrect, page loads.
It's not un-common for pages to have an object count past 30 (javascript files, style files, images), this results in a massive number of requests. First, the subsequent requests can only be served after parsing the document HTML, subsequent requests after parsing style sheets (embedded images in styles), parsing and execiting script (Web 2 dynamically loaded content). Second Browsers defaults to a fixed number of concurrent requests to the same server, so these requests are done more or less sequentially.
If you have low latency to the server, you probably won't notice, but if you have 200 ms latency, load time can easily exceed 5 second. You can up the number of concurrent requests, but this puts more strain on the servers because more sessions are created/destroyed, and thus is an unpopular solution. One of Yahoo guidelines for high performance webpages is to pack all style sheets into one file (which is contrary to the concept of
cascading styles), similar with script files and to host images on a number of subdomains to minimize number of reqeusts in total and maximize requests per second.
Encapsulating an entire page into one request is the optimal solution, both from a client and a server perspective. You would then only need to request objects exterior to the website (like ads).
EDIT: .mht indeed seems like the correct solution.
Cheers