We collect the data, then filter it, then display it. Will do a Review My Startup in a few hours :)
We collect the data, then filter it, then display it. Will do a Review My Startup in a few hours :)
The users will see the full page instantly, but all the data-heavy tables will have spinner.gif laid over them until they're loaded.
You never want to serve up that many XML feeds live because when one of them is slow or down, so is your site.
I built a similar site a year back and what I did was pull in the UK XML data daily (the feed was updated daily) and database that mother. I'm not sure how often Expedia updates its hotel prices, but you could maybe poll every couple of hours instead.
We also had a free search for anywhere in the world, so we'd pop up a spinner and grab the XML. Then we'd cache that result set in the DB with a rudimentary script and store it for the next 24 hours. That would then be served to anywhere searching for the same thing in the meantime.
Overall, it sped things up dramatically.
Progress bars are not an optimal solution to this. Many websites shoot for 3 seconds or less load time because a lot of people will not want to wait.
Another tactic might be to prefetch the data somehow as soon as the first page loads into a visitors browser and feed the data to the user before he asks for it. If he does not ask for it you will burn unneeded bandwidth preloading it, but something needs to be done to get load times down from 10 seconds to avoid losing users.