Hello! We are developing a Sitefinity site that will end up having ~15,000 pages and ~300 page groups. We are using Sitefinity 3.7 SP3. We're in the process of loading pages and are currently at ~6000 pages and 180 page groups, and performance has degraded terribly on a couple pages, most notably the admin Pages.aspx. We were on a poor hardware profile and had load times of ~40 seconds for admin pages.aspx. I upgraded our hardware profile, particularly the database specs, and it now loads ~20 seconds, but it gets worse as we add more page groups and is already close to unusable, and our hardware profile is now excellent.
I played around with SQL profiler and figured out what's happening. When the tree is loaded on the left side of pages.aspx, there's hundreds of this proc call:
exec sf_SecPermissions @P_ItemType=N'Telerik.Cms.ICmsPage',@P_ObjectID='29336D51-20C3-48D5-BB14-7E202905E261',@P_Role=NULL,@P_Application=N'/',@P_RoleProvider=N'Sitefinity'
where the ObjectID corresponds to all pages in sf_pageBase
with a parentID of null. Each individual call takes only a few hundred milliseconds, but with so many calls it's slowing the page down to unusability. So it looks like the tree is looping through every page group in the system and calling a permissions check on it. Is this correct? If so, this seems like a poor design - shouldn't there be a single call to the database with the user as a parameter, and then a single dataset response with all pages the user has access to, as opposed to looping through every page group and doing a separate proc call?
Regardless, is there anything we can do to fix this performance issue? I am running in debug mode, have tweaked IIS to try to improve performance, and tried a # of other things. But with there being 180 (eventually 300) separate database proc calls for permissions on a single page load, it's not surprising these things didn't help much.
Thanks in advance!