I would think that route one is a bad option because the query string parameters trigger the dispatcher to not cache the requests. I would think that using selectors or suffixes would be a better approach. Perhaps avoiding the slew of jsps by reading the selectors from the slingRequest path info in the one jsp and responding accordingly.
If your page consists of a combination of distinct building blocks, and for each building block you have a small number a variantions (3-5), you could use SSI on the dispatcher webserver to build the complete page. Then each individual building block can be cached at the dispatcher, reducing the load on CQ5 publishing dramatically.
Hi guys thanks for the ideas!
We have already started developing using selector and so far so good! Thanks for your replies!