Nginx expires:页面缓存时间配置

Nginx 缓存的设置可以提高网站性能,对于网站的图片,尤其是新闻网站,图片一旦发布,改动的可能是非常小的,为了减小对服务器请求的压力,提高用户浏览速度,我们可以通过设置 Nginx 中的 expires 指令,让用户访问一次后,将图片缓存在用户的浏览器中。

需要注意的是,这种缓存方式只能在用户不对浏览器强制刷新的情况下生效,如果用户通过 url 来进行访问,是可以访问到缓存的。

Nginx 中的 expires 指令的介绍如下表所示:

名称 缓存时间指令
指令 expires
作用域 http、server、location、if in location
默认值 off
指令值可选项 时间或 epoch 或 max 或 off
指令说明 当响应状态码为 200、201、204、206、301、302、303、304、307 或 308 时,对响应头中的属性字段“Expires”和“Cache-Control”进行添加或编辑操作

当指令值为时间时,既可以是正值也可以是负值。Expires 的值为当前时间与指令值的时间之和。当指令值的时间为正或 0 时,Cache-Control 的值为指令值的时间。当指令值的时间为负时,Cache-Control 的值为 no-cache。

当指令值为时间时,可用前缀 @ 指定一个绝对时间,表示在当天的指定时间失效。

当指令值为 epoch 时,Expires 的值为 Thu,01 Jan 1970 00:00:01 GMT,Cache-Control 的值为 no-cache。

当指令值为 max 时,Expires 的值为 Thu,31 Dec 2037 23:55:55 GMT,Cache-Control 的值为 10 年。

当指令值为 off 时,不对响应头中的属性字段 Expires 和 Cache-Control 进行任何操作。

配置样例如下:

map $content_type $expires {          # 根据$content_type的值,对变量$expires进行赋值
    default         off;                            # 默认不修改Expires和Cache-Control的值
    application/pdf 42d;                     # application/pdf类型为42天
    ~image/         max;                       # 图片类型为max
}

server {
    expires    24h;                             # 设置Expires的值为当前时间之后的24小时,
                                                   # Cache-Control的值为24小时
    expires    modified +24h;           # 编辑Expires的值增加24小时,Cache-Control的值增
                                                       # 加24小时
    expires    @15h;                         # 设置Expires的值为当前日的15点,Cache-Control的值
                                                       # 为当前时间到当前日15点的时间差
    expires    $expires;                     # 根据变量$expires的内容设置缓存时间
    add_header Cache-Control no-cache; 
    add_trailer  X-Always $host always;
}