I am trying to create an Openlayers map that will display thousands of polygons. And when the user clicks on each, I want some of the metadata to display. Working with this large of a dataset seems like it will be challenging. But I am trying to figure out if there is a standard way to go about this. At this point, I am think I should either

1. display my polygons with WMS and use getfeatureinfo
2. Display with WFS, Load with Strategy.BBOX, and use GetFeature to get meatadata.

Is there a logical way I am missing to load all of this data into a map and have a good speed. I was looking at this page and trying to figure out what they did: <http://protectedplanet.net/>