我正在使用 ngnix 提供静态内容。
位置/静态{ 别名 /opt/static/blog/; 访问登录关闭; etags 开启; etag_hash开启; etag_hash_方法md5; 1天后过期; add_header Pragma“公共”; add_header Cache-Control “公共,必须重新验证,代理重新验证”; }
生成的标题如下所示:
缓存控制:公共、必须重新验证、代理重新验证 缓存控制:最大年龄=86400 连接:关闭 内容编码:gzip 内容类型:application/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 条目,这对客户端来说会是个问题吗?
答案1
http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
当且仅当该标头字段的整个字段值定义为逗号分隔列表 [即 #(values)] 时,消息中才可以存在具有相同字段名称的多个消息标头字段。必须能够将多个标头字段组合成一个“字段名称:字段值”对,而无需更改消息的语义,方法是将每个后续字段值附加到第一个字段值,每个字段值都用逗号分隔。因此,接收具有相同字段名称的标头字段的顺序对于组合字段值的解释非常重要,因此代理在转发消息时不得更改这些字段值的顺序。