Hi,
I am curious if during the GetBoundingBox request you are loading the entire dataset of a layer? I have done some experimentation and it seems the reported bounding box by the WFS is always the same even if limited to maxresults=1. This can dramatically cut back this functions overall time which would be very helpful to me as I must load each layer and check it's bounding box every time i make a request to zoom to the full extents of my map. Also, in addition to maxresults=1, if you append 'propertyName=' with a column name that does not exist (perhaps even "ColumnDoesNotExist"), only mandatory attributes are passed which can potentially save more time and make the process almost instantaneous.
Please experiment with this on your servers of choice and verify that the boundedBy elements contents to not change no matter what results are returned and see if this can be incorporated. I would like to hit my GeoCache for a search and can not do so without getting the full bounding box first and if this requires loading the entire dataset from the WFS then I have effectively eliminated the purpose of trying to hit the cache to save time.
Thanks.