Pet*_*son 26 nginx cache-control
我在我的Nginx中有一个配置如下的资源:
location ~ foo\.js$ {
add_header Cache-Control public;
expires 1d;
}
Run Code Online (Sandbox Code Playgroud)
如果我用Firebug打开它并查看标题,它会显示:
Cache-Control max-age=86400, public
Run Code Online (Sandbox Code Playgroud)
该网站正在使用HTTPS,所以我想确保我做对了,因为显然浏览器不会缓存它,除非它的max-age> 0 AND public
.看到这个
但是当我使用Nginx时会发生什么curl -Ik https://...
,它说:
...
Expires: Sat, 22 Jan 2011 18:23:36 GMT
Cache-Control: max-age=86400
Cache-Control: public
...
Run Code Online (Sandbox Code Playgroud)
它重复Cache-Control
标题!萤火虫显然不介意.但这是对的吗?
是否有一种更好的方法来设置Expires
和Cache-Control
(public
仅)两行?
jar*_*obs 35
是的,它有效且等效于使用多个Cache-Control标头.
当且仅当该头字段的整个字段值被定义为以逗号分隔的列表[即,#(值)]时,具有相同字段名的多个消息头字段可以存在于消息中.必须可以将多个头字段组合成一个"字段名:字段 - 值"对,而不改变消息的语义,方法是将每个后续字段值附加到第一个字段值,每个字段值用逗号分隔.
由于其定义方式,很容易验证此规定是否适用于Cache-Control标头:
Cache-Control ="Cache-Control"":"1#cache-directive
要了解如何解释上面的行,请参阅规范的符号约定.的1#
装置"的逗号分隔的一个或多个列表".
我在不同的配置上遇到了同样的问题.对我有用的是在"服务器"打开括号之后更改设置标题和放置标题设置的两行的顺序.这会将标题设置为所有对象,但也许可以在你的"if"语句中使用:
server {
expires 31d;
add_header Cache-Control public;
server_name example.com
...
}
似乎add_header在expires指令之前发送头文件以便有时间更改它.
归档时间: |
|
查看次数: |
19625 次 |
最近记录: |