HAProxy Enterprise Documentation 2.4r1


Caching lets you offload work from your application servers by returning cached resources directly from HAProxy Enterprise. It can be applied to any reusable content that is safe to be shared among multiple clients, such as:

  • CSS, Javascript and icon files

  • API responses (e.g. JSON) that do not contain client-specific data

  • Small, static HTML pages

The cache runs in memory and does not store state on disk. This makes it very fast, but not durable past a reload of the load balancer. We recommend storing objects for a short duration, such as less than a minute to reduce the chance of serving stale content.

Enable the cache

  1. Add a cache section to your configuration.

    cache mycache
       total-max-size 4
       max-object-size 10000
       max-age 240




    Sets the total memory the cache can consume in megabytes. The maximum value is 4095.


    Sets the max size in bytes for a single object; Larger objects will not be stored. It cannot be larger than half of total-max-size.


    Sets the seconds for an object to stay the cache; It can be overriden with a Cache-Control header.

  2. Add an http-request cache-use and an http-response cache-store directive to a frontend or listen section to enable caching in that section. The filter line is required only when the section includes other filter lines, but otherwise can be omitted, since it is implicitly defined.

    frontend  fe_main
       bind :80
       filter cache mycache
       http-request cache-use mycache
       http-response cache-store mycache
       default_backend be_main



    http-request cache-use

    Fetches the requested resource from the cache. Place an if or unless statement afterwards to include or exclude a resource from being cached.

    http-response cache-store

    Saves the resource to the cache once it comes from the server.

Cache restrictions

Objects are cached only if all of the following are true:

  • The size of the resource does not exceed max-object-size

  • The response from the server is 200 OK

  • The response does not have a Vary header

  • The response does not have a Cache-Control: no-cache header

Next up

Client IP preservation