Appendix A. Changes from RFC 2616
The original definition of the status code 304 (Not Modified) was partially defined in terms of response headers. This specification has clarified that it is defined in terms of header fields.
Weak entity-tag matching has been clarified by consolidating the algorithm definition to Section 2.3.2.
The If-Match and If-Unmodified-Since preconditions have been clarified that they are allowed to fail when the final state is already what was requested, in which case a 2xx status code is more appropriate than 412 (Precondition Failed).
The required behavior for caches and conditional requests has been clarified. For instance, it is now more explicit that a cache must forward conditional headers that it does not understand or cannot evaluate.
All of the conditional request header field definitions have been clarified to make explicit the order of evaluation and handling of various combinations of conditional header fields.