Replace naive page pool mechanism with a more realistic one that can handle larger sites

Details

Description

The current page pooling mechanism is not very smart: pages are cached in memory forever, regardless of whether they are ever used, and a new page instance will be created any time a page is needed.

A less naive implementation would limit the number of page instances.

Page instances should be purged periodically, based on a LRU algorithm. The cutoff time should be configurable.

The instance pool for a page/locale combination should track the number of created instances. There should be a hard and soft limit on the number of page instances; that is, track the number of page instances currently "in play". If the soft limit is exceeded, wait a short time (a few milliseconds, configurable) for an instance to become available, then create a fresh instance (unless the hard limit has been reached).