I think you can get a 33% improvement in performance in less than a hour on a typical silverstripe site.
Firstly most of the clients I have won’t pay more than that anyway so I think 1 hour is a pretty good target.
There are three areas for improvement:
2) Silverstripe caching
3) Apache setup
To improve performance of files you need to start thinking about page requests like conversations on a cell phone. The more efficient the conversation the less it costs you. The efficiency comes down to two factors: less transactions and smaller transactions.
Notice I set the combine directory to the themes folder? Normally silverstripe puts combined files into your assets so that it’ll stay out of any versioning. The issue with this is that if you do background images with syntax like URL(‘../images/myfile.png’) then it’s going to break. So an easy fix is to tell your version control system to ignore any files in these folders called combined.
I’m of the opinion that you should include all the CSS you’re going to use at this point. I used to have a combined CSS file which covered generic stuff and then I would include page specific stylesheets page by page, such as homepage.css. There is two things wrong with this. One, you really shouldn’t have page specific styles, I’m a big advocate for OO CSS. Second since the user is most probably going to visit the homepage first you might as well just combine with your other files.
Now if you’re afraid its going to make your debugging harder, don’t worry silverstripe won’t combine the files until you put silverstripe into live mode.
The other files you want smaller is your images. Firstly make sure you’re compressing the images when exporting from photoshop or fireworks. Second use smush it. Smush it is an image compression tool developed by the yahoo performance team. It strips out extra bytes from your images, however it will not change how your images look. It comes as a tool in ySlow, but normally I use the uploader. Don’t do this too early in your development, wait until your template images (logos, background images, icons etc) are almost ready for launch. Running these images through smush can save some easy Kbs. I’ve run some 450kb homepages through smush and seen 45k drop off. That’s the easiest 10% you’re ever going to see.
Part 2 coming soon, it will cover Silverstripe caching.
As it turns out google has done some more performance testing and due to some changes in how resources are loaded newer browsers can load up to 6 smaller files quicker than 1 large file. See here: http://pagespeed-velocity2011.appspot.com/#14