The approach should be to make as much of the page as static as possible so it can be cached for better performance, so the page is rendered from Dispatcher rather than going to the publish instance.
For any components in the page that need to be rendered based on the user accessing the page(personalised), then it's best to use asynchronous calls at runtime. These calls could be back to the publish instance or they could be to your CRM system, you could then personalise the page for the specific user or personalise the page based on the segment the user matches(you don't need to know exactly who the person is in this use case)
Regards,
Opkar