I've got some changes to the DatabasePsmlManagerService to drastically reduce the number of hits against the db, or, in other words, greatly improve it's caching.
Currently, it is using a "WeakHashmap" to cache psml docs. In my experience with it, docs are rarely found in the cache. They sometimes are, and I think this is when there's an overlapping request for a doc or successive doc requests without a garbage collect in between. But usually, the cache is empty. This is consistent with my read of what a WeakHashmap does. In addition, the profiler tries a series of locator combinations until a page is found. In my setup, it always tries three, and the third one finds my psml doc. These first two requests happen each time, even if the successful one has been cached. Here's my changes: First, I use a Hashmap instead of a weak one. Let it cache. The class has a thread which refreshes the cache from the db to handle changes made to the db behind Jetspeed's back. Second, I am caching failures as well as successes. Those first two locators will be found, and found as null, in the cache, so the db does not have to be consulted each request, once we know they are NOT there. These will also be refreshed by the refreshing thread - left null or filled in. The result is a significant reduction of db hits for pages when the application has frequent requests for a page or many users using the same page (my app does both!). I'm happy to check this in, sharing the improvements. Any comments? Any concerns? Thanks! - Glenn -------------------------------------------- Glenn R. Golden, Systems Research Programmer University of Michigan School of Information [EMAIL PROTECTED] 734-615-1419 -------------------------------------------- -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
