我用ngnix提供我的静态内容.
location /static { alias /opt/static/blog/; access_log off; etags on; etag_hash on; etag_hash_method md5; expires 1d; add_header Pragma "public"; add_header Cache-Control "public,must-revalidate,proxy-revalidate"; }
结果标头如下所示:
Cache-Control:public,proxy-revalidate Cache-Control:max-age=86400 Connection:close Content-Encoding:gzip Content-Type:application/x-javascript; charset=utf-8 Date:Tue,11 Sep 2012 08:39:05 GMT Etag:e2266fb151337fc1996218fafcf3bcee Expires:Wed,12 Sep 2012 08:39:05 GMT Last-Modified:Tue,11 Sep 2012 06:22:41 GMT Pragma:public Server:Nginx/1.2.2 Transfer-Encoding:chunked Vary:Accept-Encoding
为什么Nginx发送2个Cache-Control条目,这可能是客户端的问题?
最佳答案
http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
当且仅当该头字段的整个字段值被定义为以逗号分隔的列表[即,#(值)]时,具有相同字段名的多个消息头字段可以存在于消息中.必须可以将多个头字段组合成一个“字段名:字段 – 值”对,而不改变消息的语义,方法是将每个后续字段值附加到第一个字段值,每个字段值用逗号分隔.因此,接收具有相同字段名称的头字段的顺序对于组合字段值的解释是重要的,因此代理不得在转发消息时改变这些字段值的顺序.