RFC2616-HTTP1.1-Header Field Definitions(头字段规定部分—译文) (4)

  2.如果响应中包含“must-revalidate”缓存控制指令( cache-control directive),缓存可以在答复后续请求时使用该响应。但是,如果响应已经过期,所有缓存必须首先用源服务器重新验证它,使用来自新请求的请求头来允许源服务器验证新请求。

  3.如果响应包含“public”缓存控制指令,则可以回复任何后续请求。

14.9 Cache-Control

  Cache-Control通用头字段用于指定在请求/响应链上所有的缓存都必须遵守的规则。指令的指定旨在防止缓存对请求或响应产生不利干扰的一些行为。这些指令通常会重写默认缓存算法。缓存指令是单项的,请求中存在指令并不意味着响应中也将会给出相同的指令。

  注意:HTTP/1.0协议版本下的缓存可能无法实现缓存控制,只能实现Pragma(编译指示): no-cache (详情请见 小节).

  缓存指令必须由代理或网关应用程序传递,无论这些指令对该程序是否有用,因为这些指令可能适用于请求/响应链上的所有接收者。我们不可能为特定的缓存指定缓存指令。

      Cache-Control   = "Cache-Control" ":" 1#cache-directive

      cache-directive = cache-request-directive | cache-response-directive

      cache-request-directive =

             "no-cache"                          ; Section 

           | "no-store"                          ; Section 

           | "max-age" "=" delta-seconds         ; Section , 

           | "max-stale" [ "=" delta-seconds ]   ; Section 

           | "min-fresh" "=" delta-seconds       ; Section 

           | "no-transform"                      ; Section 

           | "only-if-cached"                    ; Section 

           | cache-extension                     ; Section 

       cache-response-directive =

           "public"                               ; Section 

                | "private" [ "=" <"> 1#field-name <"> ] ; Section 

           | "no-cache" [ "=" <"> 1#field-name <"> ]; Section 

           | "no-store"                             ; Section 

           | "no-transform"                         ; Section 

           | "must-revalidate"                      ; Section 

           | "proxy-revalidate"                     ; Section 

           | "max-age" "=" delta-seconds            ; Section 

           | "s-maxage" "=" delta-seconds           ; Section 

          | cache-extension                        ; Section 

    cache-extension = token [ "=" ( token | quoted-string ) ]

  当指令没有任何一个字段名参数出现时,该指令适用于整个请求或响应。当这样的指令以符合要求的字段名参数出现时,它只适用于命名字段,而不适用于请求或响应的其余部分。该机制支持可扩展性;HTTP协议的未来版本的实现可能将这些指令应用于HTTP/1.1中未定义的头字段。

  缓存控制指令可以分解为以下这些一般类别。

    -限制什么是可缓存的;这些只能由源服务器强加。

    -对缓存可以存储的内容的限制;这些可以由源服务器或用户代理强制执行。

    -基本过期机制的修改;这些可以由源服务器或用户代理强制执行。

    -对缓存重新验证和重新加载进行控制;这些可能仅由用户代理强制执行。

    -控制实体的转换。

    -缓存系统的扩展。

14.9.1 What is Cacheable

  默认情况下,如果请求方法、请求头字段和响应状态的指示该响应是可缓存的,则响应是可缓存的。第小节总结了这些可缓存性的默认值。下面的Cache-Control响应指令允许源服务器重写响应的默认缓存性:

public

  指示响应可能由任何缓存来缓存资源,即使它通常不可缓存或仅在非共享缓存中缓存。(请参阅授权,第小节,以了解更多细节。)

private

  指示响应消息的全部或部分用于单个用户,而不能由共享缓存缓存。这允许源服务器声明响应的指定部分仅针对一个用户,而不能对其他用户的请求进行有效响应。私有(非共享)缓存可以缓存响应。

  注意: private一词的在这里的语义只是控制响应可以缓存在哪里,并不能确保消息内容的隐私性。

no-cache

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxpxz.html