← Back to release summary

Remove <link rel=prefetch> five-minute rule

Category
Network / Connectivity
Type
Feature removal
Status
In developer trial (Behind a flag) (Chrome 133)
Intent stage
Start prototyping

Summary

Previously, when a resource was prefetched using <link rel=prefetch>, we ignored its cache semantics (namely max-age and no-cache) for the first use within 5 minutes, to avoid refetching. Now, we remove this special case and use normal HTTP cache semantics. This means web developers need to include appropriate caching headers (i.e. Cache-Control or Expires) to see benefits from <link rel=prefetch>. This also affects the nonstandard <link rel=prerender>. This fixes a bug with speculation rules prefetch, where non-2xx responses were cached. However, it does not start requiring caching headers for speculation rules prefetch, since they are intended for navigational prefetching and thus have different caching needs than the normal HTTP cache.

Motivation

The 5-minute rule was never standardized, not implemented by other browsers, and now as part of an effort to make prefetch interoperable across browsers I would like to align on a behavior that doesn't include this. Data to support this: 1. A UMA histogram (https://uma.googleplex.com/p/chrome/timeline_v2?sid=5f237b8589cdf9f292c40b976fbfe69c) shows that 0.05% of prefetch reuses actually benefit from this. About 85% of prefetches are reused regardless (e.g. inside the max-age anyway), and about 15% are not reused (e.g. 5 minutes have passed, not the first reuse). 2. Developers who rely on this can opt-in to this behavior, by setting a 5-minute max-age on prefetch requests (requests with a [Sec-]Purpose: prefetch header).

Standards & signals

View on chromestatus.com