http-cache-semantics icon indicating copy to clipboard operation
http-cache-semantics copied to clipboard

What unit is immutableMinTimeToLive in?

Open jameysharp opened this issue 4 years ago • 1 comments

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:

  • The link to "per RFC" is dead. I believe at this point you want to link to https://tools.ietf.org/html/rfc8246.
  • Please document the default value for this option, whatever you decide it should have been.

jameysharp avatar Nov 11 '19 19:11 jameysharp

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.

kornelski avatar Nov 12 '19 00:11 kornelski