Expand my Community achievements bar.

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

Avatar

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

Avatar

Employee 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.

Avatar

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

Avatar

Employee 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.

Avatar

Level 1
We do not have /header settings on dispatcher.