The best way to configure a Drupal website quickly and efficiently is to use a profile. However, no profile is going to do all the work for you, even if you custom design your own. So it's still important to establish a set of procedures for configuring the aspects of a Drupal site.
Maintain a module library, not only in your websites but also locally. Find a way to designate all standard approved modules (those which should be installed in every installation). By the same token, any modules that may be experimental or questionable should likewise be separated or designated as such. Specialty modules, especially e-commerce modules should be grouped by category. Where patches are installed, the module should be re-packaged as a tar-ball with “-patch” in the name. Also keep a collection of standard libraries.
Module in Development
Developing modules may, of course, follow whatever version control system you are using. They are special and do not have to be grouped in the same way as other modules.
Standardize on thumbnail sizes and on photo sizes. Thumbnails are usually square in aspect and scaled and cropped to fit a certain size. It is possible to have more than one thumbnail size, if you have the use case for it. Photos and images for display are not typically cropped, but retain their original aspect.
It’s a can of worms. Introducing a caching function will exponentially increase your chance of a service failure. It is impossible to debug or correct problems when there is caching present. Most tragically, caching can sometimes result in data loss.
I would instead recommend lightweight installations, more server RAM and more powerful hardware that is better optimized for its loads.