3

I have a folder that contains 30,000 components and all will be rendered on a page, I am using following line in my page design to render component using a component template

<!-- TemplateBeginRepeat name="GlossaryTerms" -->
                @@RenderComponentPresentation()@@
        <!-- TemplateEndRepeat -->

where "GlossaryTerms" is table of all glossary components and glossary template. When I publish my page all HTML of all 10,000 components is rendered and component metadata is also pushed into database.

Problem: Page loading time of loading 10,000 component's HTML is very high, takes 20 to 30 seconds. If I remove "@@RenderComponentPresentation()@@" html is not rendered and component metadata is also not pushed into database. Is there any possibility to push metadata of all components into database but without rendering into page?

1 Answer 1

9

Website page load times

When you say that the page loading time for 10,000 Components is very high, taking 20 to 30 seconds, I presume that you are talking about the time to actually return the final webpage to the website user, when requested by the browser.

If so, then I would agree that this is a concern, and you may want to reconsider restructuring your content to reduce the amount of content displayed on the screen. You could do this, for example, by:

  1. Paginating the glossary terms (using page numbers)
  2. Having the glossary terms of different pages, with an A-Z index
  3. Using infinite scroll to only load in the glossary terms as needed.

Publishing time

If, on the other hand, the 20-30 second delay that you are experiencing is happening when you re-publish the Page from within Tridion, then I would suggest that this isn't too bad - if you have 30,000 Components, then this will mean that there are 1000 Components being processed per second!

If you really need to speed up the publishing time for this Page, then I'd suggest that you implement this using Dynamic Component Presentations (DCPs) (login required) for each of your glossary terms, and use the Content Delivery API to fetch and render each of these.

Using server-side application logic to fetch and render each of the glossary terms will prevent all 30,000 of your Components from having to be re-published each time you make a change.

Following an initial publish of all of the Glossary Components, you will only have to re-publish any new or updated Components in the future.

If you implement these as DCPs, then you will probably want to introduce a level of application caching, and also to ensure that the Tridion Cache Channel Service is running and configured correctly.

Combined approach

You may even want to combine the two approaches above. For example, you could have an infinite scroll that loads in Dynamic Component Presentations.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.