kornelski / http-cache-semantics

RFC 7234 in JavaScript. Parses HTTP headers to correctly compute cacheability of responses, even in complex cases
http://httpwg.org/specs/rfc7234.html
BSD 2-Clause "Simplified" License
245 stars 27 forks source link

What unit is immutableMinTimeToLive in? #25

Open jameysharp opened 5 years ago

jameysharp commented 5 years ago

The readme says that "immutableMinTimeToLive is a number of milliseconds", but it's compared against values which are in seconds (e.g. Math.max(defaultMinTtl, (expires - dateValue) / 1000)) and returned from maxAge which on other paths returns values in seconds.

In my opinion, the implementation is reasonable so it's the documentation which is wrong; what do you think?

The default value is 24 * 3600 * 1000, which is either one day or 1,000 days depending on the answer to this question. I don't see anything in the RFC guiding how clients should behave if max-age is not set but immutable is. Since "hours seconds milliseconds" order makes a little more sense than "hours seconds days", I'm guessing it was supposed to be one day, in which case the default value is wrong too.

While you're looking at the documentation for this option:

kornelski commented 5 years ago

This whole thing for immutable is a heuristic. If there's no explicit max-age set, then clients can guess. I guess that immutable responses are fresh for longer than other responses.

It's very likely that I mixed up seconds and milliseconds, since I've changed the units at some point. The intention was one day.