I just had a look and can't see any easy way to tackle (1). It looks like most of the slow queries now generate a huge temp table (i.e. 22 thousand largish rows) which exceeds the shared memory cache. It may be possible to tune postgres but I don't know how off the top of my head.
(3) can be tackled by
RVM-307 ... should be easy to do but I am reluctant to tackle as I can't monitor the situation.
(2) is probably the way forward. At one stage I had a version that did produce a nice easy queryable olap like table (see tags/pre-olap-deletion) so this could potentially be revived for performing queries against.
Images/html generated is already cached (see the public/results/* directories) but the page needs to be hit once. It looks like someone (maybe me?) tried to do this via wget after an import but disabled this and had some bad syntax. I fixed the syntax errors and reenabled this so it may be possible that after import the performance report is regenerated and thus is served as a static page when a human requests it. (To disable it in case I stuffed something up change perform_wget=true to perform_wget=false in app/services/test_run_importer.rb)