Friday, October 10, 2025
HomeCSSWhat Is the Most max-age? – Harry Roberts – Internet Efficiency Marketing...

What Is the Most max-age? – Harry Roberts – Internet Efficiency Marketing consultant


Written by on CSS Wizardry.

Desk of Contents
  1. max-age
  2. immutable
  3. 31536000 Seconds
  4. 2147483648 Seconds
  5. Does It Matter?

If you happen to wished to cache a file ‘eternally’, you’d in all probability use a Cache-Management
header like this:

Cache-Management: max-age=31536000

This instructs any cache that it might retailer and reuse a response for one yr (60
seconds × 60 minutes × 24 hours × twelve months = 31,536,000 seconds). However why
one yr? Why not 10 years? Why not max-age=eternally? Why not max-age=∞?!

I questioned the identical. Let’s discover out collectively.

Like spoilers? See the reply.

It’s 2147483648 seconds, or 68 years. To search out out why, learn on!

max-age

max-age is a Cache-Management directive that instructs a cache that it might
retailer and reuse a response for n seconds from the purpose at which it
entered the cache in query. As soon as that point has elapsed, the cache ought to
both revalidate the file with the origin server, or do no matter any
extra directives might have instructed it to
do
. However why may we need to have
a max-age that equates to eternally?

immutable

If we’re assured that we are able to cache a file for a yr, we have to be additionally fairly
assured that it by no means actually modifications. In any case, a yr is a really very long time
in web timescales. If we’ve this diploma of confidence {that a} file gained’t
change, we are able to cache the file immutably.

immutable is a comparatively
new

directive that successfully makes a contract with the
browser
during which we as
builders inform the browser: this file won’t ever, ever change, ever;
please don’t hassle coming again to the server to examine for updates
.

Let’s say we’ve a easy supply CSS file referred to as button.css. Its content material is
as follows:

.c-btn {
  background-color: #C0FFEE;
}

As soon as our construct system has accomplished, it’s going to fingerprint the file and export it
with a singular hash, or fingerprint, in its filename. The MD5 checksum for this
file is 7fda1016c4f1eaafc5a4e50a58308b79, so we’d in all probability find yourself with a file
named button.7fda1016.css.

If we alter the color of the button, the subsequent time we roll a launch, the
construct step will do its factor and now, the next content material:

.c-btn {
  background-color: #BADA55;
}

…would have a checksum of 6bb70b2a68a0e28913a05fb3656639b6. In that case, we’d
name the brand new file button.6bb70b2a.css.

Discover how the content material of the unique file button.7fda1016.css hasn’t
modified; button.7fda1016.css has ceased to exist solely, and is changed by
a complete new file referred to as button.6bb70b2a.css.

Fingerprinted recordsdata by no means change—they get changed. This implies we are able to safely
cache any fingerprinted file for, effectively, eternally.

However how lengthy is eternally?!

31536000 Seconds

Historically, builders have set ‘eternally’ max-age values at 31536000
seconds, which is a yr. Why a yr, although? A yr isn’t eternally. Was
31536000 arrived at by settlement? Or is it specified someplace? RFC
2616
says of the
Expires header:

To mark a response as “by no means expires,” an origin server sends an Expires
date roughly one yr from the time the response is shipped. HTTP/1.1
servers SHOULD NOT ship Expires dates multiple yr sooner or later.

Traditionally—very traditionally—caching was certain to roughly one yr
from the time the response is shipped
. This restriction was launched by the
lengthy defunct Expires header, and we’re speaking about max-age, which is
a Cache-Management directive. Does Cache-Management say something totally different?

2147483648 Seconds

It seems there’s a most worth for max-age, and it’s outlined in RFC
9111’s
delta-seconds
:

A recipient parsing a delta-seconds worth and changing it to binary type
ought to make use of an arithmetic sort of not less than 31 bits of non-negative integer
vary. If a cache receives a delta-seconds worth better than the best
integer it could actually signify, or if any of its subsequent calculations overflows,
the cache MUST take into account the worth to be 2147483648 (231) or the
biggest constructive integer it could actually conveniently signify.

The spec says caches ought to settle for a most max-age worth of
whatever-it’s-been-told, falling again to 2,147,483,648 seconds (which is 68
years), or failing that, falling again to as-long-as-it-possibly-can. This
wording signifies that, technically, there isn’t a most so long as the cache
understands the worth you handed it. Theoretically, you would set
a max-age=9999999999 (that’s 317 years!) or larger. If the cache can work with
it, that’s how lengthy it’s going to retailer it. If it could actually’t deal with 317 years, it ought to
fall again to 2,147,483,648 seconds, and if it could actually’t deal with that, regardless of the
greatest worth it could actually deal with.

And why 2,147,483,648 seconds?

In a 32-bit system, the biggest attainable integer that may be represented in
binary type is 01111111111111111111111111111111: a zero adopted by 31 ones
(the primary zero is reserved for switching between constructive and unfavorable values,
so 11111111111111111111111111111111 could be equal to -2,147,483,648).

Does It Matter?

Truthfully, no.

It’s unlikely {that a} yr would ever be inadequate, and it’s additionally unlikely
that any cache would retailer a file for that lengthy anyway: browsers periodically
empty their cache as a part of their normal housekeeping, so even recordsdata which have
been saved for a yr won’t really make it that lengthy.

This submit was largely an train in curiosity. However, when you wished to, you would
go forward and swap your whole 31536000s for 2147483648s. It really works in all
main browsers
.



Did this assist? We are able to do far more!

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments