5

I have a form with 10 fields and each field's value is coming from SDL Keywords (refer below images).

And some of them have over 200 values. This is making loading of the page slow.. Is there any way, this can be improved? enter image description here enter image description here

1
  • I think it can be implied, but to be clear this is the retrieval of Keywords in delivery? What does the query look like? This can help get feedback on ways to improve it. Commented Mar 20, 2018 at 11:00

3 Answers 3

4

You could load the values for each of the fields when they're clicked, a sort of lazy loading if you will. Also, caching comes to mind. That won't help you with the first load, but subsequent loads will be significantly faster. You haven't specified how your delivery is set up (DD4T, DXA, other) but each one has multiple levels of caching. For example DXA 2.0 has more caching layers than my neighbour has hair on his head :). You could even add additional in-memory or "caching as a service" caches in your application. You can find loads of blog articles, StackExchange questions on how to configure/implement caching, and of course there's always docs.sdl.com

Another thing worth looking into is maybe changing the taxonomies to be less complex if possible, but, Tridion should handle huge taxonomies without any problem...

2
  • Atila ..I think its a hybrid(both dxa and DD4T)..but source of the CT needs to be changed manually ..so it might be using DD4T Commented Mar 20, 2018 at 10:26
  • Yeah in that case caching is indeed your friend + also take a look at the approach suggested below. You can publish these into a separate json and handle it from your app server.
    – Atila Sos
    Commented Mar 20, 2018 at 12:03
3

Different many ways to able to achieve the performance of the category keyword used in the dropdown list.

  1. Get the country category list and cache on the server for longer with configurable cache settings, render the country list on the page as a javascript script block or return as a javascript file like /en/Form/Contrylist.js (consider cache this file on browser cache for 5 to 10mins) even there wont be no call will go to server at all or if you are using CDN cache it there)

<script type="text/javascript/">

var countrylist = [{"tcmId":"tcm:4-313-1024","description":"India","key":"IN"},{"tcmId":"tcm:4-53-1024","description":"Netherlands","key":"NL",}]

//TODD Load it using Jquery init in your dropdown

</script>

  1. Publish it as countrylist.xml or countrylist.json from CMS using custom TBB templates, follow the same method for rendering on the page as script block or file reading it from the file instead of a query from the broker.

I hope it helps

1
  • 1
    +1, I've typically suggested templating out such lists or configuration elements for fast retrieval in the website. Commented Mar 20, 2018 at 10:59
1

You can use Application Caching for the results your are fetching from Categories and Keywords. One first load, you can fetch it from Broker DB, and save the result in Cache. On subsequent loads, the code should look into cache first, and if the key is not available, then only execute the code to retrieve the lists from Broker DB. This will increase the performance of the page, and reduce Content Service Calls to broker.

Please let me know, if you need the code snippets to implement Application Caching in C#

1
  • +1, Sharad, it will be helpful to provide some reference code. Commented Mar 21, 2018 at 5:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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