📜  nginx last-modified (1)

📅  最后修改于: 2023-12-03 15:33:06.939000             🧑  作者: Mango

概述

Nginx是一种高性能的Web服务器,同时也是一种反向代理服务器、电子邮件服务器和负载均衡器。在Nginx中,可以设置last-modified来提供静态资源的缓存支持,在一定程度上减少服务器的负载,提高网站的性能。

last-modified

last-modified是HTTP协议中的一个响应头字段,用于表示服务器端资源的最后修改时间。浏览器在请求资源时会携带If-Modified-Since请求头,如果该资源的最后修改时间早于该请求头中的时间,服务器会返回304 Not Modified状态码,告诉浏览器直接使用缓存资源,从而减少带宽和服务器的压力。

Nginx配置

在Nginx中开启last-modified的支持非常简单,只需要在server或location中添加如下代码即可:

location / {
    # 添加expires和last-modified
    expires 30d;
    last_modified on;
}

这里我们设置了expires为30天,表示客户端缓存该资源30天,减少服务器的流量。同时设置了last-modified为on,表示当客户端发送If-Modified-Since请求头时,Nginx会根据该资源的最后修改时间判断是否返回304状态码。

示例

假设我们有一个静态资源,其最后修改时间为2022年1月1日,那么在Nginx中的返回头如下:

HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Content-Type: text/html; charset=utf-8
Content-Length: 3568
Connection: keep-alive
X-Powered-By: PHP/7.2.19
Last-Modified: Sat, 01 Jan 2022 00:00:00 GMT
Expires: Wed, 30 Jan 2022 00:00:00 GMT
Cache-Control: max-age=2592000

在客户端发送If-Modified-Since头为2021年12月30日时,Nginx会返回304状态码,如下:

HTTP/1.1 304 Not Modified
Server: nginx/1.14.0 (Ubuntu)
Connection: keep-alive
X-Powered-By: PHP/7.2.19
Last-Modified: Sat, 01 Jan 2022 00:00:00 GMT
Expires: Wed, 30 Jan 2022 00:00:00 GMT
Cache-Control: max-age=2592000

总结

开启last-modified的支持可以大大减少服务器的压力和带宽消耗,同时也可以提升网站的性能。在Nginx中,只需要简单的配置即可实现该功能,推荐开启last-modified支持以提高网站的缓存效果和性能。