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

SOLVED

how to flush selector based caching

vamshim15803391
Level 1
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
Veena_Vikram
Correct answer by
Community Advisor
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

0 Replies
Veena_Vikram
Community Advisor
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

 

 

Veena_Vikram
Community Advisor
Community Advisor
Can you share me the folder structure of how these files are present ? For testing I manually placed files and flushed.
vamshim15803391
Level 1
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.

Veena_Vikram
Community Advisor
Community Advisor
Oh you are correct. It flushes all those files. I will check this
Arun_Patidar
Community Advisor
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)
Nirmal_Jose
Community Advisor
Community 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 ?

Albin_Issac
Community Advisor
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

 

Veena_Vikram
Community Advisor
Community Advisor
I tried this but this is also not working for this scenario
Veena_Vikram
Correct answer by
Community Advisor
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

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