While Curator’s menu system is about as streamlined as possible, there are some tips and tricks you can use to tune its
performance if fancy yourself as a Vin Diesel type. Most of the delays Curator clients see when rendering their
navigation relates to the permission checking that ensures each user only sees the links they have access to view. One
of the big selling points with Curator is that it inherits permissions from the connected platforms by default, so this
is a necessary step. The good news is that Curator does cache all of those permission checks, so it’s really only an
issue when users first log in to Curator for the day. However, that’s also the first impression users get to your
Curator portal, so it’s understandable that this should be as fast as possible. With a little thought, this is where
performance gains can be realized.
The first thing to check is always that Curator and any platforms it is connected to are running at full speed. If your
Tableau Server is underpowered or is being bombarded by users, that will slow down the permission checks Curator needs
to make. Same goes if the network connection between Curator and the other platforms is handled by letter-carrying
snails instead of bullet train-esque transfers. Lastly, the most common cause of general performance issues with Curator
itself is file system speed. If the storage mounted to your Curator server runs through the laziest of digital
stonemasons hand chiseling each bit on the drive platters, it’s going to slow down things like Curator’s caching system
and generally make life unbearable. Many times, the file system itself is fast but malware detection running on the
server prevents it from running at full speed.
Let’s say your main navigation is organized by high level categories. If most of your users only have access to one or
two of those categories, then it doesn’t make sense to check permissions on each link under the others. By using
Curator’s restrict access functionality, you can set which groups have access to each category and this will essentially
short circuit the permission checking for any top-level categories where the user is restricted.For instance, if you have a category for human resources and you set its restrict access to only allow users in the HR
group, any user who isn’t in the HR group will skip checking the links under the human resources category. Any
permission checks that get skipped means the navigation will render that much faster.
If you’ve got hundreds or thousands of links in your navigation and can’t use the short-circuiting approach above, then
you could try creating landing pages for sections of the navigation to reduce the number of links it needs to check
permissions against.Using the same human resources example, you could create a human resources page that has links to the various human
resources content using the built-in tiles or lists. When you add this page to the navigation, Curator only has to check
whether the user is allowed to see that page, which should be quick. Only when a user clicks to open that human
resources page will Curator check permissions for each of those links on the page. If you repeat this for several
sections of the navigation, it really cuts down on the number of permission checks the menu system needs to make before
showing the home page.
Combining Tableau WorkbooksThe way Curator checks permissions for Tableau is by getting the list of workbooks a user has access to on a per site
basis and then checking which dashboards are in each of those workbooks. This means that if you have a million
dashboards and they are all in their own workbook, Curator is going to have to make a million API (application
programming interface – or a fancy way to say that Curator is talking to Tableau) calls to Tableau just to determine
whether a link should be shown in the navigation. On the other hand, if you combined those into a single workbook with a
million dashboards, Curator would only have to make one API request to Tableau to check. While your network connection
and Tableau Server might be supercharged, there will always be overhead delays when increasing the number of API calls
over the web. By minimizing the number of API calls, you’ll see better performance.
Tableau sites are wonderful for making sure your various audiences are segregated from each other, since each site is
independent from the others. However, this also means that if you have content published from multiple sites, Curator
has to make separate API calls to check permissions for each one. Like combining your dashboards into fewer workbooks,
combining your workbooks into fewer sites will also see those gains.
Connecting to Tableau Server’s RepositoryAs mentioned earlier, making API calls between Curator and Tableau incurs some overhead which slows down the process. An
alternative to that is allowing Curator to connect directly to Tableau Server’s underlying database (AKA repository).
This avoids a lot of that overhead. Additionally, Curator is able to create custom queries to pull exactly the
information it needs in a single request. This includes checking all workbooks at the same time as well as only
requiring Curator to authenticate once instead of once per Tableau site. Needless to say, whenever Curator can use the
repository connection instead of the API, it’s able to shave precious seconds off of its quarter mile time.Unfortunately, connecting to the repository is only possible for Tableau Server; so if you’re using Tableau Cloud, this
won’t be an option for you.
As you’ve probably seen in a lot of motor sports, racers often spin their tires to warm them up before a race. This
increases traction and allows them to go faster around the track. Since Curator uses cache for permission checks, one
way you can make it go faster around the track is to warm its cache at the beginning of each day. In a nutshell, this is
scheduling something each morning to call Curator’s API to generate the navigation for each user before they try to log
in for the first time. When a user does log in for the first time, all of the permission checks will have already been
cached, so Curator can build the navigation fast and furious.Curator’s API end point can be found at /api/v1/Content/generateNavMenus. You’ll need to pass it a valid API key, the ID
of the menu to generate, and the username to generate it for. Documentation on how to call this API endpoint can be
found by navigating to Backend >Settings >Curator >API Keys, click on one of the keys, and change the drop-downs at the
bottom to “Content” and “generateNavMenus,” respectively.If you don’t have a good way to schedule API calls, you can take advantage of Curator’s automation scripts. This feature
is disabled by default, so to enable it navigate to Backend >Settings >Curator >Portal Settings >Features tab >
Functionality Section >Integration Automation switch and save. Once enabled, refresh the page and you should see a new
section under Backend >Integrations >Automation to create scripts or commands. This is an advanced topic, so we’ll leave
the rest up to you to implement, but if you want to create a script to call the API you’ll use Manage Scripts. If you
want to issue commands on Curator’s server to call the API, you’ll use Manage Commands. Both can be configured for
whatever schedule makes sense in your environment.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Curator by InterWorks Documentation","description":"Curator by InterWorks is a powerful platform for embedding and managing analytics content from various sources like Sigma, Tableau, Power BI, and ThoughtSpot. This documentation provides comprehensive guides on setup, integration, and usage.","colors":{"primary":"#6633ff","light":"#6633ff","dark":"#6633ff"},"logo":{"light":"https://mintcdn.com/interworks/4wyo1odt4kBoo2po/assets/curator-logo-black-no-text.svg?fit=max\u0026auto=format\u0026n=4wyo1odt4kBoo2po\u0026q=85\u0026s=26a14da8486342b8bbdda5f79c72f0e0","dark":"https://mintcdn.com/interworks/4wyo1odt4kBoo2po/assets/curator-by-iw-logo-white.svg?fit=max\u0026auto=format\u0026n=4wyo1odt4kBoo2po\u0026q=85\u0026s=5dd65adcd6185f70f6c098070655af20"},"favicon":"https://mintcdn.com/interworks/x0r9dMo3GyjABFAR/assets/favicon.png?fit=max\u0026auto=format\u0026n=x0r9dMo3GyjABFAR\u0026q=85\u0026s=f3e5c38bf31ca711656871b47444bc93","navbar":{"links":[{"href":"https://curator.interworks.com","label":"Marketing Site"}],"primary":{"type":"button","label":"Support","href":"https://interworks.com/help"}},"footer":{"socials":{"x":"https://x.com/interworks","github":"https://github.com/interworks","linkedin":"https://www.linkedin.com/company/interworks"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://curator.interworks.com/blog"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"interworks","hasAudioNarration":false,"actualSubdomain":"interworks","customDomains":["docs.curator.interworks.com"],"gitSource":{"type":"github","owner":"interworks","repo":"curator","deployBranch":"main","contentDirectory":"documentation","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af49723c5d18096e68009b0","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"Documentation","count":220},{"language":"default","tag":"Embedding \u0026 Using Analytics","count":50},{"language":"default","tag":"API","count":44},{"language":"default","tag":"Curator API","count":44},{"language":"default","tag":"Site Content \u0026 Design","count":41},{"language":"default","tag":"Artisan Commands","count":30},{"language":"default","tag":"Site Administration","count":22},{"language":"default","tag":"Creating Integrations","count":20},{"language":"default","tag":"Portal / Core","count":20},{"language":"default","tag":"Tableau","count":17}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"best_practices/performance/menu_tuning","slug":"/best_practices/performance/menu_tuning","pageMetadata":{"title":"Menu Tuning","description":"Optimize menu system performance with tips and configuration recommendations","href":"/best_practices/performance/menu_tuning"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Optimize menu system performance with tips and configuration recommendations\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={p:`p`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`menu-overview`,children:`Menu Overview`}),`\n`,_jsx(_components.p,{children:`While Curator’s menu system is about as streamlined as possible, there are some tips and tricks you can use to tune its\nperformance if fancy yourself as a Vin Diesel type. Most of the delays Curator clients see when rendering their\nnavigation relates to the permission checking that ensures each user only sees the links they have access to view. One\nof the big selling points with Curator is that it inherits permissions from the connected platforms by default, so this\nis a necessary step. The good news is that Curator does cache all of those permission checks, so it’s really only an\nissue when users first log in to Curator for the day. However, that’s also the first impression users get to your\nCurator portal, so it’s understandable that this should be as fast as possible. With a little thought, this is where\nperformance gains can be realized.`}),`\n`,_jsx(Heading,{level:`2`,id:`the-obvious-stuff`,children:`The Obvious Stuff`}),`\n`,_jsx(_components.p,{children:`The first thing to check is always that Curator and any platforms it is connected to are running at full speed. If your\nTableau Server is underpowered or is being bombarded by users, that will slow down the permission checks Curator needs\nto make. Same goes if the network connection between Curator and the other platforms is handled by letter-carrying\nsnails instead of bullet train-esque transfers. Lastly, the most common cause of general performance issues with Curator\nitself is file system speed. If the storage mounted to your Curator server runs through the laziest of digital\nstonemasons hand chiseling each bit on the drive platters, it’s going to slow down things like Curator’s caching system\nand generally make life unbearable. Many times, the file system itself is fast but malware detection running on the\nserver prevents it from running at full speed.`}),`\n`,_jsx(Heading,{level:`2`,id:`short-circuiting`,children:`Short-Circuiting`}),`\n`,_jsx(_components.p,{children:`Let’s say your main navigation is organized by high level categories. If most of your users only have access to one or\ntwo of those categories, then it doesn’t make sense to check permissions on each link under the others. By using\nCurator’s restrict access functionality, you can set which groups have access to each category and this will essentially\nshort circuit the permission checking for any top-level categories where the user is restricted.`}),`\n`,_jsx(_components.p,{children:`For instance, if you have a category for human resources and you set its restrict access to only allow users in the HR\ngroup, any user who isn’t in the HR group will skip checking the links under the human resources category. Any\npermission checks that get skipped means the navigation will render that much faster.`}),`\n`,_jsx(Heading,{level:`2`,id:`utilizing-landing-pages`,children:`Utilizing Landing Pages`}),`\n`,_jsx(_components.p,{children:`If you’ve got hundreds or thousands of links in your navigation and can’t use the short-circuiting approach above, then\nyou could try creating landing pages for sections of the navigation to reduce the number of links it needs to check\npermissions against.`}),`\n`,_jsx(_components.p,{children:`Using the same human resources example, you could create a human resources page that has links to the various human\nresources content using the built-in tiles or lists. When you add this page to the navigation, Curator only has to check\nwhether the user is allowed to see that page, which should be quick. Only when a user clicks to open that human\nresources page will Curator check permissions for each of those links on the page. If you repeat this for several\nsections of the navigation, it really cuts down on the number of permission checks the menu system needs to make before\nshowing the home page.\nCombining Tableau Workbooks`}),`\n`,_jsx(_components.p,{children:`The way Curator checks permissions for Tableau is by getting the list of workbooks a user has access to on a per site\nbasis and then checking which dashboards are in each of those workbooks. This means that if you have a million\ndashboards and they are all in their own workbook, Curator is going to have to make a million API (application\nprogramming interface – or a fancy way to say that Curator is talking to Tableau) calls to Tableau just to determine\nwhether a link should be shown in the navigation. On the other hand, if you combined those into a single workbook with a\nmillion dashboards, Curator would only have to make one API request to Tableau to check. While your network connection\nand Tableau Server might be supercharged, there will always be overhead delays when increasing the number of API calls\nover the web. By minimizing the number of API calls, you’ll see better performance.`}),`\n`,_jsx(Heading,{level:`2`,id:`combining-tableau-sites`,children:`Combining Tableau Sites`}),`\n`,_jsx(_components.p,{children:`Tableau sites are wonderful for making sure your various audiences are segregated from each other, since each site is\nindependent from the others. However, this also means that if you have content published from multiple sites, Curator\nhas to make separate API calls to check permissions for each one. Like combining your dashboards into fewer workbooks,\ncombining your workbooks into fewer sites will also see those gains.\nConnecting to Tableau Server’s Repository`}),`\n`,_jsx(_components.p,{children:`As mentioned earlier, making API calls between Curator and Tableau incurs some overhead which slows down the process. An\nalternative to that is allowing Curator to connect directly to Tableau Server’s underlying database (AKA repository).\nThis avoids a lot of that overhead. Additionally, Curator is able to create custom queries to pull exactly the\ninformation it needs in a single request. This includes checking all workbooks at the same time as well as only\nrequiring Curator to authenticate once instead of once per Tableau site. Needless to say, whenever Curator can use the\nrepository connection instead of the API, it’s able to shave precious seconds off of its quarter mile time.`}),`\n`,_jsx(_components.p,{children:`Unfortunately, connecting to the repository is only possible for Tableau Server; so if you’re using Tableau Cloud, this\nwon’t be an option for you.`}),`\n`,_jsx(Heading,{level:`2`,id:`warming-the-cache-advanced`,children:`Warming the Cache (Advanced)`}),`\n`,_jsx(_components.p,{children:`As you’ve probably seen in a lot of motor sports, racers often spin their tires to warm them up before a race. This\nincreases traction and allows them to go faster around the track. Since Curator uses cache for permission checks, one\nway you can make it go faster around the track is to warm its cache at the beginning of each day. In a nutshell, this is\nscheduling something each morning to call Curator’s API to generate the navigation for each user before they try to log\nin for the first time. When a user does log in for the first time, all of the permission checks will have already been\ncached, so Curator can build the navigation fast and furious.`}),`\n`,_jsx(_components.p,{children:`Curator’s API end point can be found at /api/v1/Content/generateNavMenus. You’ll need to pass it a valid API key, the ID\nof the menu to generate, and the username to generate it for. Documentation on how to call this API endpoint can be\nfound by navigating to Backend >Settings >Curator >API Keys, click on one of the keys, and change the drop-downs at the\nbottom to “Content” and “generateNavMenus,” respectively.`}),`\n`,_jsx(_components.p,{children:`If you don’t have a good way to schedule API calls, you can take advantage of Curator’s automation scripts. This feature\nis disabled by default, so to enable it navigate to Backend >Settings >Curator >Portal Settings >Features tab >\nFunctionality Section >Integration Automation switch and save. Once enabled, refresh the page and you should see a new\nsection under Backend >Integrations >Automation to create scripts or commands. This is an advanced topic, so we’ll leave\nthe rest up to you to implement, but if you want to create a script to call the API you’ll use Manage Scripts. If you\nwant to issue commands on Curator’s server to call the API, you’ll use Manage Commands. Both can be configured for\nwhatever schedule makes sense in your environment.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Menu Tuning","description":"Optimize menu system performance with tips and configuration recommendations","href":"/best_practices/performance/menu_tuning"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Menu Overview","slug":"menu-overview","depth":2,"children":[]},{"title":"The Obvious Stuff","slug":"the-obvious-stuff","depth":2,"children":[]},{"title":"Short-Circuiting","slug":"short-circuiting","depth":2,"children":[]},{"title":"Utilizing Landing Pages","slug":"utilizing-landing-pages","depth":2,"children":[]},{"title":"Combining Tableau Sites","slug":"combining-tableau-sites","depth":2,"children":[]},{"title":"Warming the Cache (Advanced)","slug":"warming-the-cache-advanced","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"interworks","siteName":"Curator by InterWorks Documentation","title":"Menu Tuning - Curator by InterWorks Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-29T00:10:35.897Z","originalFileLocation":"best_practices/performance/menu_tuning.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Optimize menu system performance with tips and configuration recommendations\">\u003cmeta data-mint-head name=\"application-name\" content=\"Curator by InterWorks Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/interworks/_jKo7gt-H0Z8pmVR/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/interworks/_jKo7gt-H0Z8pmVR/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/interworks/_jKo7gt-H0Z8pmVR/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/interworks/_jKo7gt-H0Z8pmVR/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/interworks/_jKo7gt-H0Z8pmVR/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/interworks/_jKo7gt-H0Z8pmVR/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/interworks/_jKo7gt-H0Z8pmVR/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/interworks/_jKo7gt-H0Z8pmVR/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/interworks/_jKo7gt-H0Z8pmVR/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Menu Tuning - Curator by InterWorks Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Optimize menu system performance with tips and configuration recommendations\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Curator by InterWorks Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.curator.interworks.com/best_practices/performance/menu_tuning\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://interworks.mintlify.site/_mintlify/api/og/v2?division=Performance\u0026amp;title=Menu+Tuning\u0026amp;description=Optimize+menu+system+performance+with+tips+and+configuration+recommendations\u0026amp;theme=2b9751acade493031bd41d36\u0026amp;signature=36265c9e669237b625a6e04fcc8a52abaf2bce7f276d3ce10a32f1c9acffea0a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Menu Tuning - Curator by InterWorks Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Optimize menu system performance with tips and configuration recommendations\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://interworks.mintlify.site/_mintlify/api/og/v2?division=Performance\u0026amp;title=Menu+Tuning\u0026amp;description=Optimize+menu+system+performance+with+tips+and+configuration+recommendations\u0026amp;theme=2b9751acade493031bd41d36\u0026amp;signature=36265c9e669237b625a6e04fcc8a52abaf2bce7f276d3ce10a32f1c9acffea0a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/interworks/_jKo7gt-H0Z8pmVR/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Curator by InterWorks Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6633ff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.curator.interworks.com/best_practices/performance/menu_tuning\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/best_practices/performance/menu_tuning.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.curator.interworks.com/#organization\",\"name\":\"Curator by InterWorks Documentation\",\"url\":\"https://docs.curator.interworks.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/interworks/4wyo1odt4kBoo2po/assets/curator-logo-black-no-text.svg?fit=max\u0026auto=format\u0026n=4wyo1odt4kBoo2po\u0026q=85\u0026s=26a14da8486342b8bbdda5f79c72f0e0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.curator.interworks.com#website\",\"name\":\"Curator by InterWorks Documentation\",\"url\":\"https://docs.curator.interworks.com\",\"publisher\":{\"@id\":\"https://docs.curator.interworks.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.curator.interworks.com/best_practices/performance/menu_tuning#webpage\",\"url\":\"https://docs.curator.interworks.com/best_practices/performance/menu_tuning\",\"name\":\"Menu Tuning\",\"description\":\"Optimize menu system performance with tips and configuration recommendations\",\"dateModified\":\"2026-01-29T00:10:35.897Z\",\"isPartOf\":{\"@id\":\"https://docs.curator.interworks.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.curator.interworks.com/best_practices/performance/menu_tuning#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.curator.interworks.com/best_practices/performance/menu_tuning#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Best Practices\",\"item\":\"https://docs.curator.interworks.com/best_practices/security/password_settings\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Menu Tuning\",\"item\":\"https://docs.curator.interworks.com/best_practices/performance/menu_tuning\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.curator.interworks.com/best_practices/performance/menu_tuning#article\",\"headline\":\"Menu Tuning\",\"name\":\"Menu Tuning\",\"description\":\"Optimize menu system performance with tips and configuration recommendations\",\"url\":\"https://docs.curator.interworks.com/best_practices/performance/menu_tuning\",\"mainEntityOfPage\":{\"@id\":\"https://docs.curator.interworks.com/best_practices/performance/menu_tuning#webpage\"},\"dateModified\":\"2026-01-29T00:10:35.897Z\",\"publisher\":{\"@id\":\"https://docs.curator.interworks.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.curator.interworks.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Curator by InterWorks Documentation\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Curator by InterWorks Documentation\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/best_practices/performance/menu_tuning.md","siteName":"Curator by InterWorks Documentation","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://curator.interworks.com/blog"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":[{"title":"Welcome to Curator","href":"/get_started/welcome"},{"title":"Curator SaaS","href":"/get_started/curator_saas"},{"title":"Self-hosted","href":"/get_started/self_hosted_overview"}]},{"group":"Self-hosted Setup","pages":[{"group":"Installation","pages":[{"title":"Requirements","href":"/setup/Server_Requirements/requirements"},{"title":"Linux Installation","href":"/setup/installation/linux_installation"},{"title":"Windows Installation","href":"/setup/installation/windows_installation"},{"title":"IIS Installation (Unavailable)","href":"/setup/installation/iis_installation"}]},{"group":"SSL","pages":[{"title":"Linux SSL","href":"/setup/ssl/linux_ssl"},{"title":"Windows SSL","href":"/setup/ssl/windows_ssl"},{"title":"Converting PFX/P12 Certificates to PEM","href":"/setup/ssl/windows_ssl_pfx_to_pem"},{"title":"Force SSL","href":"/setup/ssl/force_ssl"},{"title":"Basic HTTP Authentication","href":"/setup/ssl/basic_http_authentication"},{"title":"Windows SSL (IIS)","href":"/setup/ssl/windows_ssl_iis_deprecated"},{"title":"Windows Apache SSL Troubleshooting","href":"/setup/ssl/windows_ssl_troubleshooting"}]},{"group":"High Availability","pages":[{"title":"High Availability","href":"/setup/high_availability/high_availability"}]},{"group":"Central Dispatch","pages":[{"title":"Linux Central Dispatch","href":"/setup/central_dispatch/linux_central_dispatch"},{"title":"Windows Central Dispatch","href":"/setup/central_dispatch/windows_central_dispatch"}]},{"group":"Proxy Configuration","pages":[{"title":"Reverse Proxy","href":"/setup/proxy_configuration/reverse_proxy"},{"title":"Forward Proxy","href":"/setup/proxy_configuration/forward_proxy"}]},{"group":"Email","pages":[{"title":"Email Configuration","href":"/setup/email/email_configuration"}]}]},{"group":"Authentication","pages":[{"title":"Overview","href":"/setup/authentication/overview"},{"group":"Authentication Methods","pages":[{"title":"Pass-Through Authentication","href":"/setup/authentication/pass_through_authentication"},{"group":"SAML","pages":[{"title":"Okta","href":"/setup/authentication/okta_saml"},{"title":"OneLogin","href":"/setup/authentication/one_login_saml"},{"title":"Microsoft Entra ID (Azure AD)","href":"/setup/authentication/azure_ad_saml"},{"title":"Signing Login Requests","href":"/setup/authentication/signing_saml_login_requests"},{"title":"SAML Troubleshooting \u0026 Maintenance","href":"/setup/authentication/saml_troubleshooting"}]},{"title":"Curator Users","href":"/setup/authentication/curator_users"},{"group":"OAuth / OpenID Connect","pages":[{"title":"OAuth / OpenID Connect","href":"/setup/authentication/openid_connect"},{"title":"OneLogin (OIDC)","href":"/setup/authentication/one_login_oidc"}]},{"title":"Active Directory","href":"/setup/authentication/active_directory"},{"title":"Windows LDAP","href":"/setup/authentication/windows_ldap_iis"}]},{"title":"Multifactor Authentication (MFA)","href":"/setup/authentication/multifactor_authentication"},{"title":"Local Login Fallback","href":"/setup/authentication/local_login_fallback"}]},{"group":"Creating Integrations","pages":[{"title":"Overview","href":"/creating_integrations/overview"},{"group":"Tableau Connection","pages":[{"title":"Creating a Tableau Connection","href":"/creating_integrations/tableau_connection/creating_a_connection"},{"title":"Embed Authentication","href":"/creating_integrations/tableau_connection/embed_authentication"},{"title":"Tableau Cloud Setup","href":"/creating_integrations/tableau_connection/tableau_cloud_setup"},{"title":"Alternative URL Routing","href":"/creating_integrations/tableau_connection/alternative_url_routing"},{"title":"Tableau Server Repository","href":"/creating_integrations/tableau_connection/tableau_server_repository"},{"title":"Trusted Authentication (Unavailable)","href":"/creating_integrations/tableau_connection/trusted_authentication"},{"title":"Tableau Connection Troubleshooting","href":"/creating_integrations/tableau_connection/tableau_connection_troubleshooting"}]},{"group":"Power BI Connection","pages":[{"title":"Azure Registered App Setup","href":"/creating_integrations/power_bi_connection/azure_app_setup"},{"title":"Azure Admin Registered App Setup","href":"/creating_integrations/power_bi_connection/azure_admin_app_setup"},{"title":"Power BI Workspace Access","href":"/creating_integrations/power_bi_connection/power_bi_workspace_access"},{"title":"Curator Connection","href":"/creating_integrations/power_bi_connection/curator_connection"},{"title":"US Government Cloud (GCC) Setup","href":"/creating_integrations/power_bi_connection/us_government_cloud"},{"title":"Troubleshooting Power BI Access","href":"/creating_integrations/power_bi_connection/troubleshooting_power_bi_access"}]},{"group":"ThoughtSpot Connection","pages":[{"title":"Integrating ThoughtSpot with Curator","href":"/creating_integrations/thoughtspot_connection/integrating_thoughtspot_with_curator"}]},{"group":"Sigma Connection","pages":[{"title":"Creating a Sigma Connection","href":"/creating_integrations/sigma_connection/creating_a_sigma_connection"}]},{"group":"Snowflake Connection","pages":[{"title":"Creating a Snowflake Connection","href":"/creating_integrations/snowflake_connection/creating_a_snowflake_connection"}]},{"group":"Updating Connections","pages":[{"title":"Temporarily Disabling Connections","href":"/creating_integrations/updating_connections/temporarily_disabling_connections"},{"title":"Replace Dashboard URLs","href":"/creating_integrations/updating_connections/replace_dashboard_urls"}]},{"title":"API Relays","href":"/creating_integrations/api_relay"}]},{"group":"Embedding \u0026 Using Analytics","pages":[{"group":"Tableau","pages":[{"group":"Tableau Dashboards","pages":[{"title":"Adding a Dashboard","href":"/embedding_using_analytics/tableau_dashboards/adding_a_dashboard"},{"title":"Tableau Worksheets and Stories","href":"/embedding_using_analytics/tableau_dashboards/tableau_worksheets_and_stories"},{"title":"Generating Titles","href":"/embedding_using_analytics/tableau_dashboards/generating_titles"},{"title":"Data Export","href":"/embedding_using_analytics/tableau_dashboards/data_export"},{"title":"Custom Views","href":"/embedding_using_analytics/tableau_dashboards/custom_views"},{"title":"Email Subscriptions","href":"/embedding_using_analytics/tableau_dashboards/email_subscriptions"},{"title":"Share Workbook","href":"/embedding_using_analytics/tableau_dashboards/share_workbook"},{"title":"Download Workbook","href":"/embedding_using_analytics/tableau_dashboards/download_workbook"},{"title":"Pause and Resume Changes","href":"/embedding_using_analytics/tableau_dashboards/pause_and_resume_changes"},{"group":"URL Actions","pages":[{"title":"URL Action Overrides (Link Target)","href":"/embedding_using_analytics/tableau_dashboards/url_action_overrides_link_target"},{"title":"Navigation with URL Actions","href":"/embedding_using_analytics/tableau_dashboards/cross_dashboard_navigation_url_actions"}]},{"title":"Dashboard Created and Updated Dates","href":"/embedding_using_analytics/tableau_dashboards/dashboard_dates"},{"title":"Dashboard Settings","href":"/embedding_using_analytics/tableau_dashboards/dashboard_settings"},{"title":"Custom Parameters in Tableau Embedding API v3","href":"/embedding_using_analytics/tableau_dashboards/custom_parameters_v3"},{"title":"Chrome and Edge Embedding Issues (Local Network Access)","href":"/embedding_using_analytics/tableau_dashboards/chrome_edge_embedding_issues"}]},{"group":"Tableau Metric","pages":[{"title":"Adding a Pulse Metric","href":"/embedding_using_analytics/tableau_metric/adding_a_pulse_metric"}]}]},{"group":"Power BI","pages":[{"group":"Power BI Reports","pages":[{"title":"Adding a Power BI Report","href":"/embedding_using_analytics/power_bi_reports/adding_a_power_bi_report"},{"title":"Enabling Copilot","href":"/embedding_using_analytics/power_bi_reports/enabling_copilot"}]}]},{"group":"ThoughtSpot","pages":[{"title":"ThoughtSpot Search","href":"/embedding_using_analytics/thoughtspot_content/thoughtspot_search"},{"title":"ThoughtSpot Full App Embed","href":"/embedding_using_analytics/thoughtspot_content/thoughtspot_full_app"}]},{"group":"Filters \u0026 Parameters","pages":[{"title":"Filters","href":"/embedding_using_analytics/filters_parameters/filters"},{"title":"Parameters","href":"/embedding_using_analytics/filters_parameters/parameters"},{"title":"Re-apply Filters on Tab-switch","href":"/embedding_using_analytics/filters_parameters/filter_tab_switch"},{"title":"Hidden Sticky Filters and Parameters","href":"/embedding_using_analytics/filters_parameters/hidden_sticky_filters_and_parameters"},{"title":"Specify Filter Sheet","href":"/embedding_using_analytics/filters_parameters/specify_filter_sheet"},{"title":"Filter Apply Button","href":"/embedding_using_analytics/filters_parameters/filter_apply_button"},{"title":"Filter Categories","href":"/embedding_using_analytics/filters_parameters/filter_categories"},{"title":"Preloading Filters and Parameters","href":"/embedding_using_analytics/filters_parameters/preloading_filters_and_parameters"},{"title":"Caching Filter and Parameter Options","href":"/embedding_using_analytics/filters_parameters/caching_filter_and_parameter_options"}]},{"group":"Data Manager","pages":[{"title":"Data Manager Basics","href":"/embedding_using_analytics/data_manager/data_manager_basics"},{"title":"Creating a Form","href":"/embedding_using_analytics/data_manager/creating_a_form"},{"title":"Updating Data Groups","href":"/embedding_using_analytics/data_manager/updating_data_groups"},{"title":"Mark Commenting","href":"/embedding_using_analytics/data_manager/mark_commenting"},{"title":"Dashboard Feedback","href":"/embedding_using_analytics/data_manager/dashboard_feedback"},{"title":"User Commenting","href":"/embedding_using_analytics/data_manager/user_commenting"},{"title":"Field Calculations","href":"/embedding_using_analytics/data_manager/field_calculations"},{"title":"Importing Data","href":"/embedding_using_analytics/data_manager/importing_data"},{"group":"Accessing Data","pages":[{"title":"Exporting Data","href":"/embedding_using_analytics/data_manager/exporting_data"},{"title":"Connecting to Data Manager","href":"/embedding_using_analytics/data_manager/connecting_to_data_manager"},{"title":"Sending Data to Webhooks","href":"/embedding_using_analytics/data_manager/sending_data_to_webhooks"},{"title":"Dynamic Body Content in the API Relay","href":"/embedding_using_analytics/data_manager/api_relay_dynamic_body_content"},{"title":"Web Data Connector (WDC)","href":"/embedding_using_analytics/data_manager/web_data_connector_wdc"}]}]},{"group":"Report Builder","pages":[{"title":"Overview and Enabling Report Builder","href":"/embedding_using_analytics/report_builder/overview_and_enabling_report_builder"},{"title":"Email Option","href":"/embedding_using_analytics/report_builder/email_option"},{"title":"Scheduled Reports","href":"/embedding_using_analytics/report_builder/scheduled_reports"},{"title":"Capture Slides Using Custom Views","href":"/embedding_using_analytics/report_builder/custom_view_capture"},{"title":"Fallback Image","href":"/embedding_using_analytics/report_builder/fallback_image"},{"title":"Watermark Text","href":"/embedding_using_analytics/report_builder/watermark_text"},{"title":"PowerPoint","href":"/embedding_using_analytics/report_builder/powerpoint"},{"title":"Troubleshooting: Charts Missing or Blank in Exported Reports","href":"/embedding_using_analytics/report_builder/troubleshooting"}]}]},{"group":"Site Content \u0026 Design","pages":[{"group":"Theme","pages":[{"title":"Curator Styles","href":"/site_content_design/theme/curator_styles"},{"title":"Custom Styles","href":"/site_content_design/theme/custom_styles"},{"title":"Homepage","href":"/site_content_design/theme/homepage"},{"title":"Titles and Toolbars","href":"/site_content_design/theme/titles_and_toolbars"},{"title":"Mobile Styles","href":"/site_content_design/theme/mobile_overrides"},{"title":"Group Overrides","href":"/site_content_design/theme/group_overrides"},{"title":"Page Meta Titles (SEO)","href":"/site_content_design/theme/page_meta_titles_seo"},{"title":"Themes Controls Reference","href":"/site_content_design/theme/reference"}]},{"group":"Menus","pages":[{"title":"Managing Menus","href":"/site_content_design/menus/managing_menus"},{"title":"Menu Items","href":"/site_content_design/menus/menu_items"},{"title":"Restrict Access","href":"/site_content_design/menus/restrict_access"},{"title":"Tagged Workbooks","href":"/site_content_design/menus/tagged_workbooks"},{"title":"Site Switcher","href":"/site_content_design/menus/site_switcher"}]},{"group":"Pages","pages":[{"title":"Pages Overview ","href":"/site_content_design/pages/pages_overview"},{"title":"Controlling Page Width","href":"/site_content_design/pages/controlling_page_width"},{"title":"Deleting a Page","href":"/site_content_design/pages/deleting_a_page"},{"title":"Tiles","href":"/site_content_design/pages/tiles"},{"title":"Explorer","href":"/site_content_design/pages/explorer"},{"title":"Forms","href":"/site_content_design/pages/forms"},{"title":"Text Element","href":"/site_content_design/pages/text_element"},{"title":"Blogs","href":"/site_content_design/pages/blogs"},{"title":"User Customized Metrics ","href":"/site_content_design/pages/user_customized_metrics"},{"title":"Manual Embed - (iFrames)","href":"/site_content_design/pages/manual_embed_iframes"},{"title":"SSRS Embedding","href":"/site_content_design/pages/ssrs_embedding"},{"title":"Looker Embedding","href":"/site_content_design/pages/looker_embedding"},{"title":"YouTube Embedding","href":"/site_content_design/pages/youtube_embedding"},{"title":"Box Embedding","href":"/site_content_design/pages/box_embedding"},{"title":"Video Uploads","href":"/site_content_design/pages/video_uploads"}]},{"title":"Files","href":"/site_content_design/files/files"},{"title":"Org Chart","href":"/site_content_design/org_chart/org_chart"},{"group":"Content Discovery","pages":[{"title":"Keywords","href":"/site_content_design/content_discovery/keywords"},{"title":"Featuring Content","href":"/site_content_design/content_discovery/featuring_content"},{"title":"Search","href":"/site_content_design/content_discovery/search"},{"title":"Hidden Content","href":"/site_content_design/content_discovery/hidden_content"},{"title":"Favorites","href":"/site_content_design/content_discovery/favorites"},{"title":"Thumbnail Preview Images","href":"/site_content_design/content_discovery/thumbnail_preview_images"}]},{"title":"Loading Screens","href":"/site_content_design/loading_screens/loading_screens"},{"group":"User Notifications and Email","pages":[{"title":"Tutorials","href":"/site_content_design/user_notifications_and_email/tutorials"},{"title":"Error Pages ","href":"/site_content_design/user_notifications_and_email/error_pages"},{"title":"Notices","href":"/site_content_design/user_notifications_and_email/notices"},{"title":"Email Formatting","href":"/site_content_design/user_notifications_and_email/email_formatting"}]}]},{"group":"Users \u0026 Groups","pages":[{"group":"User Management","pages":[{"title":"Users and Groups Overview","href":"/users_groups/user_management/users_and_groups_overview"},{"title":"User Sync and Membership Sync Overview ","href":"/users_groups/user_management/user_sync_and_membership_sync_overview"},{"title":"Reset User's Password","href":"/users_groups/user_management/reset_users_password"},{"title":"Frontend Users","href":"/users_groups/user_management/frontend_users"},{"title":"Automatic License Provisioning","href":"/users_groups/user_management/automatic_license_provisioning"},{"title":"Just-in-time (JIT) Provisioning ","href":"/users_groups/user_management/just_in_time_jit_provisioning"},{"title":"Username Mapping","href":"/users_groups/user_management/username_mapping"},{"title":"Custom Attributes","href":"/users_groups/user_management/custom_attributes"},{"title":"SAML Group Mapping","href":"/users_groups/user_management/saml_group_mapping"}]},{"group":"User Security","pages":[{"title":"Frontend User Permissions","href":"/users_groups/user_security/frontend_user_permissions"},{"title":"Password Change","href":"/users_groups/user_security/password_change"},{"title":"Password Reset","href":"/users_groups/user_security/password_reset"},{"title":"Password Expiration and Complexity","href":"/users_groups/user_security/password_expiration_and_complexity"},{"title":"Disabling Link-preview Security ","href":"/users_groups/user_security/disabling_link_preview_security"},{"title":"User Throttling ","href":"/users_groups/user_security/user_throttling"}]}]},{"group":"Site Administration","pages":[{"title":"Accessing the Backend","href":"/site_administration/accessing_the_backend"},{"title":"Embedding Curator in Other Systems","href":"/site_administration/embedding_curator_in_other_systems"},{"group":"Backend Administrators","pages":[{"title":"Overview","href":"/site_administration/backend_administrators/overview"},{"title":"Password Reset","href":"/site_administration/backend_administrators/password_reset"},{"title":"Backend Administrator Permissions","href":"/site_administration/backend_administrators/permissions"}]},{"group":"Admin Email Notifications","pages":[{"title":"System Notifications ","href":"/site_administration/admin_email_notifications/system_notifications"},{"title":"Data Manager Notifications ","href":"/site_administration/admin_email_notifications/data_manager_notifications"}]},{"title":"Updating License Key ","href":"/site_administration/license_key/updating_license_key"},{"group":"User Notifications","pages":[{"group":"User Notifications","pages":[{"title":"Third Party Cookies","href":"/site_administration/user_notifications/third_party_cookies"},{"title":"Session Expiration Warning","href":"/site_administration/user_notifications/session_expiration_warning"}]}]},{"group":"Performance","pages":[{"title":"Troubleshooting Load Times ","href":"/site_administration/performance/troubleshooting_load_times"},{"title":"Performance Diagnostics","href":"/site_administration/performance/performance_diagnostics"},{"title":"Cache Warming ","href":"/site_administration/performance/cache_warming"},{"title":"Queued Processes ","href":"/site_administration/performance/queued_processes"}]},{"group":"Logging","pages":[{"title":"Logging Overview","href":"/site_administration/logging/logging_overview"},{"title":"Backend Logs","href":"/site_administration/logging/database_logs"},{"title":"Server Logs","href":"/site_administration/logging/file_based_logs"},{"title":"Log Rate Limiter","href":"/site_administration/logging/log_rate_limiter"}]},{"title":"Analytics Tracking","href":"/site_administration/analytics_tracking/analytics_tracking"},{"title":"Activity","href":"/site_administration/activity/activity_overview"},{"title":"Retrieving Usage Data","href":"/site_administration/activity/retrieving_usage_data"},{"title":"Web Accessibility","href":"/site_administration/standards_compliance/web_accessibility"}]},{"group":"Upgrading \u0026 Migration","pages":[{"group":"Upgrading","pages":[{"title":"System Upgrade","href":"/upgrading_migration/upgrading/system_upgrade"},{"title":"Disable Curator Upgrades","href":"/upgrading_migration/upgrading/disable_curator_upgrades"},{"title":"Offline Upgrades (Air Gapped)","href":"/upgrading_migration/upgrading/offline_upgrades_air_gapped"},{"title":"Dependency Updates","href":"/upgrading_migration/upgrading/dependency_updates"},{"title":"Troubleshooting Upgrades","href":"/upgrading_migration/upgrading/troubleshooting_upgrades"}]},{"group":"Migration","pages":[{"title":"Moving Curator to a New Server","href":"/upgrading_migration/migration/moving_to_a_new_server"},{"title":"Importing and Exporting","href":"/upgrading_migration/migration/importing_and_exporting"},{"title":"SAML Cutover Process","href":"/upgrading_migration/migration/saml_cutover"}]},{"group":"Backups","pages":[{"title":"Curator Backup","href":"/upgrading_migration/backups/curator_backup"},{"title":"Taking a Manual Full Backup","href":"/upgrading_migration/backups/taking_a_manual_full_backup"},{"title":"Manual Restoration of Curator Backup","href":"/upgrading_migration/backups/manual_restoration_of_curator_backup"}]}]},{"group":"Server Management","pages":[{"group":"System Administration","pages":[{"title":"Filesystem Permissions","href":"/server_management/system_administration/filesystem_permissions"},{"title":"Disk Speed Metrics","href":"/server_management/system_administration/disk_speed_metrics"},{"title":"Disk Usage Management","href":"/server_management/system_administration/disk_usage_management"},{"title":"Server Hardening Procedures","href":"/server_management/system_administration/server_hardening_procedures"},{"title":"Updating Curator Logging","href":"/server_management/system_administration/updating_curator_logging"},{"title":"Linux - Cron Troubleshooting","href":"/server_management/system_administration/linux_cron_troubleshooting"},{"title":"Windows - Cron Troubleshooting","href":"/server_management/system_administration/windows_cron_troubleshooting"},{"title":"Windows - Investigating CPU Spikes","href":"/server_management/system_administration/windows_cpu_investigation"},{"title":"Troubleshooting 502 and 504 Errors","href":"/server_management/system_administration/troubleshooting_502_504_errors"},{"title":"Health Check Endpoint","href":"/server_management/system_administration/health_check_endpoints"}]},{"title":"API Connections Overview","href":"/server_management/architecture/api_connections_overview"}]},{"group":"Best Practices","pages":[{"group":"Security","pages":[{"title":"Password Settings","description":"Configure password complexity requirements and security policies for enhanced site security","href":"/best_practices/security/password_settings"}]},{"group":"Performance","pages":[{"group":"Performance","pages":[{"title":"Menu Tuning","href":"/best_practices/performance/menu_tuning"},{"title":"Cache Warming","description":"Improve initial page load times by pre-warming caches for better user experience","href":"/best_practices/performance/cache_warming"}]}]}]},{"group":"Tutorials","pages":[{"title":"Get Started with Curator in 5 Minutes","href":"/tutorials/get_started_with_curator_in_5_minutes"},{"group":"Backend Administration","pages":[{"title":"Backend Administration Tutorial: Adding Content","sidebarTitle":"Adding Content","href":"/tutorials/backend_administration/quick_start_adding_content"},{"title":"Backend Administration Tutorial: Filters, Parameters, Tutorials \u0026 Loading Screens","sidebarTitle":"Filters, Parameters, Tutorials \u0026 Loading Screens","href":"/tutorials/backend_administration/quick_start_adding_content_filters_parameters_tutorials_loading_screens"},{"title":"Backend Administration Tutorial: Menu and Navigation","sidebarTitle":"Menu and Navigation","href":"/tutorials/backend_administration/quick_start_adding_content_menu_and_navigation"},{"title":"Backend Administration Tutorial: Styling","sidebarTitle":"Styling","href":"/tutorials/backend_administration/quick_start_styling"}]},{"group":"Frontend Experience","pages":[{"title":"Frontend Experience Tutorial: Homepage","sidebarTitle":"Homepage","href":"/tutorials/frontend_experience/quick_start_homepage"},{"title":"Frontend Experience Tutorial: Dashboard","sidebarTitle":"Dashboard","href":"/tutorials/frontend_experience/quick_start_dashboard"}]}]},{"group":"Assets","pages":[{"group":"None","pages":[{"title":null,"href":"/legacy_assets/None/windows_installer"},{"title":null,"href":"/legacy_assets/None/api_example_creating_a_file_python"},{"title":null,"href":"/legacy_assets/None/sample_hero_images_jpg"},{"title":null,"href":"/legacy_assets/None/Dockerfile"},{"title":null,"href":"/legacy_assets/None/logging_php_file"},{"title":null,"href":"/legacy_assets/None/htaccess_file"}]}]}]},{"tab":"Quick Start","pages":[{"title":"Quick Start","href":"/setup/trial_quick_start_guide/creating_your_first_page"}]},{"tab":"API","pages":[{"title":"API","href":"/curator_api/getting_started/curator_api_overview"}]}]},"basePath":"","title":"Menu Tuning - Curator by InterWorks Documentation","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":[],"chunks":[]}