Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

Retrieve latest content from AEM Repository

hanscy
Level 2
Level 2

Hi guys,

I got a requirement to be able to retrieve content from AEM repository on a web page once it is published, ie. retrieve the latest publish content.

Using the JavaScript Use API is somehow possible as well, however once the latest content published it won't display directly on the client/user machine as the dispatcher cache the content and we will need to flush the dispatcher cache to be able to retrieve the new content.

Doing that is somehow ineffective if we have a large number of content inside the repository already.

any sorts of suggestions / best practice how to do it?

Thanks!

12 Replies
Gaurav-Behl
Community Advisor
Community Advisor

Javascript Use API is typically used by HTL which is a server-side language.

Use client side jquery ajax ($.ajax) or Apache Sling Dynamic Include or any other similar framework

Adobe Experience Manager Help | Set up Sling Dynamic Include in AEM

GitHub - Cognifide/Sling-Dynamic-Include: Sling Dynamic Include

http://api.jquery.com/jquery.ajax/

hanscy
Level 2
Level 2

Hi,

Thanks for that! what will be the AJAX solutions looks like? do you have any example?

I am keen to look at the solution example if you have any with AJAX.

edubey
Level 10
Level 10

I don't have the details of your requirement but on a high level, you will have to create an endpoint in your aem (using servlet). These endpoint will be responsible for sending response with updated content. From front-end you will be requesting these endpoint and consume the response.

Some helpx articles you can refer to

https://helpx.adobe.com/experience-manager/using/aem64_mbean.html

https://helpx.adobe.com/experience-manager/using/custom-sling-servlets.html

https://helpx.adobe.com/experience-manager/using/toy_login.html

Jörg_Hoh
Employee
Employee

Hi,

I read your question, but I don't understand it. I understood that you want to fetch the latest published content, but the second paragraph doesn't make sense to me. Can you rephrase your question?

Thanks,

Jörg

smacdonald2008
Level 10
Level 10

I agree with Joerg - your question is not clear. You want to query latest published content. What purpose is this for? Do you want to track pages that are published for reporting purposes?

hanscy
Level 2
Level 2

the purpose is not to track pages that are being published, the purpose is to promote / display the latest published articles to users.

hanscy
Level 2
Level 2

Hi Joerg,

Thanks for the reply Joerg!

What I wanted to say on the second paragraph is basically one of the possibility to fetch the latest published content from the JCR. However it is not a really good solution (ineffective)  as it is using the JS Use API which is a server-side language and potentially put a heavily load on the server.

so to summarise it, the question is basically, is there any other solutions that we can implement to fetch the latest published content so that the user can get suggestions on the latest published article once the article is published?

edubey
Level 10
Level 10

Yes, you can achieve it. But in this case your this particular request has to pass from dispatcher without caching.

gauravb10066713​ has already mentioned few recommended approach which is used to tackle this like SDI, Ajax

Jörg_Hoh
Employee
Employee

OK, I think I got it.

You want to display a the list of the "last changed pages" and have that list on all pages (even the cached ones). Which means you either invalidate the complete cache on every change (not efficient), or you use an AJAX or an server-side approach like SSI/ESI to separate the rendering of this "latest changed pages" content from the rendering of the rest of the page. And maintain a single instance of this latest changed pages content and include it from the static parts (during delivery).

The recommendations by @edubey is good.

hanscy
Level 2
Level 2

Thanks Joerg and edubey! those are worth to try solutions!

any some sort of recommendations which way is better? (or maybe I could say more efficient and effective?) the AJAX or SDI?

Gaurav-Behl
Community Advisor
Community Advisor

With ajax, your content fragments or components are assembled in the browser which means you need to have a really good frontend design otherwise you may see flickering when the page loads because one component's ajax response may return first than other one and things like that. This depends on your requirements, use cases & how many ajax calls you want to happen and how you manage each layer.

With SDI, you get a slight flexibility to implement with options to choose from SSI, ESI or Ajax as applicable but the design delegates to how you structure your templates and components etc.

Other aspect to keep in mind could be the entire end-to-end architecture of your site including CDN/dispatcher cache as applicable in your design/implementation.