Somewhat tangentially, I'd just like to mention my method for splitting tasks among Web servers: the
pound proxy.
Get your Apache daemon, running your dynamic code, to listen on localhost port 10000. Then have your lightweight webserver listen on localhost port 10001.
You configure pound to listen to the world on port 80, and basically tell it: "any URL that ends with .pl goes to localhost:10000, otherwise localhost:10001" or similar.
This can also be used, for example, to have a single Linode distribute load across several.