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
BedrockMission!

Learn more

View all

Sign in to view all badges

Cache control is not set by Apache2.4 and dispatcher when using Head request

rakmvk
Level 1
Level 1

 

We are migrating from Apache2.2 to Apache2.4 , seeing a strange behavior with  curl -I HEAD request ,when then content is not cached on Apache , cache control header is not set, but once the content is cached on Apache header is set . Any one have any idea why this is happening.

 

Apache: 2.4.46

dispatcher:4.3.3

 

cache control rule on Apache

Header always set Cache-Control "public, max-age=86400"

 

curl -I http://localhost/test.html

HTTP/1.1 200 OK
Date: Fri, 04 Dec 2020 20:21:17 GMT
Server: Apache
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: frame-ancestors 'self'
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-Type: text/html;charset=utf-8

 

Thanks
Rakesh

4 Replies
shelly-goel
Community Advisor
Community Advisor

Hi Rakash,

This is an expected behavior/ feature in dispatcher 4.1.11 onwards for caching HTTP response headers.

/headers property under /cache section allows to define the HTTP header types that are going to be cached by the Dispatcher. On the first request to an uncached resource, all headers matching one of the configured values (see the configuration sample below) are stored in a separate file, next to the cache file. On subsequent requests to the cached resource, the stored headers are added to the response.

/cache {
  ...
  /headers {
    "Cache-Control"
    "Content-Disposition"
    "Content-Type"
    "Expires"
    "Last-Modified"
    "X-Content-Type-Options"
    "Last-Modified"
  }
}

Reference: https://experienceleague.adobe.com/docs/experience-manager-dispatcher/using/configuring/dispatcher-c...

Hope this helps.

rakmvk
Level 1
Level 1

Thanks Shelly for the Answer , we were using Apache2.2 with dispatcher 4.2.2 . And Apache was adding cache control header correctly, which was working fine for HEAD(content no cached) and GET. On 2.4 ,if there is a cache miss and if i run curl - I HEAD request ,cache control header is missing were are if i use GET header is inserted correctly. Want to make sure if this Apache or dispatcher

shelly-goel
Community Advisor
Community Advisor
@rakmvk - Apache is setting the Cache-Control header and Dispatcher is trying to cache it. To confirm this, you can check the configuration under /cache > /headers and see what headers are being cached. If Cache-Control is present, remove and test with restart/ cache clear. If Cache-Control now appears then it is due to this setting.