Direct answer

Migration audits should record redirect status, Location, and cache policy together. Permanent redirects can be cacheable, so Cache-Control can affect how quickly clients observe later routing changes or rollbacks even when the origin rule has already changed.

What to remember
  • Audit Cache-Control alongside every important redirect status and Location target.
  • Match permanent redirect semantics to genuinely durable URL moves rather than provisional destinations.
  • Include cache-aware rollback checks so cached client behavior is not mistaken for an origin-side deployment failure.

01

Definition

Redirect caching is the reuse of a previously received redirect response without making the same origin request again first. The redirect status code tells a client what kind of redirection occurred, while HTTP caching rules determine whether that response can be stored and reused. Those are related but separate mechanisms. A permanent redirect can therefore have both routing semantics and cache behavior that matter during a migration. [1] [2]

This matters because migration teams often think of a redirect as a live rule that can be changed and observed instantly. In practice, some clients or intermediaries can reuse a cached redirect response according to HTTP cache rules. A redirect change made at the server does not necessarily mean every client will forget an earlier response at the same moment.

Google also distinguishes permanent redirects such as 301 and 308 from temporary redirects such as 302 and 307 for search processing. That distinction is about the meaning of the move, not a promise that all caches or crawlers will refresh on the same schedule. [3]

02

Mechanism

RFC 9110 defines 301 Moved Permanently and 308 Permanent Redirect as status codes whose responses are heuristically cacheable unless another rule or explicit cache control says otherwise. [1] Heuristic caching is important because it means a response can potentially receive freshness treatment even when the application did not spell out an explicit max-age. The exact behavior still depends on the cache and the surrounding HTTP rules.

RFC 9111 defines the cache-control directives that make this behavior more explicit. A max-age directive limits how long a stored response is considered fresh. A no-cache directive does not simply mean “never store”; it requires successful validation before the stored response can be reused. A no-store directive is stronger and instructs caches not to store the response. [2]

That means a migration audit should collect more than the redirect status and Location target. It should also capture relevant response headers that influence reuse, especially Cache-Control. If a 301 points to a destination that the team expects to change again soon, a long freshness lifetime can make rollback or correction harder to observe across clients.

Caching also varies by cache type and request context. A browser cache, a shared intermediary, a monitoring client, and a search crawler are not interchangeable. Even when all of them receive the same response, their storage, validation, and refresh behavior can differ because of implementation choices and the requests they send. The useful engineering conclusion is not to predict one universal cache lifetime, but to make the server's cache policy explicit and test the clients that matter to the migration.

03

Examples

Imagine a site that permanently redirects an old product URL to a temporary replacement page during a catalog rebuild. The server returns a 301 with a long max-age. A week later, the final product page launches and the redirect rule is changed. A client that still has a fresh cached redirect can continue reusing the earlier destination until its cache rules require another request or validation. The server-side rule may be correct while the client's observed behavior still reflects the earlier response. [2]

A second example is a redirect created during a hostname migration. The team intends old.example to redirect permanently to new.example and does not expect that destination to change. A cacheable permanent redirect is aligned with the intended durability of the move. In that case, the important test is not to disable caching by reflex, but to verify that the Location target and cache policy both match a truly permanent decision.

A third case is an uncertain migration where the final URL map is still being revised. Using permanent semantics while the destination remains unsettled creates two kinds of commitment at once: a permanent move signal and potentially reusable cached responses. Google documents temporary redirects for situations where the redirect is intended to be temporary, while permanent redirects communicate a lasting move. [3] The HTTP and search semantics are not identical, but they point in the same operational direction: choose the status that matches the actual intent instead of treating every redirect as interchangeable.

A fourth case is rollback testing. Suppose a release changes hundreds of redirects and the team has a one-hour rollback window. The prelaunch test should inspect Cache-Control on those redirect responses and include at least one client flow that bypasses or revalidates local cache state. Otherwise, the team may mistake a cached client result for evidence that the rollback failed at the origin.

04

Boundaries

Caching guidance does not mean that every 301 or 308 will be stored by every client, or that a cached redirect will remain in use for a fixed universal duration. HTTP defines permissions and constraints, while implementations still make decisions within those rules. This article therefore does not assign a single expiration time to permanent redirects and does not treat browser behavior as a proxy for search-crawler behavior.

It also does not claim that Cache-Control alone determines Google's indexing or canonicalization decisions. Google documents permanent and temporary redirects as search signals, but search systems combine multiple signals and operate on their own crawl schedules. [3] HTTP cache directives are still worth auditing because they affect how redirect responses can be reused by HTTP clients, regardless of how a search engine ultimately processes the move.

The practical migration rule is to align three things: the intended permanence of the URL move, the chosen redirect status, and the cache policy returned with that redirect. If the destination is genuinely permanent, permanent redirect semantics and deliberate caching can be coherent. If the destination is still provisional, the team should avoid accidentally making the routing behavior more persistent than the decision itself.

Finally, cache inspection should sit beside redirect-chain validation rather than replace it. A perfectly chosen Cache-Control header cannot rescue a redirect that points to the wrong URL, loops, or terminates at an error page. Likewise, a clean one-hop redirect can still be operationally awkward if its caching policy conflicts with a planned rollback. Recording both the route and the cache policy gives migration teams a more complete, testable description of what clients can observe.

References

Sources behind this record

  1. HTTP Semantics, RFC 9110RFC Editor (accessed August 18, 2026)
  2. HTTP Caching, RFC 9111RFC Editor (accessed August 18, 2026)
  3. Redirects and Google SearchGoogle Search Central (accessed August 18, 2026)

Corrections

Correction history

No corrections recorded.

To report an error, use the public corrections path.

Claim limit

This article does not assign one universal cache lifetime to redirects or treat browser caching as equivalent to search-engine crawl and indexing behavior.