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

Clear Varnish at the time of page activation in AEM

dragon2A
Level 6
Level 6

Hi Friends,

 I have one situation to clear the varnish pages at the time of CQ5 page activation. 

I am using the httpclient to purge the page in varnish . I am getting correct repsonse 200 Purged but that page is not getting cleared from the varnish. 

Here is the code I am using, Please suggest the changes. Its very very urgent.

org.apache.http.HttpHost host = new HttpHost("IP");

HttpClient client = HttpClientBuilder.create().build();

            BasicHttpRequest purgeRequest = new BasicHttpRequest("PURGE", "URL");
            purgeRequest.setHeader("purgeKey","p0rg3m3!");
            purgeRequest.setHeader("Cache-Control","no-cache");           
            HttpResponse response1= client.execute(host,purgeRequest); 

 

Thanks In Advance 🙂

1 Accepted Solution
Jörg_Hoh
Correct answer by
Employee
Employee

Hi,

why don't you use the standard replication mechanism and and just create a custom content builder to create the required payload for the request? Replication already supports HTTP.

Jörg

View solution in original post

2 Replies
kautuk_sahni
Community Manager
Community Manager

Hi 

I am not an expert at Varnish, all i know it its a middle-ware between Client and Server.

Assuming you know the API for clearing the cache in varnish. To clear it on page activation, you can do:

1. Write a Replication Listener. This will act as a event listener whenever you activate a page/

You can call Varnish API for purging from here.

Reference Link:-  https://helpx.adobe.com/experience-manager/kb/ReplicationListener.html

 

2. Custom workflow on page activation (which will again use replication event listener in it), here also you can all Varnish API for purging.

Reference Link: - http://stackoverflow.com/questions/18864317/start-a-workflow-on-page-activation-without-activating-t...

 

If your question is how to Purge it, then 

1. This will set caching to disabled on the response:

    // Set standard HTTP/1.1 no-cache headers.
    response.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate");

    // Set standard HTTP/1.0 no-cache header.
    response.setHeader("Pragma", "no-cache");

 

2. Clear Varnish cache for a url

[:$] varnishadm -T 127.0.0.1:6089 ban.url /index.html

Link:- https://linuxacademy.com/blog/linux/how-to-clear-varnish-cache/

 

3. Command-line purging of Varnish caches

Link:- https://robm.me.uk/ops/2014/12/09/command-line-purging-varnish.html

 

Some AEM Varnish Reference links:- 

https://info.varnish-software.com/blog/advanced-cache-invalidation-applied-replacing-adobe-aem-cq5-d...

https://info.varnish-software.com/blog/advanced-cache-invalidation-part2

 

I hope this might help you.

Thanks and Regards

Kautuk Sahni

Jörg_Hoh
Correct answer by
Employee
Employee

Hi,

why don't you use the standard replication mechanism and and just create a custom content builder to create the required payload for the request? Replication already supports HTTP.

Jörg

View solution in original post