Solid Cache — the default
Production uses Solid Cache — the built-in cache store: the cache lives in your PostgreSQL database alongside everything else. There is nothing to configure, provision, or monitor — it works out of the box in every deployment.Swapping to Redis or Valkey
For high-traffic installs that want an in-memory cache, the swap is one line inconfig/environments/production.rb plus the gem:
HTTP caching of Store API responses
Read-only Store API endpoints (products, categories, collections, markets, locales, currencies, policies, sellers) are HTTP-cacheable for guests, so a CDN or reverse proxy in front of Spree can serve them from the edge:- Guests get
Cache-Control: public, max-age=300(list endpoints addstale-while-revalidate=30) plus anETag, and conditional requests return304 Not Modified. - Signed-in customers (a customer JWT in
Authorization) getCache-Control: private, no-store— nothing is cached.
Vary header:
X-Spree-Country selects the market (currency, prices, tax display, availability), and X-Spree-Channel controls price visibility and which products are listed. Authorization keeps a cached guest response from being served to a signed-in customer.

