Nginx 发送 2 个缓存控制标头

opt*_*ixx 6 nginx cache static-content etags

我正在使用 ngnix 提供我的静态内容。

位置/静态{
      别名 /opt/static/blog/;
      access_log off;
      etags 上;
      etag_hash on;
      etag_hash_method md5;
      过期 1 天;
      add_header Pragma "public";
      add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}

生成的标题如下所示:

缓存控制:公共,必须重新验证,代理重新验证
缓存控制:最大年龄=86400
连接:关闭
内容编码:gzip
内容类型:应用程序/x-javascript;字符集=utf-8
日期:2012 年 9 月 11 日,星期二 08:39:05 GMT
标签:e2266fb151337fc1996218fafcf3bcee
到期:2012 年 9 月 12 日星期三 08:39:05 GMT
上次修改时间:2012 年 9 月 11 日,星期二 06:22:41 GMT
语用:公开
服务器:nginx/1.2.2
传输编码:分块
变化:接受编码

为什么 nginx 发送 2 个 Cache-Control 条目,这对客户端来说是一个问题吗?

opt*_*ixx 5

http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2

当且仅当该头字段的整个字段值定义为逗号分隔列表[即,#(values)] 时,消息中可以存在多个具有相同字段名称的消息头字段。通过将每个后续字段值附加到第一个字段值,每个字段值用逗号分隔,必须可以将多个标题字段组合成一个“字段名称:字段值”对,而不改变消息的语义。因此,接收具有相同字段名的头字段的顺序对组合字段值的解释很重要,因此当转发消息时,代理不得更改这些字段值的顺序。