My homepage was being very sluggish so I ran developer support on it. What is striking is that permissions is by far what is hurting OpenACS's performance (response times) the most and I am very glad that Don's optimizations are under way. For example, on my index page there were two permission_p calls (from the request processor maybe) and each one was taking around 800 milli seconds, alone far more than all other queries on the page combined. I therefore decided to turn on permissions caching despite the warning that some applications access the permissions in the database directly (we really need to fix that). In general we need to make sure that package developers use a Tcl API when they access the database, at least if they are accessing the core datamodel.
I then turned to my bookmarks index page that still was quite slow. It turned out permissions was the problem again. By removing a check of whether the user can write in any of the displayed folders I cut the response time by seconds. The bookmarks select query still takes about 400 ms though and I'd like to remove that if possible.
So thus, finally my question - what is the best way to cache a multirow? I know Don has used caching for the db API for Greenpeace - can we use that already, or should I use a different approach such as manually convert the multirow to a list and cache that?
Thanks!
Request notifications