Use AJAX to load the remote sites into a hidden DIV as soon as your main page loads. When the user clicks on the link, hide the main DIV and show the corresponding DIV. Since AJAX runs asynchronously in the background, the loading will happen while the user is reading the main page, and hopefully it will be done by the time they click on the link.
Another option is to use AJAX at the time the user clicks on the link. While waiting for the page to arrive, display a spinner and a message saying “This takes a while, please wait…”.
solved jQuery preloading of external website [closed]