April 2, 2020
Estimated Post Reading Time ~

Cache Invalidation from Publish Agent

In my previous post Automatic Dispatcher Cache Invalidation in AEM – Part 2, I explained the way to create a dispatcher flush agent that is triggered from a Publish instance. However, in CQ5.5 this will not always behave as expected. Out of the box, the CQ5.5 dispatcher flush agents on Publish only invalidate the cache when nodes of type cq:Page are replicated to it. This means that if you activate nodes of other types, including DAM assets, or replicating packages that only contain js and css nodes in client libraries, etc, the replication of these will not invalidate the cache – your cache will still contain obsolete versions of these files until an actual page is replicated, and the cache invalidated.

AEM (CQ5.6) solves this issue with the new ‘On Receive’ trigger that has been made available to the Publish flush agents:



In CQ5.5, there is no such trigger (at this stage). There is a package that allows the cache to be invalidated when DAM assets are replicated which can be found here, but this still does not allow cache invalidation when other types of nodes are replicated.

My solution to this is to take the DAM asset invalidation workflow, script, and launcher, and copy/modify these to suit the replication purposes that are required. For example, you could create a workflow that is triggered on modification of nodes of type nt:file that live under your /etc/designs/myproject tree, and this workflow can run a script to invalidate the cache. Careful implementation of these workflows will ensure that any replication successfully invalidates the cache when required.


By aem4beginner

No comments:

Post a Comment

If you have any doubts or questions, please let us know.