draft-ietf-httpbis-immutable-02.txt   draft-ietf-httpbis-immutable-03.txt 
HTTP P. McManus HTTP Working Group P. McManus
Internet-Draft Mozilla Internet-Draft Mozilla
Intended status: Standards Track April 30, 2017 Intended status: Standards Track July 3, 2017
Expires: November 1, 2017 Expires: January 4, 2018
HTTP Immutable Responses HTTP Immutable Responses
draft-ietf-httpbis-immutable-02 draft-ietf-httpbis-immutable-03
Abstract Abstract
The immutable HTTP response Cache-Control extension allows servers to The immutable HTTP response Cache-Control extension allows servers to
identify resources that will not be updated during their freshness identify resources that will not be updated during their freshness
lifetime. This assures that a client never needs to revalidate a lifetime. This assures that a client never needs to revalidate a
cached fresh resource to be certain it has not been modified. cached fresh resource to be certain it has not been modified.
Note to Readers Note to Readers
skipping to change at page 1, line 43 skipping to change at page 1, line 43
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on November 1, 2017. This Internet-Draft will expire on January 4, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 3, line 18 skipping to change at page 3, line 18
each will return 304 responses. each will return 304 responses.
The "immutable" HTTP response Cache-Control extension allows servers The "immutable" HTTP response Cache-Control extension allows servers
to identify responses that will not be updated during their freshness to identify responses that will not be updated during their freshness
lifetimes. lifetimes.
This effectively informs clients that any conditional request for This effectively informs clients that any conditional request for
that response can be safely skipped without worrying that it has been that response can be safely skipped without worrying that it has been
updated. updated.
1.1. Notational Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
2. The immutable Cache-Control extension 2. The immutable Cache-Control extension
When present in an HTTP response, the "immutable" Cache-Control When present in an HTTP response, the "immutable" Cache-Control
extension indicates that the origin server will not update the extension indicates that the origin server will not update the
representation of that resource during the freshness lifetime of the representation of that resource during the freshness lifetime of the
response. response.
Clients SHOULD NOT issue a conditional request during the response's Clients SHOULD NOT issue a conditional request during the response's
freshness lifetime (e.g. upon a reload) unless explicitly overridden freshness lifetime (e.g. upon a reload) unless explicitly overridden
by the user (e.g. a force reload). by the user (e.g. a force reload).
skipping to change at page 3, line 46 skipping to change at page 4, line 4
The presence of an immutable Cache-Control extension in a request has The presence of an immutable Cache-Control extension in a request has
no effect. no effect.
2.1. About Intermediaries 2.1. About Intermediaries
An immutable response has the same semantic meaning when received by An immutable response has the same semantic meaning when received by
proxy clients as it does when received by User-Agent based clients. proxy clients as it does when received by User-Agent based clients.
Therefore proxies SHOULD skip conditionally revalidating fresh Therefore proxies SHOULD skip conditionally revalidating fresh
responses containing the immutable extension unless there is a signal responses containing the immutable extension unless there is a signal
from the client that a validation is necessary (e.g. a no-cache from the client that a validation is necessary (e.g. a no-cache
Cache-Control request directive). Cache-Control request directive defined by Section 5.2.1.4 of
[RFC7234]).
A proxy that uses immutable to bypass a conditional revalidation may A proxy that uses immutable to bypass a conditional revalidation can
choose whether to reply with a 304 or 200 to its requesting client choose whether to reply with a 304 or 200 to its requesting client
based on the request headers the proxy received. based on the request headers the proxy received.
2.2. Example 2.2. Example
Cache-Control: max-age=31536000, immutable Cache-Control: max-age=31536000, immutable
3. Security Considerations 3. Security Considerations
The immutable mechanism acts as form of soft pinning and, as with all The immutable mechanism acts as form of soft pinning and, as with all
skipping to change at page 4, line 32 skipping to change at page 4, line 38
interrupted loads and other corruption. These reloads, typically interrupted loads and other corruption. These reloads, typically
indicated through no-cache request attributes, SHOULD ignore indicated through no-cache request attributes, SHOULD ignore
immutable as well. immutable as well.
o Clients SHOULD ignore immutable for resources that do not provide o Clients SHOULD ignore immutable for resources that do not provide
a strong indication that the stored response size is the correct a strong indication that the stored response size is the correct
response size such as responses delimited by connection close. response size such as responses delimited by connection close.
4. IANA Considerations 4. IANA Considerations
[RFC7234] sections 7.1 and 7.1.2 require registration of the Section 7.1 of [RFC7234] requires registration of the immutable
immutable extension in the "Hypertext Transfer Protocol (HTTP) Cache extension in the "Hypertext Transfer Protocol (HTTP) Cache Directive
Directive Registry" with IETF Review. Registry" with IETF Review.
o Cache-Directive: immutable o Cache-Directive: immutable
o Pointer to specification text: [this document] o Pointer to specification text: [this document]
5. Acknowledgments 5. Acknowledgments
Thank you to Ben Maurer for partnership in developing and testing Thank you to Ben Maurer for partnership in developing and testing
this idea. Thank you to Amos Jeffries for help with proxy this idea. Thank you to Amos Jeffries for help with proxy
interactions and to Mark Nottingham for help with the documentation. interactions and to Mark Nottingham for help with the documentation.
6. References 6. References
6.1. Normative References 6.1. Normative References
[RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Protocol (HTTP/1.1): Semantics and Content", RFC 7231, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC7231, June 2014, DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc7231>. <http://www.rfc-editor.org/info/rfc2119>.
[RFC7232] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer [RFC7232] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer
Protocol (HTTP/1.1): Conditional Requests", RFC 7232, Protocol (HTTP/1.1): Conditional Requests", RFC 7232,
DOI 10.17487/RFC7232, June 2014, DOI 10.17487/RFC7232, June 2014,
<http://www.rfc-editor.org/info/rfc7232>. <http://www.rfc-editor.org/info/rfc7232>.
[RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, [RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching", Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching",
RFC 7234, DOI 10.17487/RFC7234, June 2014, RFC 7234, DOI 10.17487/RFC7234, June 2014,
<http://www.rfc-editor.org/info/rfc7234>. <http://www.rfc-editor.org/info/rfc7234>.
 End of changes. 9 change blocks. 
14 lines changed or deleted 21 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/