nginx 如何设置资源的过期时间(启用客户端缓存)

背景

Web 服务器合理设置资源的过期时间,可以充分利用客户端缓存,减少无效的重复请求。这样一来可以提升网页的加载性能,二来也可以减少服务器的性能压力。

代码片断

server {
	listen		80;
	server_name	yuanbiji.net;
	
	# disable etag
	etag		off;
	
	# expires config
	location ~  \/$ {
		expires		5m;
	}
	location ~* \.(html|htm|xml|json)$ {
		expires		5m;
	}
	location ~* \.(gif|jpg|jpeg|png|webp|svg|woff|woff2|ttf|otf)$ {
		expires		30d;
	}
	location ~* \.(css|js)$ {
		expires		1y;
	}
	location ~  /favicon.ico$ {
		expires		2d;
	}

	# 以下是网站的常规配置(略)
	# ...
}

locationexpires 指令用于指定各类资源和对应的过期时间,可根据业务的实际情况自行增减。

  • 如果在网站的开发工作流中,CSS/JS 等资源在内容变化后文件名不会变化,则不应为它们设置过长的过期时间,以免文件变更后客户端仍在使用缓存中的旧版。

  • 对于采用集群架构的网站来说,启用 ETag 可能会产生负面效果。由于绝大多数业务并没有高频更新内容的场景,也没有必要使用 ETag,使用 Last-Modified 响应头足矣。因此上面的代码片断关闭了 ETag 功能。

  • 可以看出,以上代码需要通过 location 指令来匹配资源。因此可能会与当前站点的其他 location 规则冲突。

标签: nginx
最后更新:2023-02-12 13:09:10

相关小抄