Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

how to flush selector based caching

Avatar

Level 1

I need help on how to flush selector based caching

http://example.com/content/myapp/us/en.child1.xml
http://example.com/content/myapp/us/en.child2.xml

Lets say,we have xml's cached under the folder as
/<docroot-cache>/content/myapp/us/
->en.child1.xml
->en.child2.xml
->en.child99.xml
->en.child100.xml
->en.html
->en.model.json

I need to provide selector based caching, that is to flush en.child1.xml only and should not flush en.child2.xml or other xml's when the request for flush happens for /content/myapp/us/en.child1.xml
I've tried dispatcher flush invalidation through HTTP call like below-
GET http://mydispatcher/dispatcher/invalidate.cache
Headers
CQ-Action Activate
CQ-Handle /content/myapp/us/en.child1.xml
Content-Type Application/xml

But,all files under "us" folder(i.e. all selector for en page) gets invalidated, how to just invalidate "en.child1.xml" please suggest

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

@vamshim15803391 got this working. Instead of Activate , you need to use DELETE as action. PFB the screenshots

 

Before

Veena_07_0-1589212063897.png

 

Flush

Veena_07_1-1589212089982.png

 

After

Veena_07_2-1589212117819.png

 

Action should be CQ-Action: Delete   instead of Activate

 

Hope this works

Thanks

Veena

 

View solution in original post

19 Replies

Avatar

Community Advisor

Hi @vamshim15803391 

 

   I tried flushing the cache for the below scenario and was able to do it . Please check the screenshots

 

Before Flushing

Veena_07_0-1589023664271.png

Flush

Veena_07_1-1589023709579.png

 

After Flush

Veena_07_2-1589023730457.png

    Ideally , the files should get flushed if the invalidate headers are proper. Could you please cross check ?

 

Thanks

Veena

 

 

Avatar

Community Advisor
Can you share me the folder structure of how these files are present ? For testing I manually placed files and flushed.

Avatar

Level 1

Hi Veena, thanks for checking this.

Looks like you have only placed 1 file and yes it invalidates en.child.xml (along any file selectors ,extensions of en)

Can you manually create 2files say en.child1.xml and en.child2.xml and have the request of CQ-Handle /content/we-retail/us/en.child1.xml and flush. It should flush child1.xml only, & child2.xml still should remain in cache And yes, I have the same headers as yours.

Avatar

Community Advisor
Oh you are correct. It flushes all those files. I will check this

Avatar

Community Advisor

Hi,

Not sure if you can do that using below command because if

 

The HTTP request has the following form:
 
POST /dispatcher/invalidate.cache HTTP/1.1  
CQ-Action: Activate  
CQ-Handle: path-pattern
Content-Length: 0

Dispatcher flushes (deletes) the cached files and folders that have names that match the value of the CQ-Handler header. For example, a CQ-Handle of /content/geomtrixx-outdoors/en matches the following items:
  • All files (of any file extension) named en in the geometrixx-outdoors directory
  • Any directory named " _jcr_content " below the en directory (which, if it exists, contains cached renderings of sub-nodes of the page)


Arun Patidar

Avatar

Employee Advisor

Dispatcher creates .stat files in each folder from the docroot folder down to the level that you specify. The docroot folder is level 0. When an invalidation request comes in, it will clear that resource and its parent folder to which statfileslevel is set to.

 

What is your /statfileslevel property in dispatcher config set to ?

Avatar

Community Advisor

You should be able to use the ResourceOnly cache invalidation for this scenario - Refer the following video for more details https://youtu.be/teSn_Tqnizo

 

Avatar

Level 1

Thanks for the input Albin, I will check if this works

Avatar

Community Advisor
I tried this but this is also not working for this scenario

Avatar

Correct answer by
Community Advisor

@vamshim15803391 got this working. Instead of Activate , you need to use DELETE as action. PFB the screenshots

 

Before

Veena_07_0-1589212063897.png

 

Flush

Veena_07_1-1589212089982.png

 

After

Veena_07_2-1589212117819.png

 

Action should be CQ-Action: Delete   instead of Activate

 

Hope this works

Thanks

Veena

 

Avatar

Community Advisor
When I tried this , CQ-ACTION : DELETE worked for this scenario even without ResourceOnly