Nginx 中的 expires 起到控制页面缓存的作用,合理的配置 expires 可以减少很多服务器的请求。要配置 expires,可以在 http 段中或者 server 段中或者 location 段中加入。
expires [time|epoch|max|pff]
默认值
expires off;
使用环境
http,server,location
说明
expires 指令控制 HTTP 应答中的 “Expires” 和 “Cache-Control” Header 头部信息,启动控制页面缓存的作用。time 可以使用正数或负数。“Expires” 头标的值将通过当前系统时间加上设定 time 值来设定。
time 值还控制 “Cache-Control” 的值,负数表示 no-cache,正数或零表示 max-age=time。
expires 使用了特定的时间,并且要求服务器和客户端的是中严格同步。而 Cache-Control 是用 max-age 指令指定组件被缓存多久。
对于不支持 http1.1 的浏览器,还是需要 expires 来控制。所以最好能指定两个响应头。但 HTTP 规范规定 max-age 指令将重写 expires 头。
expire设置格式
格式
expires 30s;#30秒 expires 30m;#30分钟 expires 2h;#2个小时 expires 30d;#30天
注意点
服务器的日期要准确,如果服务器的日期落后于实际日期,可能导致缓存失效。
备注
304 也是一种很好的缓存手段。原理是: 服务器响应文件内容时,同时响应 etag 标签(内容的签名,内容一变,他也变), 和 last_modified_since 2 个标签值。
浏览器下次去请求时,头信息发送这两个标签,服务器检测文件有没有发生变化,如无,直接头信息返回 etag,last_modified_since 浏览器知道内容无改变,于是直接调用本地缓存。
这个过程,也请求了服务器,但是传着的内容极少,对于变化周期较短的,如静态 html, js, css 比较适于用这个方式。
案例
我们首先,使用 vim 打开 nginx 的默认配置路径,具体命令如下: