On Feb 11, 10:49 am, Anton J Aylward <radi...@antonaylward.com> wrote: > <r:children:each order="asc"> > <r:unless_content part="no-map"> > <li> > <r:link /> > </li> > <r:if_children> > <ul> > <r:snippet name="sitemapper" /> > </ul> > </r:if_children> > </li> > </r:unless_content> > </r:children:each> > > Yes, its still recursive, there no way round that for a general > algorithm. Perhaps "children:each" is faster than "nav"
I tried the above code and did some apachebench tests with cache busting. Doing this yields marginally better result. Not by much. > I suspect a lot of your time is because the site is deeply nested. I checked the content structure. We have at most 4 levels of page hierarchy, including the homepage Homepage -- Level 2 ---- Level 3 ------ Level 4 ------ Level 4 ---- Level 3 -- Level 2 I wouldn't consider this very deep. In any case, so far my ideas to improve the performance: A) Write an extension that will load just the necessary attributes (page title, slug, and position) from the whole page result set (minus no-map pages). Then process the in-memory result set instead of recursively expensive database calls for each page's children. Shouldn't cost too much memory usage even with 10k pages. B) Write an extension that will force sitemap cache to be rebuilt every time a page is modified and is not a 'no-map'. Any other ideas?