[ https://issues.apache.org/jira/browse/SLING-12764?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17949617#comment-17949617 ]
Abhishek Garg commented on SLING-12764: --------------------------------------- Adding more Jöerg comment, We currently cache a list of vanity URLs locally and update it periodically. When a request comes in with a vanity URL, we first check against this cache. If the vanity URL is found and the corresponding content is available in our {{httpd}} module cache, we serve it directly. Otherwise, we need to make a separate call for each unmatched URI, which increases the number of requests. > Add API to getALL Vanity Paths > ------------------------------ > > Key: SLING-12764 > URL: https://issues.apache.org/jira/browse/SLING-12764 > Project: Sling > Issue Type: Improvement > Components: API, ResourceResolver > Reporter: Abhishek Garg > Priority: Major > > *Summary* > Introduce a new API method in the An {{ResourceResolver}} interface to expose > vanity path mappings that are already calculated and cached internally. > ---- > *Description* > Currently, the {{ResourceResolver}} calculates and caches all vanity paths > internally (see {{MapEntries.initializeVanityPaths()}} and > {{{}VanityPathHandler{}}}), controlled by the configuration property > {{{}resource.resolver.vanity.paths.enabled{}}}. > However, downstream systems that require access to vanity paths must > *recalculate* them independently, resulting in: > * *Duplicate computation* — The same JCR query is executed multiple times. > * *Increased memory usage* — Multiple caches holding the same data. > * *Potential inconsistencies* — Different systems might process vanity paths > differently. > ---- > *Proposed Solution* > Expose the existing vanity path cache through a new method in the > {{ResourceResolver}} interface: > /** > * Returns a mapping from vanity paths to their corresponding target resource > paths. > * > * @return An unmodifiable map of vanity paths to their target resource > paths, or an empty map if vanity paths are disabled. > * @since 2.28.0 (or the next appropriate version) > */ > Map<String, List<String>> getVanityPathMappings(); > > The {{ResourceResolverImpl}} would implement this by returning a view of > internal maintenance cache > ---- > *Benefits* > * *Reduces system resource usage* by eliminating redundant calculations. > * *Ensures a consistent view* of vanity paths across all components. > * *Simplifies implementation* of downstream systems that depend on vanity > path data. > * *Enables more efficient architectures* by leveraging already computed and > cached information. > ---- > *Repositories Impacted* > * > [{{sling-org-apache-sling-api}}|https://github.com/apache/sling-org-apache-sling-api] > * > [{{sling-org-apache-sling-resourceresolver}}|https://github.com/apache/sling-org-apache-sling-resourceresolver] -- This message was sent by Atlassian Jira (v8.20.10#820010)