title: What heuristics do browsers use to cache resources not explicitly set to be cachable?
body: <blockquote>
  <p><strong>13.2.2 Heuristic Expiration</strong></p>
  <p>Since origin servers do not always provide explicit expiration times, HTTP caches typically assign heuristic expiration times, employing algorithms that use other header values (such as the Last-Modified time) to estimate a plausible expiration time. The HTTP/1.1 specification does not provide specific algorithms, but does impose worst-case constraints on their results. Since heuristic expiration times might compromise semantic transparency, they ought to used cautiously, and we encourage origin servers to provide explicit expiration times as much as possible.
  <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html" rel="noreferrer">HTTP/1.1 RFC 2616</a></p>
  </blockquote>
  <p>What are the algorithms used by browsers to estimate plausible expiration times?</p>
  <p>The ideal answer will cover all major browsers with evidence from source code or official blog posts.</p>