**Connected: An Internet Encyclopedia**

*13.2.4 Expiration Calculations*

**Up:**
Connected: An Internet Encyclopedia

**Up:**
Requests For Comments

**Up:**
RFC 2068

**Up:**
13 Caching in HTTP

**Up:**
13.2 Expiration Model

**Prev:** 13.2.3 Age Calculations

**Next:** 13.2.5 Disambiguating Expiration Values

### 13.2.4 Expiration Calculations

13.2.4 Expiration Calculations
In order to decide whether a response is fresh or stale, we need to
compare its freshness lifetime to its age. The age is calculated as
described in section 13.2.3; this section describes how to calculate
the freshness lifetime, and to determine if a response has expired.
In the discussion below, the values can be represented in any form
appropriate for arithmetic operations.

We use the term "expires_value" to denote the value of the Expires
header. We use the term "max_age_value" to denote an appropriate
value of the number of seconds carried by the max-age directive of
the Cache-Control header in a response (see section 14.10.

The max-age directive takes priority over Expires, so if max-age is
present in a response, the calculation is simply:

freshness_lifetime = max_age_value

Otherwise, if Expires is present in the response, the calculation is:

freshness_lifetime = expires_value - date_value

Note that neither of these calculations is vulnerable to clock skew,
since all of the information comes from the origin server.

If neither Expires nor Cache-Control: max-age appears in the
response, and the response does not include other restrictions on
caching, the cache MAY compute a freshness lifetime using a
heuristic. If the value is greater than 24 hours, the cache must
attach Warning 13 to any response whose age is more than 24 hours if
such warning has not already been added.

Also, if the response does have a Last-Modified time, the heuristic
expiration value SHOULD be no more than some fraction of the interval
since that time. A typical setting of this fraction might be 10%.

The calculation to determine if a response has expired is quite
simple:

response_is_fresh = (freshness_lifetime > current_age)

**Next:** 13.2.5 Disambiguating Expiration Values

**Connected: An Internet Encyclopedia**

*13.2.4 Expiration Calculations*