See this thread:
https://openacs.org/forums/message-view?message_id=144560 on merging the concept of cr_folders and site_nodes.
We could abstract the folders further to allow them to contain any object.
By assigning one folder to each site_node and naming objects that should have URLs (and falling back to object_id as the name if its not named) any URL can be calculated efficiently on a display page.
The URL of each site_node is cached in an NSV array, so appending the name or object_id to the site_node would be efficient.
I think this is a good area to explore for future versions of OpenACS (post 5.0).