Avoid caching URLs with query paramters | Community
Skip to main content
Level 5
Oct 13, 2020 4:04 PM UTC
Solved

Avoid caching URLs with query paramters

Hello Community - I have a page with dynamic content. Based on the results from the below URLs(with query string), the content is getting displayed on the page (www.test.com/products.html) and it is working fine in author, publish and dispatcher.

 

https://www.test.com/pages/_jcr_content.product.json?t=2011233&Tags=abc&Order=existing

https://www.test.com/pages/_jcr_content.product.json?t=2034567&Tags=def&Order=existing

https://www.test.com/pages/_jcr_content.product.json?t=2912345&Tags=ghi&Order=existing

https://www.test.com/pages/_jcr_content.product.json?t=2983456&Tags=jkl&Order=existing

 

If I directly access the page (CDN), the URL with query parameter is getting cached,  i.e., I see the same content for all four sections of the page. We need to restrict the URLs with the query parameters to be cached, the results should display different results as the query parameters are different and it should not be cached.

 

https://www.test.com/pages/_jcr_content.product.json?t=2983456&Tags=jkl&Order=existing

https://www.test.com/pages/_jcr_content.product.json?t=2983456&Tags=jkl&Order=existing

https://www.test.com/pages/_jcr_content.product.json?t=2983456&Tags=jkl&Order=existing

https://www.test.com/pages/_jcr_content.product.json?t=2983456&Tags=jkl&Order=existing

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Shubham_borole
Shubham_boroleAccepted solution
New Participant
Nov 13, 2020 6:04 PM UTC

As mentioned above by @manjunath_k there should be a setting in CDN. For example see - https://docs.microsoft.com/en-us/azure/cdn/cdn-query-string

Just putting out an after thought though 🙂  - If this is an external facing page and with considerably high number of products, the query parameters could be passed as post data form parameters via ajax call and allow caching of the calls and clear the cache using TTL in Dispatcher and CDN (or custom implementation to clear it) in case of any performance concerns

6 replies

Shubham_borole
Shubham_boroleAccepted solution
New Participant
Nov 13, 2020 6:04 PM UTC

As mentioned above by @manjunath_k there should be a setting in CDN. For example see - https://docs.microsoft.com/en-us/azure/cdn/cdn-query-string

Just putting out an after thought though 🙂  - If this is an external facing page and with considerably high number of products, the query parameters could be passed as post data form parameters via ajax call and allow caching of the calls and clear the cache using TTL in Dispatcher and CDN (or custom implementation to clear it) in case of any performance concerns

Translate
v1101Author
Level 5
Nov 13, 2020 5:33 PM UTC
@prashantonkar - Yes, I am making AJAX calls.
Translate
prashantonkar
Level 4
Nov 10, 2020 1:35 PM UTC
Can you elaborate how this calls are being made from your html? Are you making AJAX calls?
Translate
Manjunath_K
Level 7
Oct 13, 2020 4:49 PM UTC

Hi @v1101,

Check if ignore query string is enabled at CDN caching level, this might be the reason these JSON response are not getting cached when its accessed using dispatcher url & getting cached when its accessed using CDN website url. another option is, you can set below mentioned response header in backend servlet so that this response will not cached.

 

response.addHeader("Cache-Control","no-store no-cache");

 

Translate
v1101Author
Level 5
Oct 13, 2020 5:03 PM UTC

Thanks @manjunath_k for the response. Will check the config in CDN level. In my case, the call to the servlet is having the same URL(with query string) and that is the reason I am seeing the same content. I don't think setting the option in servlet (response,addHeader) will solve my issue.

Translate