Both of those are exelecent ideas, and I'd look into implementing the first, which shouldn't be all that difficult to do, preferably as an option. (Many people are using iframeless browsers, or have iframes disabled or filtered.) It should help decently much.
The second option would be wonderful, but probably quite difficult to implement -- I don't know of any existing mechinisim to change the HTTP-level response code of everything-generated pages, but it would be quite useful indeed. (However, it may well be implementable, esp since I think (but am not certian...) that everything is rendered, then sent to the browser in one go.)
I'd look into the big question of the second, but I'm rather full of things on my PM-related hacking TODO list -- replyable patches at present. Since, IIRC, you aren't a pmdev, /msg'ing gods is the first step. Then, a week later, start looking at the code -- for the first, at the chatterbox nodelet, for the second Everything/HTML.pm, and the function Everything::HTML::displayPage, and in purticular, exporting something with which nodes can directly effect the arguments to printHeader. (If, at the same time, you create some way to allow for explicit flushes, such that the header and some of the content get output to the client before rendering is actualy complete, you could signifiantly speed up the /precived/ speed of perlmonks (but not the actual speed). The later will be quite difficult, I think, but the former significantly less so -- though my suggested implementation would add another global.
Warning: Unless otherwise stated, code is untested. Do not use without understanding. Code is posted in the hopes it is useful, but without warranty. All copyrights are relinquished into the public domain unless otherwise stated. I am not an angel. I am capable of error, and err on a fairly regular basis. If I made a mistake, please let me know (such as by replying to this node).