Nginx可以通过expires和cache-control指令为静态文件配置缓存。这些指令可以在服务器响应头部添加缓存相关信息,指示客户端缓存文件一定时间,在缓存期内的请求直接从缓存获取,无需重新请求服务器。
expires指令:
- 用于为响应内容设置过期时间,格式为expires [time|epoch|max|off];
- time:可以是具体的时间格式,如expires 1h (1小时)
- epoch:从Epoch时间开始的秒数,如expires 1000 (从1970.1.1 00:00:01开始1000秒)
- max:可以取值为“now”或具体日期,表示立即过期或指定日期过期
- off:表示立即过期,相当于max
cache-control指令:
- 用于控制HTTP响应的缓存机制,格式为cache-control [private|public|no-cache|no-store|max-age=time];
- private|public:指定响应是否可以被中间代理缓存
- no-cache:缓存内容需要先与服务器再验证之后使用
- no-store:完全不缓存内容
- max-age:缓存内容的最大时间
两者选一配置即可,cache-control优先级更高。
配置示例:
backendlocation ~ .(gif|jpg|png|js|css)$ {
expires 1h; # 1小时过期
cache-control public; # 公共缓存
}
location ~ .(html|htm)$ {
expires 2d; # 2天过期
cache-control max-age=864000; # 最大时间864000秒(10天)
}
backend上例为gif、jpg、png、js、css类型的响应设置1小时缓存;为html、htm类型的响应设置10天缓存,两种方式选一即可,cache-control的max-age优先级更高。