What
the beautiful caching does is it stores the results of previous permission
checks so that the next time that same permission is checked, it
doesn't have to run the algorithm again. The cost of running the algorithm has been reduced to the cost of a hash table lookup. Anything that invalidates the beautiful cache also invalidates your ACL, so you don't need to worry about invalidation. It is, in a word, beautiful.
Permission checking used to cause over half of the user-visible
delay on Tigris sites, just because it was such a common action. The beautiful caching (in association with other
types of caching) basically reduces this to zero; as Jody said, "At
last, free checking." Unfortunately, I neglected to backport beautiful caching to the 1.0 branch, so JXTA doesn't have it right now. But it probably will soon.
Next time: Clustering, RMI, and You
Thu Apr 26 2001 00:02:
I don't really want to go to sleep, so I'll explain the beautiful
caching a little bit. Helm has an access control list which grabs
a bunch of information from the database when you log in. Whenever
you do something that requires a permission check,
your ACL runs a little algorithm
to see if any of your roles give you the required permission. Displaying your start page, for instance, requires over a hundred permission checks, so this piece of code gets run a lot.