Many thanks Alan. Of course it helped. Antonio Gallardo
El Sábado, 21 de Septiembre de 2002 04:58, Alan Hodgkinson escribió: > Antonio Gallardo Rivera wrote: > > I have a little web application with aprox. 123 pages. I need to setup > > the users and groups permisions to this pages. I am using the > > Authentication Framework. All this permisions are stored in a database in > > the server. The question is: > > > > Where are all the session data stored or mantained? > > On the server in the JSP container. > > > I ask this because I need to know what is the cost of read once and store > > all this data inside the user session vrs. Retrieve a value from the > > database on every access (using the user ID). > > > > I know this is a trade off between database transacctions vrs. network > > bandwidth. > > No, it not a transaction vs. network bandwidth, since the session > data is available locally on the server to your Cocoon Java classes. > In fact, if your database server is on a separate machine you'll > need some more bandwidth to talk to it. :) > > Caching user specific information in the session is a normal trick for > boosting performance. You just need to be aware that database updates > from other users or administrators may make it out of date. Typically > you need to restart the application or implement some sort of 'reset' > mechanism that gets triggered when a database update occurs that > affects the cached data. > > Another trick is to have a global cache accessable to all users. You > then provide accessor methods that could go to the database in the > data hasn't been read yet. If I was doing this now I would use Avalon > components as the basis of a caching system. > > Yet another trick is to cache your data globally and provide a link > from the session. When the session expires you can retain (some of) > the cached data. A typical use is to keep the entire user profile > information in-memory. This makes logins fast, and is also nice if > the same users log in and out a lot. > > I worked on JSP based systems where we cached _lots_ of global data. > In our case it was reference data from a database, which almost never > got changed. We just restarted the application after a reference > data update. The caches allowed us to simplify our SQL joins > considerably, making the DB requests much faster. > > We loaded the caches at system start. This made the delivery of the > very first page extremely slow (requesting one page was part of the > start up procedure), but after that it was fast. > > A nice hack to stop your global data from being garbage collected is > to register (e.g. put() ) your global context (which would contain > references to all your caches) into the system properties. Yeah, it's > ugly.. but it works. [If anyone knows a cleaner trick, let me know.] > > A note about performance issues: Often we make the wrong assumptions. > > If you write maintainable code, which is what the Avalon framework > encourages, it's often better to carefully define the interfaces, and > just throw up some basic code get the system running. Then find the > bottlenecks (which are often in surprising places) and refactor as > necessary. > > Hope this helped. > > Best wishes, > > Alan. > > --------------------------------------------------------------------- > Please check that your question has not already been answered in the > FAQ before posting. <http://xml.apache.org/cocoon/faq/index.html> > > To unsubscribe, e-mail: <[EMAIL PROTECTED]> > For additional commands, e-mail: <[EMAIL PROTECTED]> --------------------------------------------------------------------- Please check that your question has not already been answered in the FAQ before posting. <http://xml.apache.org/cocoon/faq/index.html> To unsubscribe, e-mail: <[EMAIL PROTECTED]> For additional commands, e-mail: <[EMAIL PROTECTED]>