HTTP Immutable Responses
draft-ietf-httpbis-immutable-02

Document Type Active Internet-Draft (httpbis WG)
Last updated 2017-05-22 (latest revision 2017-05-01)
Replaces draft-mcmanus-immutable
Stream IETF
Intended RFC status Proposed Standard
Formats plain text xml pdf html bibtex
Stream WG state In WG Last Call
Document shepherd Mark Nottingham
Shepherd write-up Show (last changed 2017-05-25)
IESG IESG state I-D Exists
Consensus Boilerplate Yes
Telechat date
Responsible AD (None)
Send notices to Mark Nottingham <mnot@mnot.net>
HTTP                                                          P. McManus
Internet-Draft                                                   Mozilla
Intended status: Standards Track                          April 30, 2017
Expires: November 1, 2017

                        HTTP Immutable Responses
                    draft-ietf-httpbis-immutable-02

Abstract

   The immutable HTTP response Cache-Control extension allows servers to
   identify resources that will not be updated during their freshness
   lifetime.  This assures that a client never needs to revalidate a
   cached fresh resource to be certain it has not been modified.

Note to Readers

   Discussion of this draft takes place on the HTTP working group
   mailing list (ietf-http-wg@w3.org), which is archived at
   https://lists.w3.org/Archives/Public/ietf-http-wg/ .

   Working Group information can be found at http://httpwg.github.io/ ;
   source code and issues list for this draft can be found at
   https://github.com/httpwg/http-extensions/labels/immutable .

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on November 1, 2017.

Copyright Notice

   Copyright (c) 2017 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

McManus                 Expires November 1, 2017                [Page 1]
Internet-Draft          HTTP Immutable Responses              April 2017

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

1.  Introduction

   HTTP's freshness lifetime mechanism [RFC7234] allows a client to
   safely reuse a stored response to satisfy future requests for a
   specified period of time.  However, it is still possible that the
   resource will be modified during that period.

   For instance, a front page newspaper photo with a freshness lifetime
   of one hour would mean that no user would see a cached photo more
   than one hour old.  However, the photo could be updated at any time
   resulting in different users seeing different photos depending on the
   contents of their caches for up to one hour.  This is compliant with
   the caching mechanism defined in [RFC7234].

   Users that need to confirm there have been no updates to their cached
   responses typically use the reload (or refresh) mechanism in their
   user agents.  This in turn generates a conditional request [RFC7232]
   and either a new representation or, if unmodified, a 304 (Not
   Modified) response [RFC7232] is returned.  A user agent that
   understands HTML and fetches its dependent sub-resources might issue
   hundreds of conditional requests to refresh all portions of a common
   page [REQPERPAGE].

   However some content providers never create more than one variant of
   a sub-resource, because they use "versioned" URLs.  When these
   resources need an update they are simply published under a new URL,
   typically embedding an identifier unique to that version of the
   resource in the path, and references to the sub-resource are updated
   with the new path information.

   For example, "https://www.example.com/101016/main.css" might be
   updated and republished as "https://www.example.com/102026/main.css",
   with any links that reference it being changed at the same time.
   This design pattern allows a very large freshness lifetime to be used
   for the sub-resource without guessing when it will be updated in the
   future.

McManus                 Expires November 1, 2017                [Page 2]
Internet-Draft          HTTP Immutable Responses              April 2017

   Unfortunately, the user agent does not know when this versioned URL
Show full document text